problem mit php und mysql

  • huhu, ich habe ein problem mit meinem php skript:
    man soll damit sein passwort ändern können, aber folgendes problem:

    Code
    $sql = 'UPDATE User SET Passwort = \''.$passneumd5.'\' WHERE Name = \'' . $name . '\';';
    $result = mysql_query($sql) or die (mysql_error());


    ich connecte vorher, $passneumd5 und $name sind beide gesetzt, dies habe ich schon überprüft, ich connecte auch am anfang
    allerdings, nachdem man dieses skript ausgeführt hat, ist das passwortfeld des jeweiligen namens leer
    ich weiß allerdings nicht, warum?

    //edit: mysql_query gibt mir 1 zurück

  • Dann ändere Passwort in passwort. Am Code ist alles in Ordnung.
    Und schau dir die Felder an, speziell die Typen. Ist die vorgegebene Zeichenanzahl gross genug um den Hash aufzunehmen?

    Möglicherweise ist $passneumd5 auch einfach nur leer. Ohne dein Skript und/oder deine Datenbankstruktur ist das alles nur Rätselraten.

  • Moin,
    ich vermute mal das das Datenfeld nicht groß genug ist, oder das es das Feld nicht gibt.
    ich habe eine Funktion die ich dafür immer benutze.
    Als Typ würde ich VARCHAR machen und z.B. 50 Zeichen.

    MfG
    Der_Doc

  • .. oder das es das Feld nicht gibt...

    wenn es da net geben würde, würd er es ja wohl kaum leeren, oder?
    hab mal auf varchar 50 gemacht, funkt trotzdem net
    Passwort hab ich auch schon in posswort geändert

    strucktur:

    SQL
    CREATE TABLE IF NOT EXISTS `User` (
      `UserID` int(10) NOT NULL,
      `Name` varchar(255) NOT NULL,
      `passwort` varchar(50) NOT NULL,
      `Mail` varchar(150) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      `Level` int(1) NOT NULL
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;


    Spoiler anzeigen

    <?php

    connect();
    $name = $_GET['name'];
    $passneu = $_GET['passneu'];
    $passalt = $_GET['passalt'];
    $passneubest = $_GET['passneubest'];
    $passneumd5 = md5($passneu);
    $passaltmd5 = md5($passalt);

    if (!isset($_GET['passneu']) ) {
    die('0');
    }
    if (!isset($_GET['passalt']) ) {
    die('0');
    }
    if (!isset($_GET['passneubest']) ) {
    die('0');
    }

    if ($passneu !== $passneubest) {
    die('0');
    }


    $sql = 'SELECT *FROM `User` WHERE Passwort = \'' . $passaltmd5 . '\'';
    $result = mysql_query($sql) or die (mysql_error());
    $resulta = mysql_fetch_array($result);

    if ( mysql_num_rows($result) == 0) {
    die ("0");
    } else{
    if ($passneu == $passneubest) {
    //$sql = 'UPDATE `web268db2`.`User` SET Passwort = \''.$passneumd5.'\' WHERE Name = \'' . $name . '\'';
    //echo $passneumd5;
    //echo $sql;
    //$result = mysql_query($sql) or die (mysql_error());
    //echo $result;
    echo "1";

    //$sql = 'UPDATE User SET Passwort = \''.$passneumd5.'\' WHERE Name = \'' . $name . '\';';
    //$result = mysql_query($sql) or die (mysql_error());

    $sql = "UPDATE `User`
    SET passwort = '".$passneumd5. "'
    WHERE Name ='".$name."'";
    $result = mysql_query($sql) or die (mysql_error());

    }else{
    die('0');
    }
    }


    $sql = 'UPDATE `web268db2`.`User` SET `Passwort` = \'' . $passmd5 . '\' WHERE Name = \'' . $name . '\'';
    $result = mysql_query($sql) or die (mysql_error());


    function connect () {

    //hier verbindet er
    }


    ?>

    //edit: haha lol, fehler grad beim post angucken gefunden

    Einmal editiert, zuletzt von noir (5. September 2010 um 20:04)

  • <?php

    connect();
    $name = $_GET['name'];
    $passneu = $_GET['passneu'];
    $passalt = $_GET['passalt'];
    $passneubest = $_GET['passneubest'];
    $passneumd5 = md5($passneu);
    $passaltmd5 = md5($passalt);

    if (!isset($_GET['passneu']) ) {
    die('0');
    }
    if (!isset($_GET['passalt']) ) {
    die('0');
    }
    if (!isset($_GET['passneubest']) ) {
    die('0');
    }

    if ($passneu !== $passneubest) {
    die('0');
    }


    $sql = 'SELECT *FROM `User` WHERE Passwort = \'' . $passaltmd5 . '\'';
    $result = mysql_query($sql) or die (mysql_error());
    $resulta = mysql_fetch_array($result);

    if ( mysql_num_rows($result) == 0) {
    die ("0");
    } else{
    if ($passneu == $passneubest) {
    //$sql = 'UPDATE `web268db2`.`User` SET Passwort = \''.$passneumd5.'\' WHERE Name = \'' . $name . '\'';
    //echo $passneumd5;
    //echo $sql;
    //$result = mysql_query($sql) or die (mysql_error());
    //echo $result;
    echo "1";

    //$sql = 'UPDATE User SET Passwort = \''.$passneumd5.'\' WHERE Name = \'' . $name . '\';';
    //$result = mysql_query($sql) or die (mysql_error());

    $sql = "UPDATE `User`
    SET passwort = '".$passneumd5. "'
    WHERE Name ='".$name."'";
    $result = mysql_query($sql) or die (mysql_error());

    }else{
    die('0');
    }
    }


    $sql = 'UPDATE `web268db2`.`User` SET `Passwort` = \'' . $passmd5 . '\' WHERE Name = \'' . $name . '\'';
    $result = mysql_query($sql) or die (mysql_error());


    function connect () {

    //hier verbindet er
    }


    ?>

  • Also erstmal zu dem Code generell

    PHP
    if (!isset($_GET['passneu']) ) {
    die('0');
    }
    if (!isset($_GET['passalt']) ) {
    die('0');
    }
    if (!isset($_GET['passneubest']) ) {
    die('0');
    }

    kann man so kürzen

    PHP
    if ( !  (((isset($_GET['passneu')) || ((isset($_GET['passalt'])) || ((isset($_GET['passneubest']))) )  {die(0);}


    und mann sollte erst prüfen ob die GET Variablen besetzt sind also diese Zeile direkt an den Anfang schreiben.


    Außerdem solltest du jede Information, in einer Query, mit mysql_real_escape_string Maskieren um das SQL Inject risiko zu mindern.