Seite 1 von 1

Hilfe bei einen Login-Script

Verfasst: 16.11.2006 14:19
von wolf-gang
Leider habe ich hier einen Fehler:

Code: Alles auswählen

<?php
$verbindung = mysql_connect("localhost", "mydb" , "mypw")
or die("Verbindung zur Datenbank konnte nicht hergestellt werden");
mysql_select_db("mytb") or die ("Datenbank konnte nicht ausgewählt werden");


$abfrage = "SELECT username, email FROM forum_user WHERE username LIKE '$username' '$email'";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->username == $username)
    {
    $_SESSION["username"] = $username or["email"] = $email;
    echo "Login erfolgreich. <br> <a href=\"home.php\">Homeportal</a>";
    }
else
    {
    echo "Benutzername und/oder eMail waren falsch. <a href=\"memberlogin.htm\">Login</a>";
    }

?>
hier die memberlogin.htm:

Code: Alles auswählen

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Dein Username*</title>
</head>

<body bgcolor="#2b2b3a">
<form action="login.php" method="post">
<p align="center"><font color="#FFFFFF"><b>Dein Username:</b><br>
<input type="text" size="24" maxlength="50"
name="username"><br><br>

<b>Deine eMail:</b></font><br>
<input type="email" size="24" maxlength="50"
name="email"><br>

<input type="submit" value="Login">
</p>

</form>
</body>

</html>
hier die home.php

Code: Alles auswählen

<?php
session_start();
<?php
session_start();
?>

<?php
if(!isset($_SESSION["username"]))
   {
   echo "Bitte erst <a href=\"memberlogin.html\">einloggen";
   exit;
   }
?> 
Leider geht das nicht. Es wird nicht richtig in der Datenbank geprüft
und schreibt, obwohl ich in die memberlogin, was falsches eingegeben habe, kommt keine Falscheingabe sondern das:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in \htdocs\testphp\login.php on line 13
Line 13 sagt:

Code: Alles auswählen

$row = mysql_fetch_object($ergebnis);
Login erfolgreich.
Home ( link zu Home)

Für Hilfe wäre ich sehr dankbar.

Verfasst: 16.11.2006 15:14
von Banger
Das SQL-Statement sieht per se erstmal ungültig aus:

Code: Alles auswählen

$abfrage = "SELECT username, email FROM forum_user WHERE username LIKE '$username' '$email'";
Was hat $email dort zu suchen? Nüchts :)

Das würdest Du abfangen, wenn Du anstatt einfach mit

Code: Alles auswählen

$ergebnis = mysql_query($abfrage);
den Request abzufeuern, den Erfolg der Abfrage überprüfen würdest:

Code: Alles auswählen

$ergebnis = mysql_query($abfrage, $verbindung) or die('Ohjeohje: '.mysql_error($verbindung));

Verfasst: 16.11.2006 15:30
von wolf-gang
Banger hat geschrieben:Das SQL-Statement sieht per se erstmal ungültig aus:

Code: Alles auswählen

$abfrage = "SELECT username, email FROM forum_user WHERE username LIKE '$username' '$email'";
Was hat $email dort zu suchen? Nüchts :)

Das würdest Du abfangen, wenn Du anstatt einfach mit

Code: Alles auswählen

$ergebnis = mysql_query($abfrage);
den Request abzufeuern, den Erfolg der Abfrage überprüfen würdest:

Code: Alles auswählen

$ergebnis = mysql_query($abfrage, $verbindung) or die('Ohjeohje: '.mysql_error($verbindung));
Ich möchte den Usernamen und eMail abfragen, wenn das stimmt, soll
auf die nächste Seite geloggt werden. Deshalb habe ich eMail dort stehen.

Verfasst: 16.11.2006 18:12
von Banger
wolf-gang hat geschrieben:Ich möchte den Usernamen und eMail abfragen, wenn das stimmt, soll
auf die nächste Seite geloggt werden. Deshalb habe ich eMail dort stehen.
Dann mutt dat so aussehen:

Code: Alles auswählen

$abfrage = "SELECT username, email FROM forum_user WHERE username = '$username' AND email = '$email'";
Tipp: lern SQL ;-)

BTW: Du hast $username und $email sauber escaped, um SQL-Injections zu vermeiden?

Verfasst: 16.11.2006 21:10
von wolf-gang
Banger hat geschrieben:
wolf-gang hat geschrieben:Ich möchte den Usernamen und eMail abfragen, wenn das stimmt, soll
auf die nächste Seite geloggt werden. Deshalb habe ich eMail dort stehen.
Dann mutt dat so aussehen:

Code: Alles auswählen

$abfrage = "SELECT username, email FROM forum_user WHERE username = '$username' AND email = '$email'";
Tipp: lern SQL ;-)

BTW: Du hast $username und $email sauber escaped, um SQL-Injections zu vermeiden?
Sorry, laut Datenbank heisst es nicht username, sondern login-mein Fehler.
Aber es bringt noch folgenden Fehler:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in\htdocs\testphp\login.php on line 12
Login erfolgreich.
Home
Linie 12 bis Ende lauten:

Code: Alles auswählen

$row = mysql_fetch_object($ergebnis);

if($row->login == $login)
    {
    $_SESSION["username"] = $login;
    $_SESSION["email"] = $email;
    echo "Login erfolgreich. <br> <a href="geheim.php">Home</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href="login.html">Login</a>";
    }

?>
Es schreibt immer Login erfolgreich, obwohl ich auch falsches eingegeben habe.
Msql lernen ja, aber ich bin froh, dass ich etwas mit PHP gelernt bzw. angeeignet habe mit Hilfe diverse Foren und hier. Ansonsten kannte ich nur rein Html und etwas Java.
Ich bin allen sehr sehr dankbar für Eure Hilfen!! :grin: