Alt 21.08.2006, 14:51:13   #1 (permalink)
Retep
Erfahrener Benutzer

ID: 102024
Lose senden

Reg: 29.04.2006
Beiträge: 377
Standard [PHP] Loginscript

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
<? 
// Session starten
session_start ();

// Datenbankverbindung aufbauen 
$connectionid mysql_connect //(...) 
if (!mysql_select_db ("//(...)"$connectionid)) 

  die (
"Keine Verbindung zur Datenbank"); 


$sql "SELECT "
    
//(...)
  
"FROM "
   
//(...)
  
"WHERE "
    
"(nick = '".$_REQUEST["name"]."' AND "
    
"(pw = '".$_REQUEST["pwd"]."')"
$result mysql_query ($sql); 

if (
mysql_num_rows ($result) > 0)    // ZEILE 21

  
// Benutzerdaten in ein Array auslesen. 
$data mysql_fetch_array ($result); 

  
// Sessionvariablen erstellen und registrieren 
  
$_SESSION["user_id"] = $data["Id"];
 
//usw 

  
header ("Location: intern.php"); 
 } 
else 

  
header ("Location: formular.php?fehler=1"); //ZEILE 39

?>
Oben steht mein Login-Script (holt die Variablen $_REQUEST["name"] und $_REQUEST["pwd"] aus einem Formular in "formular.php").
Ich habe überall "//(...)" eingefügt, wo ich nicht die Daten preisgeben möchte.

Ich bekomme nun folgende Fehlermeldungen:
Zitat:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /var/www/web147/html/login.php on line 21

Warning: Cannot modify header information - headers already sent by (output started at /var/www/web147/html/login.php:21) in /var/www/web147/html/login.php on line 39
Habe nun nach ein paar Std. keinen Fehler gefunden, vielen Dank im Voraus!
 
Retep ist offline   Mit Zitat antworten
Alt 21.08.2006, 15:01:11   #2 (permalink)
tleilax
be forever curious
Benutzerbild von tleilax

ID: 27936
Lose senden

Reg: 20.04.2006
Beiträge: 2.428
Standard

Dein Query buggt. Mach mal in Zeile 19 (müsste es zumindest sein) folgendes:
PHP-Code:
1:
$result mysql_query ($sql) or die(mysql_error()); 
Dadurch solltest Du eine Fehlermeldung erhalten, die auf den Fehler schliessen lässt.

BTW: Das Verwenden von den [php][/php]-Codes ist hier äußerst gerne gesehen.
.lange tage und angenehme nächte, tlx
:.whatthemovie.com (Screenshots raten) | PHP ExportForce-Klasse
tleilax ist offline   Mit Zitat antworten
Alt 21.08.2006, 15:01:21   #3 (permalink)
AcidRain
Auftragsprogger

ID: 31021
Lose senden

AcidRain eine Nachricht über ICQ schicken
Reg: 28.04.2006
Beiträge: 57
Standard

mach mal vor der zeile 21 =>
PHP-Code:
1:
echo mysql_error(); 
 
AcidRain ist offline   Mit Zitat antworten
Alt 21.08.2006, 15:15:48   #4 (permalink)
Retep
Erfahrener Benutzer

ID: 102024
Lose senden

Reg: 29.04.2006
Beiträge: 377
Standard .

Zitat:
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Ist die durch echo mysql_error(); resultierende Fehlermeldung.

Aber in Zeile steht doch nur Kleinerzeichen und Fragezeichen?
 
Retep ist offline Threadstarter   Mit Zitat antworten
Alt 21.08.2006, 15:20:53   #5 (permalink)
AcidRain
Auftragsprogger

ID: 31021
Lose senden

AcidRain eine Nachricht über ICQ schicken
Reg: 28.04.2006
Beiträge: 57
Standard

fehlt evtgl am ende der zeile ein ' oder ist irgendwo eins zuviel?
oder an ner falschen position?


