Gegen Bilderklau - Das Original (https://www.gegen-bilderklau.net/index.php)
- Design, Website, Copyright (https://www.gegen-bilderklau.net/board.php?boardid=80)
--- Homepagehilfe (https://www.gegen-bilderklau.net/board.php?boardid=27)
---- Homepagehilfe - Archiv (https://www.gegen-bilderklau.net/board.php?boardid=139)
----- [PHP & MySQL] Login-Problem. (https://www.gegen-bilderklau.net/thread.php?threadid=152964)
Geschrieben von Yellow am 01.04.2009 um 12:58:
Login-Problem.
Hey,
Ich habe ein Login erstellt jedoch funktioniert es nicht was mich wundert weil es bei anderen Projekten genauso ohne Probleme klappt...
Fehlermeldung:
| code: |
1:
2:
3:
4:
|
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /srv/www/web306/html/Lavinia/login.php on line 16
Warning: Cannot modify header information - headers already sent by (output started at /srv/www/web306/html/Lavinia/login.php:16) in /srv/www/web306/html/Lavinia/login.php on line 31 |
|
login.php
| php: |
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:
|
<?php
// Session starten
session_start ();
include("db.php");
$sql = "SELECT ".
"id, name".
"FROM ".
"mitglieder ".
"WHERE ".
"(name like '".$_REQUEST["name"]."') AND ".
"(passwort = '".md5 ($_REQUEST["pwd"])."')";
$result = mysql_query ($sql);
if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_array ($result);
// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["id"];
$_SESSION["user_name"] = $data["name"];
header("Location: index.php?section=intern");
ob_end_flush ();
}
else
{
header("Location: index.php?section=error");
ob_end_flush ();
}
?> |
|
ich hoffen ihr könnt helfen :S
lg
Geschrieben von cll am 01.04.2009 um 14:24:
supplied argument is not a valid MySQL result resource
heißt dass deine Abfrage nicht stimmt! Nimm mal die ganzen "." raus, die bringen GAR NICHTS! Dann fällt dir auch auf, dass hinter den Spaltennamen ein Leerzeichen fehlt
Geschrieben von Yellow am 01.04.2009 um 16:04:
Versteh jetzt nicht genau wie du das meinst? :S
Geschrieben von cll am 01.04.2009 um 16:07:
$sql = "SELECT ".
"id, name".
"FROM ".
"mitglieder ".
"WHERE ".
"(name like '".$_REQUEST["name"]."') AND ".
"(passwort = '".md5 ($_REQUEST["pwd"])."')";
sollte so aussehen:
$sql = "SELECT id, name FROM mitglieder WHERE (name like '".$_REQUEST["name"]."') AND (passwort = '".md5 ($_REQUEST["pwd"])."')";
Geschrieben von Yellow am 01.04.2009 um 16:15:
Ahso okay, danke, hab das jetzt gemacht, aber bleibt noch immer die gleiche fehlermeldung :S
Geschrieben von cll am 01.04.2009 um 16:24:
$sql = "SELECT id, name FROM mitglieder WHERE name='".$_REQUEST["name"]."' AND passwort = '".md5($_REQUEST["pwd"])."'";
(klammern weglassen)
prüf mal, ob die Spalten id, name und passwort existieren!
heißen deine Formularfelder wirklich name und pwd?
Geschrieben von Yellow am 01.04.2009 um 16:44:
danke jetzt klappt es

also es wird richtig angezeigt alles aber trotzdem kann ich mich noch immer nicht einloggen :S kommt immer die meldung als hätte ich falsches pw & name ... :S
Geschrieben von cll am 01.04.2009 um 16:56:
ich weiß nicht wie es bei fetch_array aussehen sollte. Ersetz mal mysql_fetch_array einfach durch mysql_fetch_assoc
Den Rest gleich lassen!
Geschrieben von Yellow am 01.04.2009 um 17:29:
kommt dann noch immer meine error mitteilung anstatt dass ich ins interne komme ...
& hab jetzt sogar noch extra einen neuen test account erstellt und klappt noch immer nicht...
Geschrieben von cll am 02.04.2009 um 09:25:
Log dich mal in dein phpmyadmin ein und geb es dort über der Tabelle bei MYSQL ein. Da kriegst du eine genauere Fehlermeldung
SELECT id, name FROM mitglieder WHERE name='irgendwas' AND passwort = 'md5(test)'
Geschrieben von Yellow am 02.04.2009 um 10:03:
der zeigt mir dann folgendes an:
| code: |
1:
|
MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen). ( die Abfrage dauerte 0.0003 sek. ) |
|
Geschrieben von cll am 02.04.2009 um 12:39:
dann sollte es eigentlich auch von deinem PHP-Skript aus funktionieren.
Geschrieben von Yellow am 02.04.2009 um 12:58:
ja aber ich bekomm aber halt immer die meldung dass pw & name nicht stimmen würden und werde nie ins internebereich weitergeleitet.
Geschrieben von cll am 02.04.2009 um 21:06:
dann hast du es nicht korrekt geschrieben! Auch großschreiben ist bei md5 sehr wichtig!
Geschrieben von Yellow am 02.04.2009 um 21:35:
doch hab ich, habs genau so gemacht wie vorhin in mysql...
Geschrieben von cll am 03.04.2009 um 09:13:
dann stell mal die If-Abfrage rein
Geschrieben von Yellow am 03.04.2009 um 10:42:
| php: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
|
if (mysql_num_rows ($result) > 0)
{
// Benutzerdaten in ein Array auslesen.
$data = mysql_fetch_assoc ($result);
// Sessionvariablen erstellen und registrieren
$_SESSION["user_id"] = $data["id"];
$_SESSION["user_name"] = $data["name"];
header("Location: index.php?section=intern");
ob_end_flush ();
}
else
{
header("Location: index.php?section=error");
ob_end_flush ();
} |
|
Geschrieben von cll am 04.04.2009 um 10:55:
ach stimmt ja, du prüfst nur obs eins mit der Kombination gibt. Ich rufe immer das Passwort von dem Namen ab. Dann kann man
1) prüfen ob der User existiert
2) ob das Passwort gleich ist
Geschrieben von 1Sm!le am 05.04.2009 um 00:07:
| Zitat: |
Original von Yellow
der zeigt mir dann folgendes an:
| code: |
1:
|
MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen). ( die Abfrage dauerte 0.0003 sek. ) |
|
|
Das Bedeutet, mySQL meint, die Name-Passwort-Kombination existiere nicht. Dass du dann nicht in den Bereich kommst, ist nur konsequent. Dein Fehler muss also vorher passieren.
Forensoftware: Burning Board, entwickelt von WoltLab GmbH