MySQL Update Problem

  • hier mein code!
    ich bin am verzweifeln wieso funktioniert der update in die datenbank nicht?
    könnt ihr mir bitte helfen?! danke


    mfg antron


  • Weil du auch für jedes update ind die datenbank auch eine anfrage (query) an den server machen musst


    also:


    Code
    $update = mysql_query($sql2);


    Das muss unter jedem der beiden updates stehen dann sollte es gehen


    MFG
    R4Zz0R

  • Was bei sowas immer wichtig zu sagen ist,


    Niemals Post daten direckt an Mysql übergeben ohne zu überprüfen was in den Variablen drinnen steht.


    So können sehr schnell Mysql Injektionen entstehen, und ungewollte fehler auftreten.


    Man sollte sowiso davon ausgehen das jede eingabe eines user Potentiell Böse ist. Und so sollte es auch behandelt werden.


    Greetz TimTim

  • @ timtim
    Eventuell sollten wir noch erwähnen wie man das einfach und sicher machen kann.


    Möglichkeit 1:

    PHP
    <?php
    $var = $_POST['var'];
    $to_mysql = mysq_real_escape($var);
    ?>


    An mysql übergibst du nun den $to_mysql.
    Auserdem hier noch das Manual bei php.net
    http://php.net/manual/de/funct…ql-real-escape-string.php


    Es gibt aber auch noch.
    Möglichkeit 2:

    PHP
    <?php
    foreach ( $_POST as $var => $val )  {
        $_POST[$var] = addslashes($val );
    }
    ?>


    Bei dieser schleife werden alle über post übergebenen variablen durchlaufen und auf jeden inhalt die funktion addslashes(); ausgeführt,
    nun kann man alle daten bequem wieder über $_POST['var'] verwenden.



    Ansonsten rate ich dir, da wie timtim schon sagte:


    Zitat von &quot;timtim&quot;


    Man sollte sowiso davon ausgehen das jede eingabe eines user Potentiell Böse ist. Und so sollte es auch behandelt werden.


    Wirklich auf nummer sicher zu gehen und auch darauf zu achten das du dich da absicherst, egal wie.
    Da das bei einem echten angriff den verlust aller daten und den diebstal der userdaten zurfolge haben kann.



    Ich hoffe ich konnte dir damit noch ein wenig helfen.


    MFG
    R4Zz0R

  • Naja, es ist eigentlich immer wichtig die Daten auf das zu prüfen, was man erwartet.


    Wenn Zahlen kommen, dann prüfen ob es zahlen sind. Wenn ein string kommt, z.B für ein gästebuch. Das darin keine html tags oder JS code enthalten ist. Für benutzernamen das auch nur die erlaubten zeichen enthalten sind. Damit auch nicht ungewollte daten in der DB stehen.


    Greetz TimTim

  • Hast du dich schon mit Regexen auseinandergesetzt ?



    Mit preg_match kann man daten auf ihren inhalt prüfen.
    Im code oben hast du einige zum überprüfen von strings.


    oben ein Array mit verschiedenen Regexen, und am ende das prag_match.



    Wenn z.B wenn ein string nur aus zahlen bestehen darf. Dann nimmt man das "num" also z.B $ok = preg_match($typ_pat["num"],"1234");


    Dann währe $ok fals, weil kein anderes zeichen auser zahlen von 1-9 vorkommen. Dann weist du das der string nur aus zahlen besteht. Wenn ein buchstabe enthalten währe, gäbe es Truh zurück, und du weist das andere zeichen als Zahlen enthalten sind.


    Das ist bei allen anderen auch so. Auser bei "mail" wenn es eine gültige email, im sinne des aufbaues, ist, gibt sie true zurück, und du weist das die e-mail vom aufbau her korrekt ist.


    Bei name wird z.B überprüft ob der string andere zeichen als a-z A-Z 0-9 leerzeichen umlauten - _ () oder [] enthält. wenn im namen z.B ein @ oder ein " enthalten ist, steht in $ok true und man weis wieder das der name nicht korrekt ist.


    Greetz TimTim



  • Das währe die ganze funktion, die kann noch ein wenig mehr =).
    Sie is zwar schon ein wenig älter, und verbesserungswürdig, aber sie erfüllt ihren zweck.


    Mal ne erklärung:


    1. möglichkeit




    2. möglichkeit


    $var = look_typ($var,"escape");




    Zitat


    $var = look_typ($var,"string","typ aus array")
    Nur möglich wenn mysql verbindung besteht.


    Es wird auf die $var mysql_escape string ausgeführt und strip_tags
    Somit werden die " ' escaped und aller code entfernt =).


    Der escapte string wird dann ind $var geschrieben.



    Wie gesagt das is schon älter, und von mir erstellt als meine kenntnisse geringer waren.


    Greetz TimTim

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!