Session Login-Script Fehlermeldung !

D-LuX

Erfahrenes Mitglied
Aktuelles Script:

Login funktioniert mit richtigen Daten werde ich auf die index zurück geleitet!
(header('Location: http://server/index.htm');) , aber
folgendes macht er nicht:

PHP:
if ($row['user_nick'] == $_POST['user_nick'] && $row['user_passwort'] == $_POST['user_passwort'])
  {
    $status = "Login korrekt! Hallo " . $row['user_nick'];
    $user_id = $_REQUEST['user_id'];
    $_SESSION['user_id'] = $user_id;
    $user_nick = $_REQUEST['user_nick'];
    $_SESSION['user_nick'] = $user_nick;
    header('Location: http://server/index.htm');
  }
  else 
  {
    $status = "Falsche Login-Daten oder Passwort falsch";
  }
}  
else 
{
  $status = ($_POST['login']) ? 'Bitte korrekte Daten angeben!' : 'Bitte nochmal checken!';
}

und das auch nicht ..
PHP:
<?PHP
session_start (); 

if (!isset($_SESSION['user_id']) || empty($_SESSION['user_id']))
{
  header("location: http://server/login.php");
  exit;
}
else 
{
//Dieser Bereich ist schon geschützt
echo "Hallo" . $_SESSION['user_nick'];
}
?>

Also es wird kein "Begrüßungstext" ausgegeben und bei Falscheingabe erscheint auch keine Fehlermeldung!






Ursprünglicher Thread-Start ..Fehler bereits behoben!

Hallo ;)

Bin jetzt dabei mein Login-Script zu schreiben und stoße auf folgende unschöne Meldung:

Warning: Unknown(): Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0


Register Globals sollten off sein, wie ich bisher in Erfahrung bringen konnte und müssen sie auch bleiben!
Also register_globals sind "Off"
session.bug_compat_42 "On"
session.bug_compat_warn "On"

Also alles genau so, wie es nicht sein sollte ..das kann aber doch nicht sein?!

Gibt es evtl. eine andere Möglichkeit? Programmiertechnisch?
Hat jemand vielleicht schonmal erfahrungen mit diesem Problem gesammelt?

Hier das Script:

PHP:
          <form action = '".$_SERVER['PHP_SELF']."' method='post'>
           Benutzername:   <p><input type='text' name='user_nick'> 
           <br>
           Passwort:   <p><input type='password' name='user_passwort'>
           <br>
           <input type='submit' name='login' value='login'>
          </form>

//ab hier dann der php-Teil!

if ($_POST[user_nick] && $_POST[user_passwort])
{

 $host = "xxx";
        $benutzer = "xxx";
        $password = "xxx";

        $db = mysql_connect($host,$benutzer,$password);
        mysql_select_db("xxx");  
   

        $user_nick     = $_POST['user_nick'];
        $user_passwort = $_POST['user_passwort'];


        $sql="SELECT * FROM users 
              WHERE user_nick = '$user_nick' and user_passwort = '$user_passwort'";
        
        $result = mysql_query($sql);
        $row    = mysql_fetch_assoc($result);
        
        
           if ($row[user_nick] == $_POST[user_nick] && $row[user_passwort] == $_POST[user_passwort])
            {
             $status = "Login korrekt! Hallo '.$row[user_nick]'";
             $_SESSION['user_id']   = $row[$user_id];
             $_SESSION['user_nick'] = $row[$user_nick];
            }
              else 
               {
                 $status = "Falsche Login-Daten oder Passwort falsch";
               }
 }  
  else 
   {
    $status = ($_POST['login']) ?'Bitte korrekte Daten angeben!':
    'Bitte nochmal checken!';
   }
 
Zuletzt bearbeitet:
[phpf]session_start[/phpf] am Anfang des Dokuments und an allen wo die Sessions verfügbar sein sollen? Und ich glaube, dass du hier ein kleinen Fehler hast:
PHP:
$_SESSION['user_id'] = $row[$user_id];
$_SESSION['user_nick'] = $row[$user_nick]; 
// sollte doch eher so sein...
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['user_nick'] = $row['user_nick']; 

// und...
if ($_POST['user_nick'] && $_POST['user_passwort'])
// anstelle von (wobei das nur ein Schönheitsfehler ist)
if ($_POST[user_nick] && $_POST[user_passwort])
 
