Kleines Problemchen,...

Sergo

Erfahrenes Mitglied
Hallo,

also ich hoffe ich bin im richtigen Forum!

Hab ein einfaches Login-System mit php und einer Datenbank programmiert, jedoch funktioniert es mit der php-Version 4.4.9 einwandfrei, jedoch mit dem upgrade auf 5.2.4 leider nicht mehr.

Fehlermeldung: Notice: Undefined variable: email in /homepages/login.php on line 15

Code ab Zeile 15:
PHP:
$query = mysql_query("SELECT * FROM users WHERE email='$email'");
    $numrows = mysql_num_rows($query);
    if ($numrows!=0)
    {
        while ($row = mysql_fetch_assoc($query))
        {
            $dbemail = $row['email'];
            $dbpassword = $row['password'];
            $activated = $row['activated'];
            
            if ($activated=='0')
                die("<center>Your account is not yet activate! Please check your email.</center>");



Obwohl die Variable definiert ist. Die Anmeldung mit Name, Email, Passwort funktioniert einwandfrei jedoch wenn jemand sich einloggen möchte, passiert leider nichts! Hat jemand vielleicht einen Tipp für mich?

Danke im Voraus
 

threadi

Erfahrenes Mitglied
Das ist keine Fehlermeldung sondern nur eine Notiz - kein Fehler.

Ich sehe jedoch auch nichts was überhaupt dazu führen sollte, dass "email" nicht deklariert wird. Allerdings würde ich folgende Zeile anders schreiben:
PHP:
$query = mysql_query("SELECT * FROM users WHERE email='".mysql_escape_string($email)."'");
 

Sergo

Erfahrenes Mitglied
Danke für deine Antwort, ich hab mal die Zeile geändert, jedoch ohne Erfolg!

Ich poste mal den ganzen Code, obwohl er einfach ist, hat er bislang wie geschrieben funktioniert mit der alten php-Version! Die neue macht mit diesem Code nur Kopfschmerzen!

Code:

PHP:
<?php
error_reporting(E_ALL);

$connect = mysql_connect("xxx","xxx","xxx") or die("Couldn't connect!");
mysql_select_db("xxx") or die("Couldn't find db");


session_start();

$username = $_POST['email'];
$password = $_POST['password'];

if ($username&&$password)

{
     
    $query = mysql_query("SELECT * FROM users WHERE email='".mysql_escape_string($email)."'"); 
    $numrows = mysql_num_rows($query);
    if ($numrows!=0)
    {
        while ($row = mysql_fetch_assoc($query))
        {
            $dbemail = $row['email'];
            $dbpassword = $row['password'];
            $activated = $row['activated'];
            
            if ($activated=='0')
                die("<center>Your account is not yet activate! Please check your email.</center>");
                
            
            
            }
            
            // check to see if they match!
            if ($email==$dbemail&&$password==$dbpassword)
            
            {
                header("Location: http://www.meineseite.at/galleryc/member.php");
                $_SESSION['username']=$username;
                }
                else echo "<center>incorrect password!</center>";
            
        }
        else
        die("<center>That user doesn't exist!</center>");

    
}
else
die("Please enter a username and password");


?>

wäre super wenn du mir helfen könntest :)
 

threadi

Erfahrenes Mitglied
Die Meldung bezieht sich auf

PHP:
$username = $_POST['email'];

welches beim Laden der Seite auch ohne Abschicken per POST ausgeführt wird. Da weder $_POST noch die Variable in dem Array existieren, gibt es die Notiz.

Du hast 2 Möglichkeiten:
a) Unterdrücke Notizen per error_reporting().
b) Verbessere deinen Code und prüfe, ob $_POST existiert, bevor Du irgendwas daraus ausliest.
 

Sergo

Erfahrenes Mitglied
Danke!

Mit der Unterdrückung ist das OK, jedoch werde ich nicht wie ältere Version weitergeleitet auf members.php. Es steht lediglich : That user doesn't exist!

Mir kommt es vor, dass er die Funktionen überfliegt, weil es php5 ist! könnte das richtig sein? :)
 

Alex_T

Erfahrenes Mitglied
Grüße,

da wird nur aufgrund von Versionsnummern nichts überflogen...das wäre ja mal was :D.
Das geht einfach in den Else-Zweig, da deine Bedingung(en) nicht erfüllt worden.

Ich könnte mir auch gut vorstellen, dass das hier:

PHP:
$username = $_POST['email'];

mal so ausgesehen hat:

PHP:
$email = $_POST['email'];

oder etwa nicht ;)
($username wird nämlich nirgends im Skript verwendet, wenn ich mich jetzt nicht verschaut habe - $email aber)

EDIT:
Ja wird doch genutzt, wobei die Verbindung von $username und E-Mail immer noch Rätsel aufwirft.
 

Neue Beiträge