Problem bei Login und Register ...
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
benutzername
code
datenbank
email
erfolgreich registriert nachricht
ergebnis
fehler
garnichts
geschlecht
host
http
limit
nachricht
register
registrieren
status
tabelle
url
verbindung
-
Hey Leute,
Ich hab da mal was für euch :D
Irgendwie kann man eingeben was man will :) Und man ist eingeloggt ..
/* IN DER MYSQL MUSS benutzername, benutzerpasswort, benutzeremail, benutzergeschlecht */ include("includes/mysql.php"); if (isset($_POST["sendlogin"])) { /* Anmeldungsdaten */ $user = $_POST["username"] ; $password = $_POST["passwort"] ; /* Anmeldungsdaten */ /* Anmeldungscheck */ $abfrage = "SELECT benutzername, benutzerpasswort, benutzeremail FROM '$datenbankname' WHERE benutzername LIKE '$user' LIMIT 1"; $ergebnis = mysql_query($abfrage); $row = mysql_fetch_object($ergebnis); if($row->benutzerpasswort =="$password") { session_start(); $_SESSION["name"] = $user; $_SESSION["passwort"] = $password; $_SESSION['angemeldet'] = true; echo"ja du bist eingeloggt $user"; } else { echo "Dein Passwort war falsch!"; } /* Anmeldungscheck */ } /* Registrieren */ if (isset($_POST["sendreg"])) { $user = $_POST["username"] ; $password = $_POST["passwort"] ; $password2 = $_POST["passwort2"] ; $email = $_POST["email"] ; $geschlecht = $_POST["geschlecht"] ; if($user=="" OR $password=="" OR $password2=="" OR $email=="" OR $geschlecht="") { echo "Fülle erst alle Felder aus!"; } else { if($password=="$password2") { session_start(); $_SESSION["name"] = $name; $_SESSION["passwort"] = $passwort; $_SESSION["email"] = $email; $_SESSION["geschlecht"] = $geschlecht; $_SESSION['angemeldet'] = true; $register = mysql_query("INSERT INTO users VALUES ('','$user','$password','$email','$geschlecht')"); $nachricht = "Du hast dich erfolgreich registriert."; $nachricht = wordwrap($nachricht, 70); mail('$email', 'Registration', $nachricht); } else{ echo "Die beiden angegebenen Passwörter stimmten nicht überein."; } } } /* Registrieren */ ?>
Keine Sorge, Datenbank Verbindung besteht. Falls ihr noch andere Fehler sieht ... bitte melden.
Ich bin dankbar für jede Hilfe ! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
1) warum verwendest du
und nichtWHERE benutzername LIKE '$user'
?WHERE benutzername = '$user'
2) du vergisst die Eingaben zu escapen:$user = mysql_real_escape_string($_POST["username"]); $password = mysql_real_escape_string($_POST["passwort"]);
Das gleiche gillt natürlich auch beim registrieren.
3) warum verwendest du z.b.
und nicht einfach$password=="$password2"
?$password == $password2
4) beim INSERT INTO solltest du die Feldnamen angeben, sonst verwirrst du nur dich und alle anderen, also z.b so:INSERT INTO users (username, password) VALUE ('Name', 'Passwort')
5) hast du mal mit phpMyAdmin o.ä. in deiner Datenbank nachgeschaut ob alles richtig eingetragen wurde? -
Setz das mal nach dem Festlegen der Variable $abfrage ein:
die(var_dump($abfrage));
Und probier mal den Query, der ausgegeben wird, direkt in MySQL einzugeben. -
Du testest nicht ob die Query überhaupt erfolgreich warst ausserdem würde ich noch prüfen ob die übergebenen Formulardaten nicht leer sind mindestens aber das Passwort oder du prüfst das Passwort direkt in der Query.
Also etwa so:
if ($ergebnis = mysql_query($abfrage)) { $row = mysql_fetch_object($ergebnis); if(($row->benutzerpasswort == $password) And (isset($password))) { session_start(); $_SESSION["name"] = $user; $_SESSION["passwort"] = $password; $_SESSION['angemeldet'] = true; echo"ja du bist eingeloggt $user"; } else { echo "Dein Passwort war falsch!"; } }
Beitrag zuletzt geändert: 22.7.2012 20:29:42 von vctb -
Ich hab das gemacht was ihr gepostet hat...
Das von Hack-Life hat nicht funktioniert und das von vctb, da hab ich das Problem jetzt erscheint das garnichts mehr :D -
fabian-meinders schrieb:
Was genau hast du gemacht (wie hast du den Quellcode umgebaut, eventuell nochmals hier posten)?
Das von Hack-Life hat nicht funktioniert und das von vctb, da hab ich das Problem jetzt erscheint das garnichts mehr :D
Eine weiße Seite deutet auf einen Fehler im PHP hin. Aktivier mal die Fehlerausgabe (Beschreibung) und sag was dann auf der Seite steht.
Hast du schon mit phpMyAdmin nachgeschaut was in der Tabelle tatsächlich steht?
Übrigens war das "INSERT"-Statement von mir nur ein Beispiel um zu verdeutlichen was ich meine... also nicht 1:1 so einbauen! -
Ja das Insert änder ich später nochmal :) Ihr könnt mein Script life auf fabi-me.de unter anmelden anschauen!
Ach und die phpmyadmin tabellen stimmen auch überein
HIer einmal ein Svreen
http://www.imagebanana.com/view/gigbf2oc/phpmyadmin.png
<?php /* IN DER MYSQL MUSS benutzername, benutzerpasswort, benutzeremail, benutzergeschlecht */ include("includes/mysql.php"); if (isset($_POST["sendlogin"])) { /* Anmeldungsdaten */ $user = mysql_real_escape_string($_POST["username"]); $password = mysql_real_escape_string($_POST["passwort"]); /* Anmeldungsdaten */ /* Anmeldungscheck */ $abfrage = "SELECT benutzername, benutzerpasswort FROM '$datenbankname' WHERE benutzername '$user' LIMIT 1"; $ergebnis = mysql_query($abfrage); $row = mysql_fetch_object($ergebnis); if ($ergebnis = mysql_query($abfrage)) { $row = mysql_fetch_object($ergebnis); if(($row->benutzerpasswort == $password) And (isset($password))) { session_start(); $_SESSION["name"] = $user; $_SESSION["passwort"] = $password; $_SESSION['angemeldet'] = true; echo"ja du bist eingeloggt $user"; } else { echo "Dein Passwort war falsch!"; } } /* Anmeldungscheck */ } /* Registrieren */ if (isset($_POST["sendreg"])) { $user = $_POST["username"] ; $password = $_POST["passwort"] ; $password2 = $_POST["passwort2"] ; $email = $_POST["email"] ; $geschlecht = $_POST["geschlecht"] ; if($user=="" OR $password=="" OR $password2=="" OR $email=="" OR $geschlecht="") { echo "Fülle erst alle Felder aus!"; } else { if($password=="$password2") { session_start(); $_SESSION["name"] = $name; $_SESSION["passwort"] = $passwort; $_SESSION["email"] = $email; $_SESSION["geschlecht"] = $geschlecht; $_SESSION['angemeldet'] = true; $register = mysql_query("INSERT INTO users VALUES ('','$user','$password','$email','$geschlecht')"); $nachricht = "Du hast dich erfolgreich registriert."; $nachricht = wordwrap($nachricht, 70); mail('$email', 'Registration', $nachricht); } else{ echo "Die beiden angegebenen Passwörter stimmten nicht überein."; } } } /* Registrieren */ ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <link rel="shortcut icon" href="images/favicon.png" /> <link rel="stylesheet" type="text/css" href="style.css.php" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title><?php include("includes/titel.php"); ?></title> </head> <body> <div id="homepage"> <div id="header"> <a href="index.php"><?php include("includes/titel.php"); ?></a> </div> <div id="navi"> <?php include("includes/menuoben.php"); ?> </div> <div id="content"> <div id="contentmenu"> <?php include("includes/menurechts.php"); ?> </div> <div id="contenttext"> Wenn Sie sich anmelden, können sie hier mehr machen als andere Personen.<br/><br/> • Anmelden <form action="login.php" method="post"> Benutzername:<br/> <input type="text" align="center" name="username" value="Max Mustermann" onfocus="this.value = ''"/> <br /> Passwort:<br /> <input type="password" name="passwort" onfocus="this.value = ''" /> <br /> <br /> <input class="inputanmelden" type="submit" name="sendlogin" value="Anmelden" /> </form> • Registrieren <form action="login.php" method="post"> Benutzername:<br/> <input type="text" align="center" name="username" value="Max Mustermann" onfocus="this.value = ''" /> <br /> Passwort:<br /> <input type="password" name="passwort" onfocus="this.value = ''" /> <br /> Passwort:<br /> <input type="password" name="passwort2" onfocus="this.value = ''" /> <br /> Email:<br/> <input type="text" align="center" name="email" onfocus="this.value = ''" /> <br /> Geschlecht:<br/> • Männlich <input type="radio" name="geschlecht" value="Mann"><br /> • Weiblich<input type="radio" name="geschlecht" value="Frau"><br /><br /> <input class="inputanmelden" type="submit" name="sendreg" value="Registrieren" /> </form> </div> </div> </div> </body> </html>
-
Wenn garnichts mehr ausgegeben wird liegt es daran dass an der Query etwas nicht stimmt, bzw die übergebenen Daten stimmen nicht.
Beitrag zuletzt geändert: 22.7.2012 21:27:32 von vctb -
Hast du es mal mit meinem var_dump probiert?
-
vctb .... daran kann was dran sein ? wie mache ich das denn
-
Wie schön mein Beitrag doch überlesen wird :D
Genau damit kannst du den Query überprüfen ... -
Erstmal hast du einen Fehler beim einbinden des Datenbankname, dieser darf nicht in Hochkomma sein, er muss entweder in Backticks ` (Links neben Backspace, + Shift) sein oder einfach ohne angegeben werden. Außerdem hoffe ich hast du den Tabellennamen angegeben und nicht den Datenbanknamen. Dieser muss über
mysql_select_db('Datenbankname', $sqllink);
ausgewählt werden.
$abfrage = "SELECT `benutzername`, `benutzerpasswort` FROM `$datenbankname` WHERE `benutzername` = '$user'"; if(($ergebnis = mysql_query($abfrage)) And (!empty($user)) And (!empty($password))) ) { $row = mysql_fetch_object($ergebnis); if($row->benutzerpasswort == $password) { session_start(); $_SESSION["name"] = $user; $_SESSION["passwort"] = $password; $_SESSION['angemeldet'] = true; echo"ja du bist eingeloggt $user"; } else { echo "Dein Passwort war falsch!"; } } else { echo mysql_errno($link) . ": " . mysql_error($link) . "\n"; }
PS: habe noch 2 Fehler gefunden und korrigiert!
Beitrag zuletzt geändert: 22.7.2012 22:55:34 von vctb -
fabian-meinders schrieb:
ich würde mal das probieren:
... /* Anmeldungscheck */
$abfrage = "SELECT benutzername, benutzerpasswort FROM '$datenbankname' WHERE benutzername '$user' LIMIT 1";
...$abfrage = "SELECT benutzername, benutzerpasswort FROM $datenbankname WHERE benutzername='$user' LIMIT 1";
vctb schrieb:Erstmal hast du einen Fehler beim einbinden des Datenbankname, dieser darf nicht in Hochkomma sein, er muss entweder in Backticks ` (Links neben Backspace, + Shift) sein oder einfach ohne angegeben werden. ...
genauer backticks brauchst nur für geschützte ausdrücke (zb. wenn die datenbank-/tabellen-/spaltenname - blöder weise - `alter` o. so heißt, aber nicht wenn es um altern handelt ;).
hier ist so eine liste.
Beitrag zuletzt geändert: 22.7.2012 23:48:02 von czibere -
Ich habe jezt alles gelesen ...
Bei meinem Script siehst momentan so aus ;)
/* IN DER MYSQL MUSS benutzername, benutzerpasswort, benutzeremail, benutzergeschlecht */ include("includes/mysql.php"); if (isset($_POST["sendlogin"])) { /* Anmeldungsdaten */ $user = $_POST["username"]; $password = $_POST["passwort"]; $abfrage = "SELECT benutzername, benutzerpasswort FROM `users` WHERE benutzername LIKE '$users' LIMIT 1"; $ergebnis = mysql_query($abfrage); $row = mysql_fetch_object($ergebnis); if($row->benutzerpasswort == $password) { session_start(); $_SESSION["username"] = $user; $_SESSION['angemeldet'] = true; echo "<div style='width:300px; height:200px; background-color:red; color:white;'>Joa das klappt!</div>"; } else { echo "<div style='width:300px; height:200px; background-color:red; color:white;'>Ging nicht xD</div>"; } } /* Registrieren */ if (isset($_POST["sendreg"])) { $user = $_POST["username"] ; $password = $_POST["passwort"] ; $password2 = $_POST["passwort2"] ; $email = $_POST["email"] ; $geschlecht = $_POST["geschlecht"] ; if($user=="" OR $password=="" OR $password2=="" OR $email=="" OR $geschlecht="") { echo "Fülle erst alle Felder aus!"; } else { if($password=="$password2") { session_start(); $_SESSION["name"] = $name; $_SESSION["passwort"] = $passwort; $_SESSION["email"] = $email; $_SESSION["geschlecht"] = $geschlecht; $_SESSION['angemeldet'] = true; $register = mysql_query("INSERT INTO users VALUES ('','$user','$password','$email','$geschlecht')"); $nachricht = "Du hast dich erfolgreich registriert."; $nachricht = wordwrap($nachricht, 70); mail('$email', 'Registration', $nachricht); } else{ echo "Die beiden angegebenen Passwörter stimmten nicht überein."; } } } /* Registrieren */ ?>
SOOO!!! Jetzt kommt aber das coole ich hab eine andere Seite parallel laufen und da funktionierts...
Das funktionierende:
<?php include("mysql.php"); $verbindung = mysql_connect($mysql_host, $mysql_user , $mysql_password) or die("Verbindung zur Datenbank konnte nicht hergestellt werden"); mysql_select_db(UNWICHTIG) or die ("Datenbank konnte nicht ausgewhlt werden"); function login() { $host = htmlspecialchars($_SERVER["HTTP_HOST"]); $uri = rtrim(dirname(htmlspecialchars($_SERVER['PHP_SELF'])), "/\\"); $extra = "index.php"; $name = $_POST["name"]; $passwort = $_POST["passwort"]; $abfrage = "SELECT name, passwort, status FROM users WHERE name LIKE '$name' LIMIT 1"; $ergebnis = mysql_query($abfrage); $row = mysql_fetch_object($ergebnis); $status = $row->status ; if($row->passwort == $passwort) { session_start(); $_SESSION["username"] = $name; $_SESSION["status"] = $status; $_SESSION['angemeldet'] = true; } else { echo " Deine Anmeldung war nicht korrekt! <form method='post' action='index.php'>Dein Username:<br><input type='text' size='24' maxlength='50' name='name'><br><br/>Dein Passwort:<br/> <input type='password' size='24' maxlength='50' name='passwort'><br><input type='submit' name='send' value='send'> </form>"; } } if (isset($_POST["send"])) { login(); } else { echo "<form method='post' action='index.php'>Dein Username:<br><input type='text' size='24' maxlength='50' name='name'><br><br/>Dein Passwort:<br/> <input type='password' size='24' maxlength='50' name='passwort'><br><input type='submit' name='send' value='send'> </form> "; } if (isset($_SESSION["angemeldet"])) { $host = htmlspecialchars($_SERVER["HTTP_HOST"]); $uri = rtrim(dirname(htmlspecialchars($_SERVER['PHP_SELF'])), "/\\"); header("Location: http://$host$uri/panel.php"); } mysql_close($verbindung); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Unbenanntes Dokument</title> </head> <body> </body> </html>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage