php login-problem



  • <html><body> 
    <?php 
    
    if ( !isset($ma_pnr)) $ma_pnr=0;
    
    $benutzer = $HTTP_POST_VARS['ma_pnr']; 
    $pass = md5($HTTP_POST_VARS['passwort']); //Passwort ist mit md5 verschlüsselt.
    
    if ((!isset($benutzer)) OR (!isset($pass))) { 
    die("Name und Passwort ist nicht bekannt !"); 
    } 
    
    $db = mysql_connect("localhost","root",""); 
    mysql_select_db("test"); 
    
    $login_check .= "SELECT `password`,`rollen_id`"; // user_activated`,`user_gesperrt soll eigentlich nur rollen_id überprüft werden
    $login_check .= "FROM `login` "; 
    $login_check .= "WHERE `ma_pnr` = '".$benutzer."' and 'passwort' = '".$pass."`"; 
    
    $result = mysql_query($login_check,$db); 
    
    $zeileholen = mysql_fetch_array($result); 
    mysql_close($db); 
    
    if(!$zeileholen || $zeileholen["password"] <> $pass) { 
    echo("Benutzername oder Passwort falsch!!!"); 
    } 
    
    if($zeileholen["rollen_id"] == 0) { 
    echo("Als Mitarbeiter eingeloggt"); 
    echo("<a href='Mitarbeiter_account.php'> Geschützer Bereich</a>");
    } 
    
    if($zeileholen["rollen_id"] == 1) { 
    echo("Als Admin eingeloggt"); 
    echo("<a href='adminverwaltung.php'> Geschützer Bereich</a>");
    } 
    ?> 
    <!--<a href="adminverwaltung.php">Geschützer Bereich</a>-->
    </body></html>
    

    Hi,

    hab jetzt das Problem das, er hier nen Fehler ausgibt.
    Ab hier knallt es:
    zeileholen=mysql_fetch_array(zeileholen = mysql\_fetch\_array(result);

    Dabei hab ich ma_pnr jetzt auf null gesetzt, siehe oben.
    Eigentlich sollte doch über das "Query" alles enthalten sein, oder?

    Ich merke gerade, das ich momentan echt net weiter komme...gnrrrr 🙄



  • Geb doch mal vor "zeileholen=mysql_fetch_array(zeileholen = mysql\_fetch\_array(result);"

    echo "<b>Sql:</b> ".$login_check."<br>";
    echo "<b>Fehlermeldung:</b>".mysql_error()."<br><br>";

    ein und sag was da rauskommt.

    Kann das sein das zwischen '`rollen_id`' und FROM ein Leerzeichen fehlt?;



  • Hm, wo genau soll da ein Leerzeichen sein???

    Also die Fehlermeldung:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\web\web\checked.php on line 22

    Aber was jetzt genau fehlt weiß ich auch nicht.



  • Naja der Query ist falsch soweit ich das sehe, der baut

    $login_check .= "SELECT `password`,`rollen_id`FROM `login` WHERE `ma_pnr` = 'blabla' and 'passwort' = 'blablabla`";

    Da seh ich schon 4 Fehler :o

    Überprüf mal Leerzeilen zwischen den Wörtern und ' bzw ` Setzung



  • Hm, ja das ist die Frage was ist in php erlaubt?
    nur so ´ oder ' oder `.
    Oder kann ich die genaue syntax von sql nehmen?

    Letzendlich denke ich doch, das der Hauptfehler bei diesen fetch ist. 😕
    Trotzdem danke.



  • Letzendlich denke ich doch, das der Hauptfehler bei diesen fetch ist.

    C++lerin schrieb:

    Also die Fehlermeldung:
    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in d:\web\web\checked.php on line 22

    Also ist dein $result vom Query nicht korrekt!

    Du kannst dir den Query ja mal mit echo ausgeben lassen und diesen Text dann im phpmyadmin mal ausprobieren.

    Soweit ich weiss, kann man die Syntax in php genauso verwenden wie in mysql, denn der Query wird ja so wie er ist als Zeichenkette übergeben.
    Ein "´" ist mir in mysql noch nicht unter gekommen.



  • hab den fehler, hab machmal password geschrieben und dann manchmal passwort.
    na ja, als admin kann ich mich jetzt einloggen, aber wenn ich mich jetzt
    als mitarbeiter einlogge, (der ja quasi dann mit 0 erkannt wird!!)
    gibt es das aus:

    Benutzername oder Passwort falsch!!!Als Mitarbeiter eingeloggt Geschützer Bereich

    Und es soll nur Als Mitarbeiter eingeloggt Geschützer Bereich
    ausgegeben werden...hm... 😉 😮

    //Benutzername oder Passwort falsch!!! soll dann ausgegeben werden
    wenn nichts erkannt wird.



  • Also das ` braucht man nur bei spaltennamen die aus mehreren Wörtern bestehen.
    Beispiel:

    SELECT `ein Feld` FROM tabelle

    Da das aber niemand wirklich machen will(und sollte), kann man die auch weglassen.

    ' hingegen brauchst du wenn du mit Strings arbeitest, also

    SELECT feld1, feld2 FROM tabelle WHERE name = 'dreaddy';

    PS. spinnt der Login und die Codetags eigentlich nur bei mir heute?



  • Das Login funzt jetzt, hab abe jetzt Probleme wenn bei einer Maske
    Datensätzen per Textfelder in die DB einlesen will.

    Dabei ist Datei Checked1.php in der davorigen Maske richtig eingebunden sie
    wird mit dem Befehl "Action="checked1.php" welches der Button auslöst aufgerufen.

    Der Code (von der cheched.php) hier:

    <html>
    	<Body>
    	<?php
    
    	//$db = mysql_connect("localhost","root",""); 
    	$db = mysql_connect();
    	mysql_select_db("test", $db);
    	//mysql_select_db("test"); 
    
    	$sqlbef = "INSERT mitarbeiter VALUES
    	('$vn', '$nn', '$sto', '$ab')";
    	$sqlerg =mysql_query($sqlbef,$db);
    	If ($sqlerg)
    		ECHO "Datensatz hinzugefügt!";
    		else 
    		ECHO "Kein Datensatz hinzugefügt!";
    	mysql_close($db);
    	?>
        </body>
    </html>
    

    Ausgegeben wird halt nur: Kein Datensatz hinzugefügt!
    Auch hier knallt es wieder, dabei sind das Textfelder die den Wert als "Text"
    haben und müssen daher im php code mit ' eingebunden werden.
    Hm...ey warum kann nicht EINMAL was klappen 😉 ?



  • Die Anweisung sollte doch "INSERT INTO " heissen, oder`?



  • C++lerin schrieb:

    Hm...ey warum kann nicht EINMAL was klappen 😉 ?

    Dann nim dir das PHP-Handbuch mal zur Hilfe: php.net oder MySQL



  • Also ich empfehle auch mal einen Blick ins MySQL-Handbuch.

    Das Statement muß heißen:

    $sqlbef = "INSERT INTO mitarbeiter (vn, nn, sto, ab) VALUES
        ('$vn', '$nn', '$sto', '$ab')";
    

    Natürlich weiß ich nicht, ob Deine Spalten so heißen wie oben, musste evtl. noch anpassen.

    Gruß - Xaron


Anmelden zum Antworten