lg
acid
 
AcidRain ist offline   Mit Zitat antworten
Alt 21.08.2006, 15:21:04   #6 (permalink)
tleilax
be forever curious
Benutzerbild von tleilax

ID: 27936
Lose senden

Reg: 20.04.2006
Beiträge: 2.428
Standard

Die Zeilenangabe bezieht sich auf das Query, welches übrigens interessant wäre, komplett zu sehen, um den Fehler zu entdecken. Spalten- und Tabellennamen sind ja nun auch eigentlich nicht so sicherheitsrelevant, dass man die verstecken müsste oder?

[edit]

Grad gesehen, da fehlt im Query irgendwo 'ne schliessende Klammer. Entweder vorm AND oder am Ende des Querys.
.lange tage und angenehme nächte, tlx
:.whatthemovie.com (Screenshots raten) | PHP ExportForce-Klasse
tleilax ist offline   Mit Zitat antworten
Alt 21.08.2006, 15:26:09   #7 (permalink)
Shamane
DB-Crasher
Benutzerbild von Shamane

ID: 86026
Lose senden

Reg: 24.07.2006
Beiträge: 872
Standard

PHP-Code:
1:
$sql "SELECT Id FROM ".$tabelle." WHERE nick = '".$_REQUEST['name']."' AND pw = '".$_REQUEST['pwd']."'"
sollte eigntlich tun ^^

Edit: Zum Headerproblem folgendes ganz am anfang in die Datei einsetzten
PHP-Code:
1:
ob_start('ob_gzhandler'); 
 
Shamane ist offline   Mit Zitat antworten
Alt 21.08.2006, 15:30:45   #8 (permalink)
Retep
Erfahrener Benutzer

ID: 102024
Lose senden

Reg: 29.04.2006
Beiträge: 377
Standard .

PHP-Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
$sql "SELECT "
    
"nick, pw, x, y, z "
  
"FROM "
    
"benutzer "
  
"WHERE "
    
"(nick = '".$_REQUEST["name"]."' AND "
    
"(pw = '".$_REQUEST["pwd"]."')"
$result mysql_query ($sql); 
echo 
mysql_error();
if (
mysql_num_rows ($result) > 0)   //ZEILE 21

  
// Benutzerdaten in ein Array auslesen. 
$data mysql_fetch_array ($result); 

  
// Sessionvariablen erstellen und registrieren 
  
$_SESSION["user_id"] = $data["Id"];
  
$_SESSION["nick"] = $data["nick"]; 
  
$_SESSION["pw"] = $data["pw"]; 
  
$_SESSION["x"] = $data["x"]; 
  
$_SESSION["y"] = $data["y"]; 
  
$_SESSION["z"] = $data["z"]; 


  
header ("Location: intern.php"); 

else 

  
header ("Location: formular.php?fehler=1"); // ZEILE 39

?> 
Das ist jetzt alles nach der Verbindungsaufnahme zur Datenbank
 
Retep ist offline Threadstarter   Mit Zitat antworten
Alt 21.08.2006, 15:33:44   #9 (permalink)
tleilax
be forever curious
Benutzerbild von tleilax

ID: 27936
Lose senden

Reg: 20.04.2006
Beiträge: 2.428
Standard

Ok, wie schon in meinem Edit angedeutet, fehlt hier 'ne Klammer:
Code:
1:
2:
"(nick = '".$_REQUEST["name"]."' AND ". "(pw = '".$_REQUEST["pwd"]."')";
Mach da mal das hier draus:
Code:
1:
2:
"(nick = '".$_REQUEST["name"]."') AND ". "(pw = '".$_REQUEST["pwd"]."')";
Und nochmals:

