gelöst:Problem beim Login (keine if berücksichtigung)

PHP:
<?php
//login_script.php
    include "config.php";

    if($_POST['action'] == 'login') {
    session_unset();
    session_start();

    $error = '';
    if (empty ($_POST['name'])) { $error = "Sie müssen einen Benutzernamen angeben";
    } elseif (preg_match("/[^a-zA-Z0-9\-_]/",$_POST['name'])) $error = 'Dein Username darf nur aus Buchstaben , Zahlen &qout;-&qout; und &qout;_&qout; bestehen';
    if (empty ($_POST['password'])) { $error = "Sie müssen Ihr Passwort eingeben"; 
    } elseif (preg_match("/[^a-zA-Z0-9\-_]/",$_POST['password'])) $error = 'Dein Passwort darf nur aus Buchstaben , Zahlen &qout;-&qout; und &qout;_&qout; bestehen';
     if($error == '') {
        mysql_connect($db_host,$db_user,$db_pass) or die(mysql_error());
        mysql_select_db($db_name) or die(mysql_error());

        $sql = 'SELECT
                       ID,Name,Password
                FROM 
                       users 
                WHERE 
                       Name="$name"';
        
        $result = mysql_query($sql);
        $user = mysql_fetch_assoc($result);

        if(!isset($user['Name'])) { $error = "Benutzername nicht gefunden"; }
        if($user['Password'] != md5($_POST['password'])) { $error = "Sie haben das falsche Passwort eingegeben"; }

        if($error == '') {
            /*
             * Hier her gehört jetzt das Session erstellen...
             */
            session_unset();
            session_name('sid');
            session_start();

            $_SESSION['userid']   = $user['ID'];
            $_SESSION['username'] = $user['Name'];

            /*
             * Hier kommt jetzt die Erfolgsmeldung und die automatische Weiterleitung zum Game hin
             */
            echo "Sie haben sich erfolgreich eingeloggt!";
            echo "Hier geht weiter <a href='link.php'>zum Spiel</a>";
            die();
        }
    }
}

?>


<?php if($error != '') {
  
    echo "<br>\n";
    echo "Beim Login ist ein Fehler aufgetreten:<br>\n";
    echo $error;
    
}
/*
 * Ende der login.php
 * Start der logout.php
 *
 *
 *session_unset();
 *session_destroy();
 *echo "Sie haben sich erfolgreich ausgeloggt";
 *
 * Ende der logout.php
 * Start von allgemeinen Informationen
 */
 ?>
Dieses Script funktioniert soweit nicht , indem es obwohl nichts eingegeben wurde als ersten Fehler "Sie müssen Ihr Passwort eingeben" ausgibt(nicht "Sie müssen einen Benutzernamen angeben"), des weiteren ist obwohl ich das richtige Passwort eingebe , kommt die Fehlermeldung ich , dass ich das falsche Passwort eingegeben hätte.
Ihr könnts gerne selber ausprobieren unter diesem Link
bitte keine beschwerden über das Design dadran wird noch gearbeitet (ihr könnt euch auch gerne Registrieren um zu testen ob das mit dem Passwort geht).

Falls ihr aber schon so Fehler bei diesem Script findet auch bescheid sagen.

Mit freundlichen Grüßen
0wnZ
 
also

1.
$sql = 'SELECT
ID,Name,Password
FROM
users
WHERE
Name="$name"';
FALSCH richtig so:
PHP:
        $sql = "SELECT
                       ID,Name,Password
                FROM 
                       users 
                WHERE 
                       Name='$name'";

2.wie kann man eine session_unseten wenn sie noch net gestartet wurde? das erstmal anders rum und wieso bitte 2x session_start und unset einmal ganz am Anfang reicht

EDIT: der Wert von $name wird auch nicht gestzt
 
Jo gute idee hilfr leider auch nit
PHP:
<?php $sql = "SELECT
                       ID,Name,Password
                FROM 
                       users 
                WHERE 
                       Name='.$name.'"; ?>
so müsste es aussehen hab aba ^^
ich hab $name garnit definiert ich depp 
:P
 
Es ist logisch, dass immer die fehlermeldung "Sie müssen Ihr Passwort eingeben" ausgegeben wird, wenn man weder usernamen noch passwort angibt, da die variable $error wieder neu definiert bzw. "überschrieben" wird

das würd ich so machen

PHP:
<?php

$error = '';
    if (empty ($_POST['name'])) { $error .= "Sie müssen einen Benutzernamen angeben <br>";
    } elseif (preg_match("/[^a-zA-Z0-9\-_]/",$_POST['name'])) $error .= 'Dein Username darf nur aus Buchstaben , Zahlen &qout;-&qout; und &qout;_&qout; bestehen<br>';
    if (empty ($_POST['password'])) { $error .= "Sie müssen Ihr Passwort eingeben<br>"; 
    } elseif (preg_match("/[^a-zA-Z0-9\-_]/",$_POST['password'])) $error .= 'Dein Passwort darf nur aus Buchstaben , Zahlen &qout;-&qout; und &qout;_&qout; bestehen';

?>

Edit:

probiers mal so

PHP:
<?php 

$sql = "SELECT
ID,Name,Password
FROM 
users 
WHERE 
Name= '".$_POST['name']."'";

 ?>
 
haut nich hin
dann kommt
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /usr/export/www/hosting/maofem/login_script.php on line 22
 
Also wenn du den code wirklich zeichen für zeichen übernommen hast

PHP:
<?php 

$sql = "SELECT
ID,Name,Password
FROM 
users 
WHERE 
Name = '".$_POST['name']."'";

 ?>

dürfte da eigentlich kein parse error angezeigt werden
 
genau so
PHP:
  $sql = " SELECT
                       ID,Name,Password
                FROM 
                       users 
                WHERE 
                       Name = ' " .$_POST['name'] " ' " ;
und es gegt nit ^^ kannst ja selbst nachschauen einfach den oben geschrieben Link klicken

ich se grad hab den punkt vergessen ^^ srü
 
Falls es immernoch nicht funktioniert, vergewissere dich mal, dass der mysql-spaltenname wirklich "Password" lautet (groß- und kleinschreibung beachten) und, dass bei der Registrierung das Passwort auch wirklich mit der md5() Funktion verschlüsselt in die DB eingetragen wird ..
 
Zurück
Oben