Wie findet ihr diesen Code?



  • Hallo,

    ich würde gerne eine Codebewertung haben, ob frickelig/elegant/prostyle. 😉

    Es geht um folgendes:

    <?php
    
    // Aufruf: update.php?usr=Benutzername&pw=passwort
    
    $config = file("conf.txt");
    
    foreach($config as $key => $entry)
    {
    	if(trim($config[$key]) == "")
    	{
    		unset($config[$key]);
    		continue;
    	}
    	$config[$key] = explode("|", $config[$key]);
    	if($config[$key][0] == $_GET["usr"] && $config[$key][1] == md5($_GET["pw"]))
    	{
    		$config[$key][2] = $_SERVER["REMOTE_ADDR"];
    		echo "Thx ".$config[$key][0].", deine IP wurde aktualisiert!";
    	}
    	$config[$key] = implode("|", $config[$key]);
    }
    
    $handle = fopen("conf.txt", "w+");
    fwrite($handle, implode("", $config));
    fclose($handle);
    
    ?>
    
    <?php
    
    // Aufruf: forward.php?to=Benutzername
    
    $config = file("conf.txt");
    
    foreach($config as $entry)
    {
    	$entry = explode("|", $entry);
    	if($entry[0] == $_GET["to"])
    		 header("Location: ".$entry[4]."://".$entry[2].":".$entry[3]);
    }
    
    ?>
    

    Das ist also ein auf einer einzigen Textdatei basierendes "Micro DynDNS System" ;D.

    Jeder Benutzer kann über den ersten Quellcode seine IP aktualisieren lassen und über über den zweiten sich zu dem Rechner eines anderen Nutzers weiterleiten lassen.

    Das ganze wurde in wenigen Minuten geproggt, die Hauptanforderungen waren eben diese und die werden auch bestens erfüllt. Erweiterbarkeit usw. ist alles egal.

    Wie stuft ihr den Code ein? alex 89 ru meint nämlich, der wäre extrem verfrickelt.

    freue mich auf eure Kommentare,
    PHP-Gott 👍



  • sieht sehr verfrickelt aus. benutz mindestens ein paar funktionen

    dann wuerd ich mich bemuehen, ne datenbank fuer sowas zu benutzen, oder wenigstens die datei zu locken.

    es gibt serialize und unserialize.

    ueber alle daten zu loopen ist auch recht frickelig. nimm (un)serialize.



  • Hi,

    warum verwendest du

    $config[$key]
    

    wenn du in der foreach-Schleife

    $key=>$entry
    

    hast. Dann kannst du gleich

    $entry
    

    anstatt

    $config[$key]
    

    schreiben.



  • Nö.

    PHP arbeitet normalerweise mit Kopien und nicht mit Referenzen



    1. verfrickelt ist kein Wort
    2. der Code ist zum Kotzen
    3. der Code ist fehlerhaft (nicht "threadsafe")
      ...


  • Hallo,

    den Code wuerde ich auch als frickelig bezeichnen. Trifft zwar auf 99% aller PHP Codes zu, auf den geposteten aber besonders 🙂

    Das Speichern von Daten ohne Datenbank ist nicht sauber realisiert worden. Wie gesagt - nicht threadsave. Da muessen nur mal zwei User in kurzen zeitlichen Abstaenden darauf zugreifen und die Datei wird irgendwie ueberschrieben.
    Zusatzlich ist deine Schleife irgendwie falsch .. ich denke damit kann man u.U. Daten falsch beschreiben. Habe mir das aber nicht im Detail angeschaut.

    Auch das Benutzen von "|" als Delimiter ist boeeeehse... da muss nur mal einer ne Pipe reinschummeln und dein ganzer Datensatz ist schrott.



  • Kann man in PHP überhaupt nicht-frickeligen Code schreiben? Bei diesen ganzen $ allein wird mir schon übel 😡



  • @Threadersteller: net böse sein, aber der code ist kacke 🙂



  • Es würde doch reichen die Datei zu locken, damit kein anderer Benutzer auf die Datei zugreifen kann, wenn ein anderer die Datei geöffnet hat.



  • ghgh schrieb:

    Nö.

    PHP arbeitet normalerweise mit Kopien und nicht mit Referenzen

    Das ist klar, aber für z.B.

    explode("|", $config[$key]);
    

    kann man gleich

    $entry
    

    schreiben.



  • Mach dir mal über das evtl. unset zuvor Gedanken!

    Außerdem würde ich das schon alleine wegen der Einheitlichkeit nicht schreiben!

    Und der Code ist nicht frickelig, ihr seid nur nicht genial genug um ihn zu verstehen. Danke.



  • Hat dir das PHP zu Kopf geschlagen oder was?


Anmelden zum Antworten