Wenn Du PHP-Code postet, mach da bitte die [php][/php]-Codes drum. Das hilft so ungemein beim Lesen...
4 Posts mit Quote- und PHP-Tags versehen ** edit by theHacker **
.lange tage und angenehme nächte, tlx
:.whatthemovie.com (Screenshots raten) | PHP ExportForce-Klasse
tleilax ist offline   Mit Zitat antworten
Alt 21.08.2006, 15:45:26   #10 (permalink)
Retep
Erfahrener Benutzer

ID: 102024
Lose senden

Reg: 29.04.2006
Beiträge: 377
Standard .

Eine fehlende Klammer, ohje.. trotzdem vielen Dank.
Es läuft noch nicht ganz wie es soll, aber immerhin sind jetzt schonmal die beiden Fehlermeldungen weg.
 
Retep ist offline Threadstarter   Mit Zitat antworten
Alt 21.08.2006, 17:30:31   #11 (permalink)
Scar
www.Scar4U.de

ID: 81662
Lose senden
Reallife

Reg: 03.06.2006
Beiträge: 427
Standard

die klammerung ist überflüssig..

das pw sollten man aber lieber wie folgt prüfen

WHERE BINARY pw = '...'
Scar ist offline   Mit Zitat antworten
Alt 21.08.2006, 17:40:40   #12 (permalink)
Johnson
Code-Frevler

ID: 118054
Lose senden

Reg: 20.04.2006
Beiträge: 860
Standard

Zitat:
Zitat von Scar Beitrag anzeigen
das pw sollten man aber lieber wie folgt prüfen

WHERE BINARY pw = '...'
Begründung ?
 
Johnson ist offline   Mit Zitat antworten
Alt 21.08.2006, 17:45:39   #13 (permalink)
tleilax
be forever curious
Benutzerbild von tleilax

ID: 27936
Lose senden

Reg: 20.04.2006
Beiträge: 2.428
Standard

Der normale Vergleich von MySQL ist nicht case-sensitive. Mit BINARY davor wird er es hingegen.
.lange tage und angenehme nächte, tlx
:.whatthemovie.com (Screenshots raten) | PHP ExportForce-Klasse
tleilax ist offline   Mit Zitat antworten
Alt 21.08.2006, 23:22:48   #14 (permalink)
leller
Erfahrener Benutzer

ID: 25817
Lose senden

Reg: 06.05.2006
Beiträge: 105
Standard

Zitat:
Zitat von tleilax Beitrag anzeigen
Der normale Vergleich von MySQL ist nicht case-sensitive. Mit BINARY davor wird er es hingegen.
Ist das auch notwendig, wenn das PW in einem Feld des Typs Binary als md5-Hash gehalten ist??

Gruß aus Berlin

leller
 
leller ist offline   Mit Zitat antworten
Alt 21.08.2006, 23:45:52   #15 (permalink)
tleilax
be forever curious
Benutzerbild von tleilax

ID: 27936
Lose senden

Reg: 20.04.2006
Beiträge: 2.428
Standard

Nö, bei MD5-Hashes ist es egal, da es bei diesen nicht auf die Gross- und Kleinschreibung ankommt. Der Hash entspricht ja einem 32-stelligen Hexadezimalwert und in der hexadezimalen Schreibweise ist ein E ein e, egal ob gross oder klein.
.lange tage und angenehme nächte, tlx
:.whatthemovie.com (Screenshots raten) | PHP ExportForce-Klasse
tleilax ist offline   Mit Zitat antworten
Antwort

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit Loginscript bitfighter Scripts & Software 2 05.04.2012 17:53:53
[S] FWX-Loginscript chrishan Lose4Scripts 1 02.04.2008 20:14:10
[PHP] Loginscript sichern djjlx Programmierung 20 20.09.2007 15:41:59
[S] PHP und Mysql loginscript DadyCool Lose4Scripts 0 07.08.2007 18:36:18
[S]uche Loginscript SanSpace Lose4Scripts (erledigt) 4 11.11.2006 16:24:32


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:57:51 Uhr.