Frage zu POST und INSERT INTO

  • Frage zu POST und INSERT INTO

    Hallo,

    ich habe das hier:

    Quellcode

    1. $datum = date('d.m.Y');
    2. $datepart = explode(".", $datum);
    3. $mysql_datum = "$datepart[2]-$datepart[1]-$datepart[0]";
    4. $connection = mysql_connect($server,$user,$pass) or die (mysql_error());
    5. mysql_select_db("nedias",$connection) or die (mysql_error());
    6. $sql = "INSERT INTO user (id,nick,register_date,level,points,posts,nachname,name,eMail) VALUES ('1',$_POST['nick'],$mysql_datum,'0','0','0',$_POST['nachname'],$_POST['name'],$_POST['eMail'])";
    7. $ergebnis = mysql_query($sql,$connection) or die (mysql_error());


    und der meldet mir das hier (verständlich):

    Quellcode

    1. Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in C:\xampp\htdocs\test\anmelden2.php on line 12
    Jetzt die Frage: Wenn ich den Parse Error hiermit behebe: php-fehlermeldungen.de/artikel…pecting-t_string-or,.html

    Wie schaffe ich es, dass trotzdem die Hochkammata um die VALUES stehen? Wenn ich mir $sql ausgeben lasse, erscheint das immer so:

    VALUES ("1",name,2007-08-08,"0","0","0",nachname,name,eMail)

    Hat da jemand ne Idee?

    Danke!

    KageMurai
    Instant URL - just add Gamers!
  • SQL Injections

    ich verschieb das mal ins PHP Forum. Das hat nur sehr fern etwas mit Datenbanken zu tun.

    Meine Lösung hat zwar nichts mit deinem Syntax Fehler zu tun, aber in deinen Code kann man schadcode einfügen und die Datenbank so hacken.
    Versuch dir daher gleich diese Schreibweise anzugewöhnen, was dir auch bei dem Problem hilft. Zudem schau dir mal die Doku zu mysql_real_escape_string an und lese nach was SQL Injections sind.

    Quellcode

    1. $sql = sprintf("INSERT INTO user
    2. (id,nick,register_date,level,points,posts,nachname,name,eMail) VALUES
    3. ('1','%s','%s','0','0','0','%s','%s','%s'); ",
    4. mysql_real_escape_string($_POST['nick']),
    5. $mysql_datum,
    6. mysql_real_escape_string($_POST['nick']),
    7. mysql_real_escape_string($_POST['name']),
    8. $_POST['eMail']
    9. );


    Wenn du wirklich lernfreudig bist und PHP5 nutzt, dann schaust du dir am besten mal die [phpdoc]mysqli[/phpdoc] Klasse an. Ansonsten merks dir einfach mal für später, dass es da bessere Möglichkeiten gibt.
  • Hallo,

    d0nUts Variante ist schon besser, was aber noch fehlt ist die Auswertung von magic_quotes:

    Quellcode

    1. if(get_magic_quotes_gpc()) {
    2. $_POST['nick'] = stripslashes($_POST['nick']);
    3. $_POST['name'] = stripslashes($_POST['name']);
    4. $_POST['nachname'] = stripslashes($_POST['nachname']);
    5. }
    6. $sql = sprintf("INSERT INTO user
    7. (id,nick,register_date,level,points,posts,nachname,name,eMail) VALUES
    8. ('1','%s','%s','0','0','0','%s','%s','%s'); ",
    9. mysql_real_escape_string($_POST['nick']),
    10. $mysql_datum,
    11. mysql_real_escape_string($_POST['nachname']),
    12. mysql_real_escape_string($_POST['name']),
    13. $_POST['eMail']
    14. );
    Alles anzeigen


    70abc
    We raise hopes, here ... until they're old enough to fend for themselves.
    - Mike Callahan