kostenloser Webspace werbefrei: lima-city


PHP or die variabel festlegen

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. hackyourlife schrieb:
    philippkern schrieb:
    Und nicht vergessen etwas gegen SQL-Injections einzubauen!
    Das wurde schon mal erwähnt.

    Ja ich dachte auch ich hätte das hier schon gelesen gehabt, aber der Beitrag scheint weg zu sein.
    Oder ich bin blind ... :nosmile:
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Autor dieses Themas

    thwbm

    thwbm hat kostenlosen Webspace.

    Erstmal an philippkern:
    philippkern schrieb:
    hackyourlife schrieb:
    philippkern schrieb:
    Und nicht vergessen etwas gegen SQL-Injections einzubauen!
    Das wurde schon mal erwähnt.

    Ja ich dachte auch ich hätte das hier schon gelesen gehabt, aber der Beitrag scheint weg zu sein.
    Oder ich bin blind ... :nosmile:

    Wenn du blind bist, sind wir gemeinsam blind, denn ich find es grad auch nicht mehr, aber egal, denn ich werde daran denken.
    Jetzt an hackyourlife:
    hackyourlife schrieb:
    Die Lösung würde sicher einige hier interessieren... ;-)

    Gut, ok. Ich habe es jetzt folgendermaßen gelößt:
    Zuerst wird der erste Datensatz an die erste Tabelle übermittelt. Erst auf einer späterern Seite wird dann der Eintrag in die zweite Tabelle gemacht, wenn sie noch nicht vorhanden ist, falls sie schon vorhanden ist, wird nichts gemacht, hier mal der Code:
    $Verbindung = mysql_connect("server", "benutzer", "passwort"); //Die verbindung zur Datenbank
    mysql_select_db("name"); //Die auswahl der Tabelle
    $vorhanden = 0; //wird spaeter interessant
    $eMail = mysql_real_escape_string($eMail); //Gegen MySQL Injections
    $Abfrage = "SELECT eMailAdresse FROM tabelle1 WHERE eMailAdresse = '$eMail'"; //Auswahl der eMail Adresse
    $ErgebnisseMail = mysql_query($AbfrageeMail);
    while($RoweMail = mysql_fetch_object($ErgebnisseMail))
      {
        $vorhanden = 1; //wird ausgeführt, wenn die eingegebene eMail Adresse schon vorhanden sein sollte
      }
    if($vorhanden == 1) { //wenn die eMail Adresse bereits vorhanden ist, dann...
      echo "Die gewählte eMail Adresse ist bereits registriert":
    } else { //...sonst...
      $eMail = mysql_real_escape_string($eMail); //gegen die SQL Injection
      $Eintrag = INSERT INTO tabelle1 //eintrag in die MySQL Datenbank wird vorbereitet, die ID wird ueber AUTO_INCREMENT festgelegt.
      (eMail)
      VALUES
      ('$eMail')";
      $Eintragen = mysql_query($Eintrag); //Eintrag in die Tabelle
      if($Eintragen == true) { //Abfrage, ob etwas schiefgelaufen ist
        echo "Vielen Dank für die Registrierung";
      } else {
        echo "Uups, da ist was schiefgelaufen.... Bitte versuche es in ein paar Minuten erneut!";
      }
    }

    Und jetzt die zweite Tabelle
    $Verbindung  mysql_connect("server", "benutzer", "passwort");//Wieder die Verbindung zur Datenbank
    mysql_select_db("datenbank");
    $Abfrage = "SELECT BenutzerID FROM Tabelle2 WHERE BenutzerID = '$BenutzerID'";
    $Ergebnis = mysql_query($Abfrage);
    if(mysql_num_rows($Ergebnis) == 0) { //Abfrage, ob der Datensatz schon vorhanden ist
      $Eintrag = 
      "INSERT INTO tabelle2
      (BenutzerID)
      VALUES
      ('$BenutzerID')"; //Die Benutzer ID habe ich zuvor schon in die SESSION geschrieben, und von da aus wieder ausgelesen
      $Eintragen = mysql_query($Eintrag);
    }


    Beitrag zuletzt geändert: 15.9.2012 20:15:17 von thwbm
  4. Bei deinem Code kommt mir das Grauen ... :S

    Zum 1. Teil:
    Genau für sowas gibt es das UNIQUE-Constraint.
    Damit würdest du dir das 1. SELECT sparen.

    Weiters:
    Unten verwendest du mysql_num_rows zum Überprüfen, warum machst du das dann nicht auch oben?

    Es bringt nicht viel wenn du unten ein
    mysql_real_escape_string($eMail);
    machst, aber oben bereits $eMail ungefiltert an die Datenbank sendest ...

    Außerdem solltest du nicht mehr mysql sondern mysqli oder PDO_MySQL verwenden.

    Edit:
    thwbm schrieb:
    //Der rest kommt spaeter, ich gehe jetzt erstmal ins Bett

    Und den Rest konntest du nicht gleich reinkopieren?
    Hätte das so lange gedauert? :slant:

    Edit2:
    Natürlich bringt dein
    mysql_real_escape_string($eMail);
    auch nichts hätte es oben gestanden...
    Richtig wäre
    $eMail = mysql_real_escape_string($eMail);



    Beitrag zuletzt geändert: 15.9.2012 10:08:15 von philippkern
  5. Autor dieses Themas

    thwbm

    thwbm hat kostenlosen Webspace.

    philippkern schrieb:
    Unten verwendest du mysql_num_rows zum Überprüfen, warum machst du das dann nicht auch oben?

    Weil ich mysql_num_rows am Anfang noch nicht kannte, es aber jetzt verwende.
    philippkern schrieb:
    Es bringt nicht viel wenn du unten ein
    mysql_real_escape_string($eMail);
    machst, aber oben bereits $eMail ungefiltert an die Datenbank sendest ...

    Danke, ist jetzt gefixst
    philippkern schrieb:
    thwbm schrieb:
    //Der rest kommt spaeter, ich gehe jetzt erstmal ins Bett


    Und den Rest konntest du nicht gleich reinkopieren?
    Hätte das so lange gedauert? :slant:

    Nein, aber da ich den Quellcode nocheinmal etwas ausführlicher kommentiert habe, brauchte ich etwas länger. Auserdem wollte ich sichergehen, dass ich kein Datenbankpasswort mehr drin habe.
    philippkern schrieb:
    Natürlich bringt dein
    mysql_real_escape_string($eMail);
    auch nichts hätte es oben gestanden...
    Richtig wäre
    $eMail = mysql_real_escape_string($eMail);


    Erneut ein Danke an dich, ist gefixt

    Beitrag zuletzt geändert: 16.9.2012 17:13:40 von thwbm
  6. Kein Problem.

    thwbm schrieb:
    Nein, aber da ich den Quellcode nocheinmal etwas ausführlicher kommentiert habe, brauchte ich etwas länger.

    Also für uns brauchst du nichts extra Kommentieren. :)
    Wobei es in der Softwareentwicklung eigentlich sowieso immer empfehlenswert ist seinen Code zu Kommentieren.
    Jedoch sinnvoll und nicht jede Zeile extra. ;)

    Wenn du fertig bist, dann kannst du ja deinen Code wieder hier veröffentlichen. Ich werd ihn dann nochmal durchschaun.
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!