PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Login über MySQL Datenbank.



Individuum
29-11-2002, 23:58
Hallo,
Ich habe vor einen Login zumachen in dem sich mehrere unterschiedliche Benutzer einloggen können.
Das ganze soll über eine Mysql datenbank laufen.
Auf der esten Seite ist ein Formular mit 2 Feldern eins für user und eins für pw, das ganze wir mit post an diese seite gesendet!
Aber ich bekomme immer nur nicht berechtigt obwohl in der Datenbank und die Eingabe korrekt sind.
<?php
$db = mysql_connect(localhost, ***, ***);
$sqlab = "select user, password from benutzer";
$res = mysql_db_query("login", $sqlab);
$num = mysql_num_rows($res);

for ($i=0; $i<$num; $i++)
{
$userdatnebank = mysql_result($res, $i, "user");
$pwdatenbank = mysql_result($res, $i, "password");
if ( $userlogin == $userdatenbank && $pwlogin == $pwdatenbank)
{
echo "Du Bist eingeloggt!";
include xyz.inc.php;
}
else echo "Du bist nicht berechtigt!";
}
mysql_close($db);

?>

Weiß einer ob ich mich ím code verhasbelt habe oder woran es liegt, Thx im Voraus!

Individuum
30-11-2002, 10:19
Da ich neu hier bin, habe ich ersteinmal noch ein bischen gesucht und habe gesehen das bei vielen die übergabe von variablen nicht funktioniert!
Ich habe ausprobier und eine

echo " $userlogin ";

aber es wird nichts ausgegeben, also schleise ich darauf das die variablen garnicht vom formular an dieses script übergeben werden.

woran kann das liegen, ich hab einen apache 1.3.xxx und php 4.2 auf einer suse 8.1 maschiene.

Gaert
30-11-2002, 13:23
Wenn du noch ein bisschen weitergelesen hättest, hättest du auch schon viele Lösungsansätze gesehen.

Also...

Schau ob du auf die Variable über $_POST['variablenname'] oder $_REQUEST['variablenname'] drauf kommst und was in deiner PHP.ini unter register_globals steht!

Übrigens wäre es nicht schlecht für ein Login System die Passwörter deiner User md5 Verschlüsselt abzulegen!

mehlvogel
02-12-2002, 18:56
Original geschrieben von Individuum

<?php
$db = mysql_connect(localhost, ***, ***);
$sqlab = "select user, password from benutzer";
$res = mysql_db_query("login", $sqlab);
$num = mysql_num_rows($res);

for ($i=0; $i<$num; $i++)
{
$userdatnebank = mysql_result($res, $i, "user");
$pwdatenbank = mysql_result($res, $i, "password");
if ( $userlogin == $userdatenbank && $pwlogin == $pwdatenbank)
{
echo "Du Bist eingeloggt!";
include xyz.inc.php;
}
else echo "Du bist nicht berechtigt!";
}
mysql_close($db);

?>


Generell sollte ein wenig was geändert werden. Einfach mit dem SQL Befehl als Where Clause schonmal den namen und dann das (natürlich) verschlüsselte Passwort prüfen.

Zur Not wenn der Query so bleiben muss - weil doppelte Namen vorkommen können. Nimm anstatt der For Schleife:



while( $var = mysql_fetch_array($res))
if ($var["user"] == $user && $var["password"] == md5($password)) include("logedin.inc.php");
else include("notlogedin.inc.php");


Das ist auf jeden Fall "schöner" und einfach zu lesen.

Stranger
03-12-2002, 14:31
Hi ,

also ich weiß nicht ob du den code aus deinem file rauskopiert oder nochmal geschrieben hast.
aber wenn kopiert dann:

$userdatnebank = mysql_result($res, $i, "user");

ist das ein fehler oder ??

Individuum
04-12-2002, 16:29
ich hab das script nach nem tut geschribn, das mit der variable ist beim nachbearbeitn passiert. ich mach das aber jetzt anders:


<?php

$db = mysql_connect(localhost , **,**);
$sqlab = "select * from benutzer where user = '$userlogin' and password = '$pwlogin'";
$res = mysql_db_query("login", $sqlab);
$num = mysql_num_rows($res);
if ($num == 1)
{
if ( $userlogin == ich)
{
echo "nur für mich!";
}
else
{
echo "für den rest";
}
}
else echo "Du bist nicht berechtigt!";

mysql_close($db);

?>


es lag nicht an dem script sondern an dem "falschen" eintrag in der php.ini

thx a lot