Fallentscheidung funktioniert nicht

  • Hallo ich habe einen Script programmiert, doch dabei wird nicht die richtige Fallentscheidung ausgeführt sondern genau die falsche. Hier ersmal der code:
    [php:1:4ed8843f8c]<?
    include ("config.php");
    $passwort = $HTTP_POST_VARS['passwort'];
    $username = $HTTP_POST_VARS['username'];

    $id_pruefen = htmlentities($_COOKIE['user_id']);
    $string_pruefen = htmlentities($_COOKIE['cookiewert']);
    if($string_pruefen != "")
    {
    $verbindung = mysql_connect("$host","$user","$pw") or die ("Keine Verbindung moeglich");
    mysql_select_db("$datenbank") or die ("Die Datenbank existiert nicht");
    $query = "SELECT * ". " FROM `$tblog` " . " WHERE `cookiewert` = '.mysql_real_escape_string($string_pruefen).'";
    $erg = mysql_query($query) or die("MySQL-Fehler: " . mysql_error () );

    while ($list = mysql_fetch_array($erg, MYSQL_ASSOC))
    {
    $id = $list['id'];
    $user = $list['user'];
    }
    mysql_close($verbindung);
    }
    if($id == $id_pruefen and $id != "")
    {
    $login = "yes";
    }
    elseif($id != $id_pruefen or $id == "")
    {
    $login = "no";
    }
    if($login == "no" and ($passwort == "" and $username == ""))
    {
    echo "<form method=\"POST\" action=\"adminindex.php\">

    User<input type=\"text\" name=\"username\" size=\"12\"> Passwort<input type=\"password\" name=\"passwort\" size=\"12\"> <input type=\"submit\" value=\"Einloggen\" name=\"B1\"></p>
    </form>";
    }
    elseif($login == "no" and ($passwort != "" and $username != ""))
    {


    $id_pruefen = htmlentities($_COOKIE['user_id']);
    $string_pruefen = htmlentities($_COOKIE['cookiewert']);
    $verbindung = mysql_connect("$host","$user","$pw") or die ("Keine Verbindung moeglich");
    mysql_select_db("$datenbank") or die ("Die Datenbank existiert nicht");
    $query1 = "SELECT * FROM `$tblog` WHERE `user` ='$username'";
    $result1 = mysql_query($query1) or die("MySQL-Fehler: " . mysql_error () );
    if(mysql_num_rows($result1)>0) {
    $row=mysql_fetch_array($result1);
    $dbpw = $row['passwort'];
    $user_id = $row['id'];
    }
    error_reporting(E_ALL);
    mysql_close($verbindung);
    $userpw = md5($passwort);

    if($dbpw == $userpw)
    {
    $jetzt = time();
    $der_neue_cookie_wert = md5($jetzt.$user_id);
    setcookie ('user_id',$user_id, time()+60*60*2); # 2 Sunden Gültigkeit
    setcookie ('cookiewert',$der_neue_cookie_wert, time()+60*60*2); # 2 Sunden Gültigkeit
    $verbindung = mysql_connect("$host","$user","$pw") or die ("Keine Verbindung moeglich");
    mysql_select_db("$datenbank") or die ("Die Datenbank existiert nicht");

    $aendern = "UPDATE $tblog Set cookiewert = '$der_neue_cookie_wert', timestamp = '$jetzt' WHERE id = '$user_id'";
    $update = mysql_query($aendern);
    mysql_close($verbindung);
    $login = "yes";
    echo "Wilkommen $username! <a href=\"adminindex.php\">Administation</a> :: <a href=\"logout.php\">Logout</a>";

    }
    elseif($dbpw != $userpw)
    {
    echo "Fehler:Falsches Passwort $username $dbpw $userpw! <form method=\"POST\" action=\"adminindex.php\">

    User<input type=\"text\" name=\"username\" size=\"12\"> Passwort
    <input type=\"password\" name=\"passwort\" size=\"12\"> <input type=\"submit\" value=\"Einloggen\" name=\"B1\"></p>
    </form>";
    $login = "no";
    }

    }
    elseif($login == "no" and ($passwort != "" or $username != ""))
    {
    echo "Fehler:Beide Felder ausfüllen! <form method=\"POST\" action=\"adminindex.php\">

    User<input type=\"text\" name=\"username\" size=\"12\"> Passwort<input type=\"password\" name=\"passwort\" size=\"12\"> <input type=\"submit\" value=\"Einloggen\" name=\"B1\"></p>
    </form>";
    }
    elseif($login == "yes")
    {
    echo "eingeloggt als $name! <a href=\"adminindex.php\">Administation</a> :: <a href=\"logout.php\">Logout</a>";
    }

    ?>[/php:1:4ed8843f8c]

    So wenn jetzt if($dbpw == $userpw) ausgeführt werden sollte wird trotzdem elseif($dbpw != $userpw) ausgeführt. Ich habe mir beide passwörter ausgeben lassen. Die stimmen 100% überein! Trotzdem wird elseif($dbpw != $userpw) ausgeführt.
    Ich hoffe mir kann jemand helfen. [/code]

  • Ich hab tags gesetzt die funtzen aber irgendwie nicht...Und editieren kann ichs ja netmehr....

  • Also hier mal ein neuer Versuch die Problembeschreibung
    ist oben in meinem ersten Post über und unter dem Script, ich hoffe mir kann jemand helfen:
    [php:1:ed6b208960]<?php
    include ("config.php");
    $passwort = $HTTP_POST_VARS['passwort'];
    $username = $HTTP_POST_VARS['username'];

    $id_pruefen = htmlentities($_COOKIE['user_id']);
    $string_pruefen = htmlentities($_COOKIE['cookiewert']);
    if($string_pruefen != "")
    {
    $verbindung = mysql_connect("$host","$user","$pw") or die ("Keine Verbindung moeglich");
    mysql_select_db("$datenbank") or die ("Die Datenbank existiert nicht");
    $query = "SELECT * ". " FROM `$tblog` " . " WHERE `cookiewert` = '.mysql_real_escape_string($string_pruefen).'";
    $erg = mysql_query($query) or die("MySQL-Fehler: " . mysql_error () );

    while ($list = mysql_fetch_array($erg, MYSQL_ASSOC))
    {
    $id = $list['id'];
    $user = $list['user'];
    }
    mysql_close($verbindung);
    }
    if($id == $id_pruefen and $id != "")
    {
    $login = "yes";
    }
    elseif($id != $id_pruefen or $id == "")
    {
    $login = "no";
    }
    if($login == "no" and ($passwort == "" and $username == ""))
    {
    echo "<form method=\"POST\" action=\"adminindex.php\">


    User<input type=\"text\" name=\"username\" size=\"12\"> Passwort<input type=\"password\" name=\"passwort\" size=\"12\"> <input type=\"submit\" value=\"Einloggen\" name=\"B1\"></p>
    </form>";
    }
    elseif($login == "no" and ($passwort != "" and $username != ""))
    {


    $id_pruefen = htmlentities($_COOKIE['user_id']);
    $string_pruefen = htmlentities($_COOKIE['cookiewert']);
    $verbindung = mysql_connect("$host","$user","$pw") or die ("Keine Verbindung moeglich");
    mysql_select_db("$datenbank") or die ("Die Datenbank existiert nicht");
    $query1 = "SELECT * FROM `$tblog` WHERE `user` ='$username'";
    $result1 = mysql_query($query1) or die("MySQL-Fehler: " . mysql_error () );
    if(mysql_num_rows($result1)>0) {
    $row=mysql_fetch_array($result1);
    $dbpw = $row['passwort'];
    $user_id = $row['id'];
    }
    error_reporting(E_ALL);
    mysql_close($verbindung);
    $userpw = md5($passwort);

    if($dbpw == $userpw)
    {
    $jetzt = time();
    $der_neue_cookie_wert = md5($jetzt.$user_id);
    setcookie ('user_id',$user_id, time()+60*60*2); # 2 Sunden Gültigkeit
    setcookie ('cookiewert',$der_neue_cookie_wert, time()+60*60*2); # 2 Sunden Gültigkeit
    $verbindung = mysql_connect("$host","$user","$pw") or die ("Keine Verbindung moeglich");
    mysql_select_db("$datenbank") or die ("Die Datenbank existiert nicht");

    $aendern = "UPDATE $tblog Set cookiewert = '$der_neue_cookie_wert', timestamp = '$jetzt' WHERE id = '$user_id'";
    $update = mysql_query($aendern);
    mysql_close($verbindung);
    $login = "yes";
    echo "Wilkommen $username! <a href=\"adminindex.php\">Administation</a> :: <a href=\"logout.php\">Logout</a>";

    }
    elseif($dbpw != $userpw)
    {
    echo "Fehler:Falsches Passwort $username $dbpw $userpw! <form method=\"POST\" action=\"adminindex.php\">


    User<input type=\"text\" name=\"username\" size=\"12\"> Passwort
    <input type=\"password\" name=\"passwort\" size=\"12\"> <input type=\"submit\" value=\"Einloggen\" name=\"B1\"></p>
    </form>";
    $login = "no";
    }

    }
    elseif($login == "no" and ($passwort != "" or $username != ""))
    {
    echo "Fehler:Beide Felder ausfüllen! <form method=\"POST\" action=\"adminindex.php\">


    User<input type=\"text\" name=\"username\" size=\"12\"> Passwort<input type=\"password\" name=\"passwort\" size=\"12\"> <input type=\"submit\" value=\"Einloggen\" name=\"B1\"></p>
    </form>";
    }
    elseif($login == "yes")
    {
    echo "eingeloggt als $name! <a href=\"adminindex.php\">Administation</a> :: <a href=\"logout.php\">Logout</a>";
    }
    ?>[/php:1:ed6b208960]

  • schreibe es so:
    } elseif($dbpw != $userpw) {

    und dazu reiche ein normales else volkommen aus, da es wenn es nicht == nun mal != sein muß!!

    $HTTP_POST_VARS ist vewraltet, nutze $_POST

    nutze bei den vergleichsoperatoren vorher trim, bavor du es durch md5 jagst.

    Oder lasse gleich die DB vergleichen.
    Ps dein code könnte man auf mehr als die hälte kürtzen.

  • Öhm naja schonmal danke.
    Danke!!
    Aber das Problem lag eigentlichdarin: in der Datenbank war ein Leerzeichen mitgespeichert ^^. Habe das jetzt rausgelöscht jetzt klappt das.
    Nunja am wichtigsten ist mir eigentlich das es funktioniert ^^....
    Aber des mit $post werd ich in zukunft machen ist zudem ja auch etwas kürzer und leichter

    Nur ein weiteres Problem ist jetzt das ich nicht eingeloggt bleibe...wenn ich mal auf ne andere seite gehe und dann wieder komme erkennt der irgendwie die cooies oder sowas ncihtmehr.... ;(

  • Sorry wegen Doppelpost! Aber kann ja meine Sachen nicht bearbeiten.
    Das ganze hat sich erledigt. Jetzt funktioniert alles wunderbar.

    Dankeschön!!!