Also session_start () hab ich und den Rest jetzt auch mal abgeändert.

Fehler bleibt derselbe ..

PHP:
        $sql="SELECT * FROM users 
              WHERE user_nick = '$user_nick' and user_passwort = '$user_passwort'";
        
        $result = mysql_query($sql);
        $row    = mysql_fetch_assoc($result);
        
        
           if ($row['user_nick'] == $_POST['user_nick'] && $row['user_passwort'] == $_POST['user_passwort'])
            {
             $status = "Login korrekt! Hallo '.$row[user_nick]'";
             $_SESSION['user_id']   = $row['user_id'];
             $_SESSION['user_nick'] = $row['$user_nick'];
            }
              else 
               {
                 $status = "Falsche Login-Daten oder Passwort falsch";
               }
 }  
  else 
   {
    $status = ($_POST['login']) ?'Bitte korrekte Daten angeben!':
    'Bitte nochmal checken!';
   }
 
ich würde auf keinen Fall $_SESSION benutzen, denn das is fehlerhaft und reagiert unter bestimmten Bedingungen sehr seltsam.
Bau dir lieber dein eigenes Session-Management, das is weitaus effektiver, sicherer und vermeidet auch solche Fehler.

Übrigens: PHP != programmieren, PHP == Scriptsprache ;-)
 
Ja Scriptsprache ;) okaaay....*g*

Na, wie würdest du es dann lösen?
Bin noch nicht so fit in php ..
 
gegen Bezahlung kann ich eine hochsichere Lösung anbieten. Sollte aber niemand jemals benötigen, Sessions selbst zu erstellen ist kinderleicht:

cookie setzen, mit Lebensdauer X und bestimmtem, sich dauernd änderndem Inhalt.

Während des Scriptablaufs ständig auf dieses Cookie und den Inhalt überprüfen, wenn erfolgreich, dann neu setzen .... usw
 
kleinen schnipsel gibts, zum auf die Spur kommen:
PHP:
ob_start();
if(isset($_POST['ausloggen']) && $_POST['ausloggen'] != "") {
setcookie("benutzername", FALSE, time());
setcookie("salt", FALSE, time()); 
ob_end_flush();
 
Hey mAu ;)

dankeschön, Fehlermeldung ist weg ;)

login.php
PHP:
session_start ()

if ($_POST[user_nick] && $_POST[user_passwort])
{

        $host = "xxx";
        $benutzer = "xxx";
        $password = "xxx";

        $db = mysql_connect($host,$benutzer,$password);
        mysql_select_db("xxx");  

   

        $user_nick     = $_POST['user_nick'];
        $user_passwort = $_POST['user_passwort'];


        $sql="SELECT * FROM users 
              WHERE user_nick = '$user_nick' and user_passwort = '$user_passwort'";
        
        $result = mysql_query($sql);
        $row    = mysql_fetch_assoc($result);
        
        
           if ($row['user_nick'] == $_POST['user_nick'] && $row['user_passwort'] == $_POST['user_passwort'])
            {
             $status = "Login korrekt! Hallo '.$row[user_nick]'";

             $user_id =$_REQUEST['user_id'];
             $_SESSION['user_id']=$user_id;
             
             $user_nick =$_REQUEST['user_nick'];
             $_SESSION['user_nick']=$user_nick;
             
             //$_SESSION['user_id']   = $row['user_id'];
             //$_SESSION['user_nick'] = $row['$user_nick'];
            }
              else 
               {
                 $status = "Falsche Login-Daten oder Passwort falsch";
               }
 }  
  else 
   {
    $status = ($_POST['login']) ?'Bitte korrekte Daten angeben!':
    'Bitte nochmal checken!';
   }

Jetzt muss ich mal schauen, weil das Login und die Begrüßung nicht geht!

PHP-Teil der Index:

PHP:
<?PHP
session_start (); 

if (!$_SESSION['user_id'])
{
header("location: http://server-url/login.php");
exit;
}
//Dieser Bereich ist schon geschützt
echo "Hallo" .$_SESSION['user_nick'];
?>

Fällt hier was auf?

Das wäre auch mein ganzes Script!
 
Zuletzt bearbeitet:
Zurück