Hilfe mit Login Skript
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
adresse
angeben
array
code
email
ende
fehler
geburtsdatum
hausnummer
host
login
nachname
ort
problem
registrierung
statement
tabelle
telefon
url
vorname
-
Hallo
ich habe ein kleines Problem mit meinem Login Skript
uebungen-till.lima-city.de
Die Registrierung funktioniert einwandfrei aber auf der Login Seite kommt nach eingabe von E-Mail und Passwort die Info, dass E-Mail oder Passwort ungültig sind.
Nutzername(db) und Passwort(db) sind nicht die originalen Zugangstaten.
<?php session_start(); $pdo = new PDO('mysql:host=91.216.248.2;dbname=db_356572_3', 'Nutzername(db)', 'Passwort(db)'); if(isset($_GET['login'])) { $email = $_POST['email']; $passwort = $_POST['passwort']; $statement = $pdo->prepare("SELECT * FROM db_356572_3 WHERE email = :email"); $result = $statement->execute(array('email' => $email)); $user = $statement->fetch(); //Überprüfung des Passworts if ($user !== false && password_verify($passwort, $user['passwort'])) { $_SESSION['userid'] = $user['id']; die('Login erfolgreich. Weiter zu <a href="geheim.php">internen Bereich</a>'); } else { $errorMessage = "E-Mail oder Passwort war ungültig<br>"; } } ?> <!DOCTYPE html> <html> <head> <title>Login</title> <script language="JavaScript"> <!-- var interval = window.setInterval("uhr_anzeigen()", 1000); function uhr_anzeigen(){ var Datum = new Date(); var stunde = Datum.getHours(); var minute = Datum.getMinutes(); var sekunde = Datum.getSeconds(); Zeit = ((stunde < 10) ? " 0" : " ")+ stunde; Zeit += ((minute < 10) ? ":0" : ":")+ minute; Zeit += ((sekunde < 10) ? ":0" : ":")+ sekunde; Zeit += " Uhr"; document.getElementById('uhr').innerHTML=Zeit; } // --> </script> </head> <body onload="uhr_anzeigen()"> <?php if(isset($errorMessage)) { echo $errorMessage; } ?> <h1 align="center">Herzlich Willkommen auf meiner Login Seite.</h1> <form action="?login=1" method="post"> <table width="90%" align="center"> <tr><td width="20%"></td><td width="20%"></td><td width="10%"></td><td width="10%"></td><td width="20%"></td><td width="20%"></td></tr> <tr> <td rowspan="20"><b><div id="uhr"></div></b> <a target="_blank" href="http://www.waschmaschineninfo.de/"></a><br><a href="http://www.waschmaschineninfo.de/"><iframe src="http://www.schulferien-aktuell.de/kalender.php" name="Kalender" width="141" height="146" align="left" scrolling="no" marginheight="0" marginwidth="0" frameborder="0"> </iframe></a> </td> <td></td> <td>E-Mail:</td> <td><input type="email" size="20" maxlength="50" name="email"></td> <td></td> <td rowspan="20"><!-- WetterOnline Homepagewetter Beginn //--> <div style="position:relative;background-image:url(https://st.wetteronline.de/img/p_city_hpweather/background/blau_d.gif);background-repeat:repeat-x;border:0px solid #BCBCBC;width:158px;text-align:center;font-family:arial,verdana;"><a href="http://www.wetteronline.de" target="_blank" style="text-decoration:none;color:#000;outline:none;"><img src="https://st.wetteronline.de/img/logo/wetteronline_blue_114x22.png" title="WetterOnline" alt="WetterOnline" style="border: 0; padding-top: 2px;"></a><a href="http://www.wetteronline.de/wetter/frankfurt-oder" target="_blank" style="font-size:12px;margin-bottom:2px; font-weight:bold; color:#000; text-align:center; text-decoration:none; display:block;">Das Wetter für<br />Frankfurt (Oder)</a><iframe marginheight="0" marginwidth="0" frameborder="0" scrolling="no" src="http://www.wetteronline.de/?pid=p_city_hpweather&WMO=10494&FORMAT=long&MENU=search&MAP=weathermaps" allowtransparency="true" width="158" height="275"></iframe><div style="font-size:10px;height:18px; color:#000; text-align:center;">Mehr auf <a href="http://www.wetteronline.de/" target="_blank" title="WetterOnline Homepage" style="text-decoration:none;color:#000;">wetteronline.de</a></div></div> <!-- WetterOnline Homepagewetter Ende //--></td> </tr> <tr><td></td><td>Dein Passwort:</td><td><input type="password" size="20" maxlength="50" name="passwort"></td><td></td></tr> <tr><td></td><td><input type="submit" value="Abschicken"></td></form><td><form action="./register.php"><input type="submit" value="Registrieren"></form></td><td></td></tr> </table> <br> <br> </body> </html>
Ich hoffe es kann mir jemand helfen das Problem zu Lösen.
Danke schon mal im Voraus. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hallo,
der erste Fehler der mir ins Auge springt, ist dein SELECT Statement:
$statement = $pdo->prepare("SELECT * FROM db_356572_3 WHERE email = :email");
Du versuchst hier etwas aus der Tabelle db_356572_3 zu selektieren. Ich gehe davon aus, dass du keine Tabelle hast die so heißt, sonder eher aus einer Tabelle User oder Benutzer oder ähnlich abfragen willst.
Ersetze also db_356572_3 durch den Namen deiner User-Tabelle und prüfe, ob es dann klappt.
lg -
das ist der Name von meiner Tabelle und in der Registrierung habe ich genau den gleichen Namen angegeben und das funktioniert auch.
<?php session_start(); $pdo = new PDO('mysql:host=91.216.248.2;dbname=db_356572_3', 'Nutzername(db)', 'Passwort(db)'); ?> <!DOCTYPE html> <html> <head> <title>Registrierung</title> <script language="JavaScript"> <!-- var interval = window.setInterval("uhr_anzeigen()", 1000); function uhr_anzeigen(){ var Datum = new Date(); var stunde = Datum.getHours(); var minute = Datum.getMinutes(); var sekunde = Datum.getSeconds(); Zeit = ((stunde < 10) ? " 0" : " ")+ stunde; Zeit += ((minute < 10) ? ":0" : ":")+ minute; Zeit += ((sekunde < 10) ? ":0" : ":")+ sekunde; Zeit += " Uhr"; document.getElementById('uhr').innerHTML=Zeit; } // --> </script> </head> <body onload="uhr_anzeigen()"> <?php $showFormular = true; //Variable ob das Registrierungsformular anezeigt werden soll if(isset($_GET['register'])) { $error = false; $vorname = $_POST['vorname']; $nachname = $_POST['nachname']; $email = $_POST['email']; $passwort = $_POST['passwort']; $passwort2 = $_POST['passwort2']; $geburtsdatum = $_POST['geburtsdatum']; $telefon = $_POST['telefon']; $adresse = $_POST['adresse']; $hausnummer = $_POST['hausnummer']; $plz = ['plz']; $ort = ['ort']; if(strlen($vorname) == 0) { echo 'Bitte den Vornamen angeben<br>'; $error = true; } if(strlen($nachname) == 0) { echo 'Bitte den Nachnamen angeben<bfr>'; $error = true; } if(!filter_var($email, FILTER_VALIDATE_EMAIL)) { echo 'Bitte eine gültige E-Mail-Adresse eingeben<br>'; $error = true; } if(strlen($passwort) == 0) { echo 'Bitte ein Passwort angeben<br>'; $error = true; } if($passwort != $passwort2) { echo 'Die Passwörter müssen übereinstimmen<br>'; $error = true; } if(strlen($geburtsdatum) == 0) { echo 'Bitte das Geburtsdatum angeben<br>'; $error = true; } //Überprüfe, dass die E-Mail-Adresse noch nicht registriert wurde if(!$error) { $statement = $pdo->prepare("SELECT * FROM user WHERE email = :email"); $result = $statement->execute(array('email' => $email)); $user = $statement->fetch(); if($user !== false) { echo 'Diese E-Mail-Adresse ist bereits vergeben<br>'; $error = true; } } //Keine Fehler, wir können den Nutzer registrieren if(!$error) { $passwort_hash = password_hash($passwort, PASSWORD_DEFAULT); $statement = $pdo->prepare("INSERT INTO user ( vorname, nachname, email, passwort, geburtsdatum, telefon, adresse, hausnummer, plz, ort ) VALUES (:vorname, :nachname, :email, :passwort, :geburtsdatum, :telefon, :adresse, :hausnummer, :plz, :ort ) " ); $result = $statement->execute(array('vorname' => $vorname, 'nachname' => $nachname, 'email' => $email, 'passwort' => $passwort_hash, 'geburtsdatum' => $geburtsdatum, 'telefon' => $telefon, 'adresse' => $adresse, 'hausnummer' => $hausnummer, 'plz' => $plz, 'ort' => $ort ) ); if($result) { echo 'Sie wurden erfolgreich registriert. Sie können sich jetzt <a href="login.php">einloggen</a>.'; $showFormular = false; } else { echo 'Beim Abspeichern ist leider ein Fehler aufgetreten<br>'; $showFormular = true; } } } if($showFormular) { ?> <h1 align="center">Herzlich willkommen bei meinem Registrierungsformular auf uebungen-till.lima-city.de</h1> <form action="?register=1" method="post"> <table width="90%" align="center"> <tr height="10%"><td width="20%"></td><td width="20%"></td><td width="10%"></td><td width="20%"></td><td width="20%"></td><td width="20%"></td></tr> <tr><td rowspan="10"><b><div id="uhr"></div></b> <a target="_blank" href="http://www.waschmaschineninfo.de/"></a><br> <a href="http://www.waschmaschineninfo.de/"><iframe src="http://www.schulferien-aktuell.de/kalender.php" name="Kalender" width="141" height="146" align="left" scrolling="no" marginheight="0" marginwidth="0" frameborder="0"> </iframe></a> <script src='https://www.ferienwiki.de/tools/widgets/calendar.js' type='text/javascript'></script> <div class='calendar_widget'></div></td><td></td><td>Vorname*:</td><td><input type="text" size="15" maxlength="30" name="vorname"></td><td></td><td rowspan="10"><!-- WetterOnline Homepagewetter Beginn //--> <div style="position:relative;background-image:url(https://st.wetteronline.de/img/p_city_hpweather/background/blau_d.gif);background-repeat:repeat-x;border:0px solid #BCBCBC;width:158px;text-align:center;font-family:arial,verdana;"><a href="http://www.wetteronline.de" target="_blank" style="text-decoration:none;color:#000;outline:none;"><img src="https://st.wetteronline.de/img/logo/wetteronline_blue_114x22.png" title="WetterOnline" alt="WetterOnline" style="border: 0; padding-top: 2px;"></a><a href="http://www.wetteronline.de/wetter/frankfurt-oder" target="_blank" style="font-size:12px;margin-bottom:2px; font-weight:bold; color:#000; text-align:center; text-decoration:none; display:block;">Das Wetter für<br />Frankfurt (Oder)</a><iframe marginheight="0" marginwidth="0" frameborder="0" scrolling="no" src="http://www.wetteronline.de/?pid=p_city_hpweather&WMO=10494&FORMAT=long&MENU=search&MAP=weathermaps" allowtransparency="true" width="158" height="275"></iframe><div style="font-size:10px;height:18px; color:#000; text-align:center;">Mehr auf <a href="http://www.wetteronline.de/" target="_blank" title="WetterOnline Homepage" style="text-decoration:none;color:#000;">wetteronline.de</a></div></div> <!-- WetterOnline Homepagewetter Ende //--></td></tr> <tr><td></td><td>Nachname*:</td><td><input type="text" size="15" maxlength="30" name="nachname"></td><td></td></tr> <tr><td></td><td>E-Mail*:</td><td><input type="email" size="15" maxlength="50" name="email"></td><td></td></tr> <tr><td></td><td>Dein Passwort*:</td><td><input type="password" size="15" maxlength="50" name="passwort"></td><td></td></tr> <tr><td></td><td>Passwort wiederholen*:</td><td><input type="password" size="15" maxlength="50" name="passwort2"></td><td></td></tr> <tr><td></td><td>Geburtsdatum*:</td><td><input type="date" size="5" name="geburtsdatum"></td><td></td></tr> <tr><td></td><td>Telefon:</td><td><input type="tel" size="15" maxlength="10" name="telefon"></td><td></td></tr> <tr><td></td><td>Straße/Hausnummer:</td><td><input type="text" size="15" maxlength="50" name="adresse"> <input type="text" size="2" maxlength="5" name="hausnummer"></td></tr> <tr><td></td><td>PLZ/Ort:</td><td><input type="text" size="2" maxlength="5" name="plz"> <input type="text" size="15" maxlength="50" name="ort"></td></tr> <tr><td></td><td></td><td></td><td></td><td></td></tr> <tr><td></td><td></td><td><input type="submit" value="Abschicken"></form></td><td><form action="./login.php"><input type="submit" value="Login"></form></td><td></td></tr> <tr><td></td><td></td><td></td><td></td><td></td></tr> </table> <?php } //Ende von if($showFormular) ?> </body> </html>
Ich habe jetzt den Namen der Tabelle, in login.php und in registry.php den Namen in "user" geändert, aber es funktioniert immer noch nicht
Beitrag zuletzt geändert: 23.9.2016 14:48:28 von uebungen-till -
Hast Du denn überhaupt eine schon eine Tabelle erstellt? Am einfachsten geht das über PHPMyAdmin (https://pma.lima-city.de). Der Name beim Verbinden (Datenbankname) und der Name der Tabelle, den Du beim SELECT Statement benötigst, sind zwei verschiedene Dinge, mir scheint, als sei Dir das nicht ganz klar.
-
Abgesehen vom von davidlw gesagten, würde ich dir raten, mal zu prüfen ob dein Anmeldescrpt für neue Benutzer diese auch in die Datenbank schreibt. (ich verstehe nicht viel von PHP-Script, aber wenn nix abgelegt wird, klappt es auch nicht mit der Anmeldung)
-
Hey,
was mir als erstes auffällt ist, dass Du eine IP als Host genommen. Ich weiß zwar nicht, ob diese auch direkt zu Lima verbindet, ich würde aber eher die nutzen, die bei der auch in der Verwaltung unter "MySQL-Datenbanken" angegeben ist.
Dann müsstest Du, wie davidlw schon gesagt hat, prüfen ob Du die Tabelle, in die Du schreiben und auslesen möchtest, existiert. Und alle Werte, die Du befüllen möchtest, auch festgelegt sind. Mit PHPMyAdmin könntest Du auch immerhin prüfen, ob sich die Daten immerhin beschreiben lassen. Normalerweise sollte er aber auch weitere Fehler, falls noch welche in deinem PHP-Code sein sollten, ausgeben. (Sofern Du es aktiviert hast.) -
torominogames schrieb:
Hey,
Normalerweise sollte er aber auch weitere Fehler, falls noch welche in deinem PHP-Code sein sollten, ausgeben. (Sofern Du es aktiviert hast.)
Auch wenn das üblicherweise gelöscht wird, wiese ich nochmal daurauf hin, das der Code des TE PAssagen wier:
echo 'Du wurdest erfolgreich registriert. <a href="login.php">Zum Login</a>';
aufweisst.
-
@strlcp
Mir ging es jetzt nicht um eine grobe Fehlermeldung, die man dann selbst ausgibt, wenn die Registrierung fehlgeschlagen ist, oder erfolgreich war. Sondern darum, dass man individuelle Fehler im Code ausfindig machen kann. Damit könnte man z.B. sehen, falls ein Wert den man aus der Datenbank auslesen will, gar nicht existiert. -
Danke für die vielen Antworten
Also die Tabelle, die ich angegeben habe existiert und die Daten, die abgefragt werden, werden auch in der Tabelle eingetragen -
Da Vorschläge zu Thema "php debugging" hier gelöscht worden sind, biete ich nochmal an, mich des Problems intensiver anzunehmen; immerhin ist ja nicht mehr so viel passiert hier im Thread, und das Script läuft ja irgendwie unter der Überschrift "lernen".
-
Hab das Problem gelöst bekommen
Das Problem war ein kleiner Fehler in der Groß-klein-Schreibung
Trotzdem Danke für die Antworten -
ich sehe hier das alle angaben in pdo gemacht werden, sollte man nur noch pdo verwenden oder kann ruhig in msqli geschrieben werden ?
-
Je nachdem wie man seine Queries schreibt (MSSQL kann z.B. kein LIMIT) macht PDO durchaus Sinn.
Dadurch ergibt sich der Vorteil dass z.B. bei der Umstellung von sqlite auf MySQL einfach nur der Verbindungsstring geändert werden muss. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage