Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding > Coding Tutorials
You last visited: Today at 04:14

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[PHP + VB.NET] Simple Updater / Version check

Discussion on [PHP + VB.NET] Simple Updater / Version check within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: May 2011
Posts: 145
Received Thanks: 30
[PHP + VB.NET] Simple Updater / Version check



Guten Mittag epvp,
Ich habe mal ein kleines Codingprojekt angefangen und dieses auch in so gut keiner Zeit fertiggestellt, ist sehr simpel, aber es sollte reichen damit ihr den Trick daran rausbekommt.

Also es gibt 2 Dateien, zum einen die Version, welche auf dem Server liegt und dann ist da noch die, die Clientseitig vorhanden ist. Bei vielen Gamehacks o.ä. ist es wichtig, Dateien aktuell zu halten, da sonst Banngefahr besteht oder das Programm schlicht und einfach nicht funktioniert. Oder jemand hier möchte das Programm für legale Zwecke benutzen, hoffe ich zumindest.
Im Praxisteil werde ich mich größtenteils mit der Serverseite beschäftigen, da die Clientseite wirklich sehr sehr einfach zu erledigen ist. Es kann sein das das Skript unsicher ist, ihr solltet bevor ihr den Kram hier verwendet zumindest die Input-Variablen von den Usern filtern / escapen. Einfach um auf Nummer sicher zu gehen. Aber jetz mal los hier!

