Hallo. Dieses Login Script bekommt eine email und eine Password. Von diesem Formular:
Hier ist das Formular zur Auswertung.
Ein Eintrag in der Datenbank ist Vorhanden. Die Tabelle hat 28Zeilen, aber ich brauche nur 3Stück. Und zwar Email, Password und okey. Nur wenn email = email, password = password und okey = 1 ist soll der login funktionieren.
Mein Problem ist gerade aber, das der Login immer funktioniert, egal was ich im Formular eingebe. Einzig und alleine die Filterung von Sonderzeichen funktioniert.
Kann sich jemand vorstellen warum das nicht klappt?
MfG
HTML:
<form method="post" action="http://<?php echo $url ?>/ressources/phpscripts/login.php">
<table>
<tr><td>Benutzername:</td>
<td><input type="text" name="email" /></td>
</tr><tr><td>Passwort:</td>
<td><input type="password" name="password" /></td></tr>
<tr><td>Login</td><td><input type="submit" value="Anmelden" />
</td></tr></table></form>
Hier ist das Formular zur Auswertung.
PHP:
<?php
$db_link = mysql_connect (**, **, **);
$db_sel = mysql_select_db( vovvel )
or die("Auswahl der Datenbank fehlgeschlagen");
$sql = "SELECT * FROM Produktinfo";
$db_erg = mysql_query( $sql );
if ( ! $db_erg ){
die('Ungültige Abfrage: ' . mysql_error());
}
while ($zeile = mysql_fetch_array( $db_erg, MYSQL_ASSOC))
{
$url = $zeile['Url'] ;}mysql_free_result( $db_erg );
session_start();
if (isset($_POST['email']) && isset($_POST['password'])){
$email = $_POST['email'];
$password = $_POST['password'];
$db_conn = new mysqli('**', '**', '**', '**');
if (mysqli_connect_errno()) {
echo 'Verbindungsaufbau zur Datenbank fehlgeschlagen:'.mysqli_connect_error();
exit();
}
if(!eregi("^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$",$email)) {
echo "<font color=#FF0000>Ungültige Email-Adresse</font>";
exit;
}
if(!preg_match("/^[a-zA-Z._0-9 ]{1,30}$/",$password))
{
echo 'Du verwendest unerlaubte Sonderzeichen im Password ';
exit();
}
$db_conn = new mysqli('**', '**', '**', '**');
if (mysqli_connect_errno())
{
echo 'Verbindungsaufbau zur Datenbank fehlgeschlagen:'.mysqli_connect_error(); exit();
}
$query = 'select * from user '
."where email='$email' "
." and password='$password' "
." and okey = 1";
$result = $db_conn->query($query);
if ($result->num_rows) {
$_SESSION['valid_user'] = $email;
}
$db_conn->close();}
if (isset($_SESSION['valid_user'])) {
header ("Location: http://".$url."/after-login/index.php");
}
else { if (isset($email)) {
echo 'Ihre Anmeldung ist fehlgeschlagen. Ein Möglicher Grund hierfür ist, dass sie noch nicht Freigeschaltet worden sind! Oder sie haben ihre Email-Adresse oder ihr Password falsch eingegeben.<br />'; }
else {
echo 'Sie sind nicht angemeldet.<br />'; }
// Anmeldeformular anzeigen
}?>
Ein Eintrag in der Datenbank ist Vorhanden. Die Tabelle hat 28Zeilen, aber ich brauche nur 3Stück. Und zwar Email, Password und okey. Nur wenn email = email, password = password und okey = 1 ist soll der login funktionieren.
Mein Problem ist gerade aber, das der Login immer funktioniert, egal was ich im Formular eingebe. Einzig und alleine die Filterung von Sonderzeichen funktioniert.
Kann sich jemand vorstellen warum das nicht klappt?
MfG