Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
MySQL Abfrage läuft nicht so wie ich will ! [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
MySQL Abfrage läuft nicht so wie ich will !


 
tahir
29-03-2004, 13:14 
 
Hallo leute,

ich versuche gerade ein login script für W@P zu schreiben. Es läuft folgendermaßen. Es besteht ein MySQL DB namens "adminzone". Er besteht nur aus einer Tabelle "zugriff"(id,name,pass,level). Da sind 2 user eingetragen einmal name=test und pass=secret und der zweite ist name=name und pass=pass.

Soweit sogut.

Beim testen der Script logge ich mich mit test und secret ein bekomme die Fehlermeldung

"Sorry, aber dieser Name ist leider nicht bekannt !"

dann logge ich mich mit name und pass ein wieder die selbe Fehlermeldung.

Ich benutze PHP Version 4.3.4

Was mache ich falch.

Hier ist der Codeauszug wo ich die Login Daten überprüfe.


........

include('var.inc.php');
if((!isset($_POST["username"])) OR
(!isset($_POST["password"])))
{
die ("Sorry, aber ohne Name bzw. Passwort geht hier nichts !");
}
$conn = @mysql_connect($dbserver,$dbuser,$dbpass);
if (!$conn)
{
die ("Sorry, Verbindungsversuch zur Datenbank ist fehlgeschlagen !");
}
mysql_select_db($dbname,$conn);
$query = "SELECT pass, level FROM zugriff WHERE name = '".$username."'";
$result = mysql_query($query,$conn);
$zeileholen = mysql_fetch_array($result,MYSQL_ASSOC);
mysql_close($conn);

if (!$zeileholen)
{
die ("Sorry, aber dieser Name ist leider nicht bekannt !");
}
if ($zeileholen["pass"] <> $password)
{
die ("Sorry, aber dieses Passwort passt nicht zum Usernamen !");
}

.......
....
..:dontknow:

 
marc75
29-03-2004, 13:19 
 
register_global = off ?

name = '".$username."'

 
Titus
29-03-2004, 13:23 
 
Ein paar zusätzliche Fehlerausgaben helfen sicher bei der Suche nach der Fehlerquelle weiter:

mysql_select_db($dbname,$conn)
or die('select db failed: '. mysql_error());
$query = "SELECT pass, level FROM zugriff WHERE name = '".$username."'";
$result = mysql_query($query,$conn)
or die('query failed: '. mysql_error());


Außerdem solltest du den Namen noch 'entschärfen', damit niemand die Query hacken kann:
$query = "SELECT pass, level FROM zugriff WHERE name = '".mysql_escape_string($username)."'";

und @marc75: gut erkannt :D

 
goth
29-03-2004, 13:26 
 
Im übrigen empfielt es sich nicht bei einem Login-Prozess zu viele Informationen preiszugeben ... die Aussage Login fehlgeschlagen reicht vollkommen aus ... !

 
asp2php
29-03-2004, 13:27 
 
und das hier auch noch:

if ($zeileholen["pass"] <> $password)

 
tahir
29-03-2004, 14:58 
 
Original geschrieben von marc75
register_global = off ?

name = '".$username."'

register_globals = off

und ich weiss nicht was du mit name = '".$username."' meinst, ist hier irgendwas falch ?:dontknow:

 
tahir
29-03-2004, 14:59 
 
Original geschrieben von asp2php
und das hier auch noch:

if ($zeileholen["pass"] <> $password)

Was ist denn jetzt schon wieder ?

 
marc75
29-03-2004, 15:08 
 
Original geschrieben von tahir
register_globals = off

und ich weiss nicht was du mit name = '".$username."' meinst, ist hier irgendwas falch ?:dontknow:

dann befrage mal die suche nach register global off oder schaue unter www.php.net dazu nach.

 
tahir
29-03-2004, 15:13 
 
sollten die register_globals on sein oder was ?

Ich bin newbee apropo

 
Titus
30-03-2004, 16:51 
 
$_POST["username"] wird nur in $username kopiert usw. wenn register_globals=On

Also schaltest du entweder register_globals ein
oder (was ich empfehle) du benutzt überall die Array-Schreibweise.

 
tahir
31-03-2004, 10:34 
 
Ich danke euch allen.

Mit register_globals=off und mit der $_SESSION hat alles wunderbar geklappt...

:p
;)
:D
:grin: :jo: :respekt: :danke:


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:45 Uhr.