Die folgenden Dateien werden benötigt:
functions.php
config.php
index.php
test.file
Fangen wir mal bei der functions.php an, hier habe ich eine einfache Funktion geschrieben, die 2 Variablen annimmt, einmal den Dateinamen, der in der config.php eingetragen wird (dazu kommen wir gleich nochmal) und den MD5 Hash, welcher vom Client kommt.
Jenachdem gibt die Funktion upd (für Update), noupd (für noUpdate) und unk (für irgendwelche anderen Fehler z.B. in der md5_file Funktion von PHP oder was weiss ich).
Also erstmal erstellen wir die Funktion
PHP Code:
Function compareInputWithStored($hash$stored_filename){ 
Danach Hashen wir die Datei welche beim Funktionsaufruf in $stored_filename angegeben wird:
PHP Code:
 $stored_filename_hash md5_file($stored_filename); 
Jetzt kommt ein relativ langer If-Block auf den ich jetzt nicht 100%ig eingehen werde, ich werde einfach mal ein wenig kommentieren im Code.
PHP Code:
 If ($stored_filename_hash == $hash){
  return 
"noupd"// ^ Wenn der Hash von der Datei auf dem Server = dem vom User angegeben Hash ist
 
}elseif($stored_filename_hash != $hash){
  return 
"upd"// ^ Wenn die Hashs sich unterscheiden
 
}else{
  return 
"unk"//^ Wenn irgendetwas anderes passiert ist.
 

Das sollte soweit verständlich sein, nurnoch die Funktion schliessen - fertig.
Die komplette Funktion compareInputWithStored:
So nun mal was ganz einfaches, die config.php.
PHP Code:
$stored_filename "test.file";
$shared_secret "Dr6TpBiyXn"
Das Shared Secret verwende ich, um zu verhindern das der Status nur vom wirklichen Programm ausgelesen kann und nicht von irgendwelchen Leuten die die Seite im Browser aufrufen. Der stored_filename ist der Name der abgelegten Datei, mit der vergleichen wird.
Nun kommt der eigentlich "schwerste" Teil von diesem Miniskript - die index.php.
Zunächst binden wir Config und Funktionsdatei ein:
PHP Code:
require_once('config.php');
require_once(
'functions.php'); 
Nun überprüfen wir das Shared Secret
PHP Code:
If (@$_GET["ss"] == "Dr6TpBiyXn"){ 
Anschliessend wird überprüft, ob der Eintrag hash im Superglobalen GET Array vorhanden ist.
PHP Code:
If(@isset($_GET["hash"])){ 
Für den Schreibkomfort legen wir uns den GET-Eintrag in einer gesonderten Variable $hash ab.
PHP Code:
$hash $_GET["hash"]; 
Jetzt werden nach und nach alle möglichen Rückgabewerte von unserer zuvor geschriebenen Funktion durchgegangen:
PHP Code:
If (compareInputWithStored($hash$stored_filename)  == "noupd"){
   echo 
"No Update needed"
Nächste Möglichkeit:
PHP Code:
}elseif(compareInputWithStored($hash$stored_filename) == "upd"){
   echo 
"Get the update at m1nt.info"
Letzte Möglichkeit
PHP Code:
}elseif(compareInputWithStored($hash$stored_filename) == "unk"){
   echo 
"A unknown error occured."
Dann sollten wir noch eine Errormessage hinterlegen, für den Fall das unser Shared Secret falsch ist
PHP Code:
   }
  } 
}else{
 echo 
"Shared Secret failed"
Index.php komplett:
Soviel zum Serverteil.
Für den Client schreibe ich nurmal ein wenig VB.NET ausm Kopfe heraus, aber nicht debugged also auf eigene Gefahr benutzen (wie das gesamte Skript!):
Code:
        Dim SharedSecret As String = "Dr6TpBiyXn"
        Dim MD5 As String = "98a4ds98a4ds98as4d"
        Dim StringComplete As String = "http://localhost/updater/?ss=" & SharedSecret & "&hash=" & MD5
        Dim web As New WebClient
        Dim ret As String = web.DownloadString(StringComplete)
        If ret.Contains("Grab") Then MsgBox("Update Available") Else 
        If ret.Contains("needed") Then
            MsgBox("No Updates are available")

        End If
Warscheinlich ist der Code falsch, nicht debuggt und ewig nicht mit VB gearbeitet, kann auch sein der funktioniert garnicht. Kann ja vllt. jemand verbessern, die Serverseite funktioniert jedoch garantiert.

Ich hoffe mein Tutorial hat euch geholfen / zugesagt. Es ist das erste Codingtutorial was ich je geschrieben habe, Arbeitszeit von Anfang Skriptcoding bis Tutorial fertig ca 90 Minuten. Ich bitte um ernsthaftes Feedback und keine "Du bist Scheisse" oder "Dein Tutorial ist derbe scheisse lan!" Kommentare. Danke im Voraus.

Reserviert für Nachtrag o.ä.
botterwirdbotten is offline  
Thanks
2 Users
Old 02/04/2012, 05:24   #2
 
elite*gold: 0
Join Date: Feb 2012
Posts: 28
Received Thanks: 17
Codest du zufällig auch in C++ und kannst sowas machen?
Bin recht neu in C++ daher^^
Kat4na is offline  
Old 02/04/2012, 20:49   #3
 
elite*gold: 0
Join Date: Nov 2011
Posts: 412
Received Thanks: 106
Gutes Tutorial, danke
iCharty is offline  
Reply

Tags
php, php updater, updater, vb.net


Similar Threads Similar Threads
Simple Version Checker
12/30/2011 - S4 League - 19 Replies
If you think its useless, just dont use it, and the world is shiny I want to release a simple Version checker i made just4fun. Why you would need it? Well maybe u dont want to update s4, because you didnt made pattern, or something, and want know if there IS an update. Just put this tool in your S4 folder, Hit Check, and it will Check, if there is an Update.
Minecraft Updater + (gecrackte Version)
02/27/2011 - Minecraft - 4 Replies
Hier stand nichts
[Mini-Release]DE Version of Simply Updater
02/01/2011 - Metin2 PServer Guides & Strategies - 11 Replies
Hey, ich will euch hier die deutsche Version dieses Updater geben! Download im Anhang! Ich will keine THX oder so dafür die gehen alle an den Macher ich habs lediglich überstetzt :) MfG bestshocker2



All times are GMT +2. The time now is 04:14.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.