Kurzhilfe bei PHP Abfrage
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
ausgeben
benutzerdaten
code
datenbank
datum
einloggen
erstellen
fehler
formular
header
helfen
kennwort
login
nachname
not
null
registrieren
tabelle
vorname
-
Hier in dem Loginscipt ist noch ein Fehler in der mit dicken Schrift makierten Abfrage.
Diese sollt eigentlich wenn das Passwort und der Nickname übereinstimmen zur intern.php weiterleiten.
Jedesmal wenn ich Dateneingebe werde ich auf formular.php?fehler=1 weitergeleitet.
Die Datenbankverbidung habe ich in meinem Script richtig angegeben !
Kann da jemand helfen ?
Nachdem die Frage geklärt ist kann das Thema direkt geschlossen werden !°
<?php // Session starten session_start (); // Datenbankverbindung aufbauen $connectionid = mysql_connect("************************"); if (!mysql_select_db ("**********", $connectionid)) { die ("Keine Verbindung zur Datenbank"); } $sql = "SELECT ". "Id, Nickname, Nachname, Vorname ". "FROM ". "benutzerdaten ". "WHERE ". "(Nickname like '".$_REQUEST["name"]."') AND ". "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"; $result = mysql_query ($sql,$connectionid); [b] 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_nickname"] = $data["Nickname"]; $_SESSION["user_nachname"] = $data["Nachname"]; $_SESSION["user_vorname"] = $data["Vorname"]; header ("Location: intern.php"); } else { header ("Location: formular.php?fehler=1"); } [/b] ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
versuche es mal so:
$sql = "SELECT ". "Id, Nickname, Nachname, Vorname ". "FROM ". "benutzerdaten ". "WHERE ". "(Nickname LIKE".$_REQUEST["name"].") AND ". "(Kennwort = ".md5 ($_REQUEST["pwd"]).")";
allerdings halte ich die abfrage mit nickname LIKE xx für falsch, da du dich dann auch einloggen kannst, wenn zb ein user "n9aces" heist und du nur "aces" eingibst. deswegen wäre an dieser stelle nickname='xxx' wohl richtiger.
mfg
-
Das Problem ist ja das immer "Else" ausgewählt wird bei der 2ten Bedinnung !
Jeder versucht vom einloggen ist Fehlgeschlagen , es wird immer ("Location: formular.php?fehler=1"); das ausgeführt und nicht der aufruft von intern.php !
Das ist ja leider das Problem :(
$sql = "SELECT ". "Id, Nickname, Nachname, Vorname ". "FROM ". "benutzerdaten ". "WHERE ". "(Nickname like '".$_REQUEST["name"]."') AND ". "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"; $result = mysql_query ($sql,$connectionid); 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_nickname"] = $data["Nickname"]; $_SESSION["user_nachname"] = $data["Nachname"]; $_SESSION["user_vorname"] = $data["Vorname"]; header ("Location: intern.php"); } else { // 2Te Bedinnung !! <------------------------------------------------------ header ("Location: formular.php?fehler=1"); } ?>
-
mach mal
vor das if reinvar_dump($result)
wenn dann dortbool(false)
gibt es zwei möglichkeiten:
1. die abfrage ist falsch
2. du hast daten eingegeben die in der datenbank nicht existieren
mfg -
Nachdem ich das eingefügt habe kommt jetzt folgende Fehlermeldung die vorher nicht da war :
resource(3) of type (mysql result)
Warning: Cannot modify header information - headers already sent by (output started at /home/webpages/lima-city/n9aces-community/html/login.php:23) in /home/webpages/lima-city/n9aces-community/html/login.php on line 40
Ohne
var_dump($result)
Springt er wie gesagt immer zum Else , das heißt immer " Daten falsch eingegeben ".
Die Datensätze bestehen zu 100% in der Datenbank !
Ich denke es muss was hiermit zu tuen haben , nur ich weiß nicht was diese Abfrage jetzt wirklich bewirkt !
if (mysql_num_rows ($result) > 0)
hoffe es klappt bald :/ -
Ganz allgemein zum Debugging (einen Fehler kann ich so auch nicht sehen):
Probier' doch mal - nur zum Testen - was ist, wenn Du die Bedingung für das Paßwort wegläßt. Und laß' Dir dann mal (im if-, nicht else-Zweig) sowohl das Feld kennwort aus der Datenbank als auch den MD5-Wert des übermittelten Paßwortes ausgeben (dazu mußt Du mal das select vorübergehend erweitern). Ich vermute, da stimmt irgendwas mit der "Kodierung" nicht.
Wenn Dir auch das noch nicht weiter hilft: laß Dir mal ganz einfach die beiden Übergabewerte ausgeben - nicht, daß da irgendwelche Tippfehler in den Parameter-Namen im Weg stehen und garnichts ankommt. -
nikic ich habe es gemacht so wie du gesagt hast :( , es hat leider nicht geholfen !
deunan dein tipp hilft leider auch nicht wenn ich alle werte abrufe stimmen sie mit der datenbank überein das ist merkwürdig ~~
keiner verbsserung
kann man auch eine andere bedinnung schreiben für den login ?
wenn ja wie ?
hoffe iwann klappt es :/ -
Kannst du uns bitte ein "SHOW CREATE TABLE benutzerdaten" geben? (Gibt im PHPmyAdmin im SQL-Tab deiner Tabelle ein :)
-
Das wird ausgegeben ,
benutzerdaten CREATE TABLE `benutzerdaten` (\n `Id` int(11) NOT ...
ich kann damit leider nix anfangen , hier ist mal der sql code für die tabelle :
INSERT INTO benutzerdaten ('Nickname', 'Kennwort', 'Nachname', 'Vorname') VALUES ('x','x','x','x')
So habe ich die Datensätze eingetragen ...
Und so die Tabelle erstellt :
CREATE TABLE benutzerdaten ( Id Int(11) NOT NULL auto_increment, Nickname VarChar(50) NOT NULL default '', Kennwort VarChar(50) NOT NULL default '', Nachname VarChar(50) NOT NULL default '', Vorname VarChar(50) NOT NULL default '', PRIMARY KEY (Id) )
Hoffe das hilft mir zu helfen :/ -
Also ich erkenn da auch keinen Fehler. Hast du dir schonmal $sql ausgeben lassen und in phpmyadmin ausprobiert?
-
Das ist auch alles ganz normal , voll komisch !
Ich finde den Fehler irgendwie nciht ~~ -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage