Probleme mit PHP Sessions

jjx

Grünschnabel
Hallo Leute,

brauche ganz dringend eure Hilfe, habe ein Problem mit den Sessions in PHP. Der User gibt seine Zugangsdaten ein, die Daten werden in der DB abgeglichen und der Zugang zur Hauptseite eigentlich gewährt. Was nun das Problem ist, ich bekomme zwar keine Fehlermeldung das die Zugangsdaten falsch sind, werde aber auch nicht zu der internen Seite weitergeleitet.

Habe das "Login mit Sessions" Tutorial benutzt.

Wer könnte mir da einen Tipp geben, gerne wäre ich auch bereit meinen Code zu schicken !
 
glaub das is das mindeste wenn man dir helfen soll -.-
--> Code hier rein ^^
--> eventuell auch link ... kenns bei mir, da geht es mit Firefox und der IE spinnt nur rumm
 
Also dann:

schaut euch mal die seite an: http://mars.iuk.hdm-stuttgart.de/~te014

Das ist die Datei index.php:

PHP:
<?php session_start();

?>

<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  
 </head>

  
  <body>

    <h1><p align=center>Willkommen auf unserer Seite!<p></h1>
     
</br>

<center>
<h2>Login</h2>
  <form action="login.php" method="post">
  <table border="0" cellpadding="3" cellspacing="0">
  <tr>
  <td align="right">Benutzer:</td>
  <td><input type="text" name="benutzer"></td>
  </tr>
  <tr>
  <td align="right">Passwort:</td>
  <td><input type="text" name="passwort"></td>
  </tr>
  <tr>
  <td></td>
  <td><input type="submit"></td>
  </tr>
  </form>
  </center>   
  
  
   </body>
   </html>

<?php  
if (isset ($_REQUEST["fehler"]))  
{  
  echo "Die Zugangsdaten waren ungültig.";  
}  
?>

Dann kommt die login.php:

PHP:
<?php  
// Session starten 
session_start(); 

// Datenbankverbindung aufbauen  
$connectionid = mysql_connect ("localhost","te014", "**********");  
if (!mysql_select_db ("s-te014", $connectionid))  
{  
  die ("Keine Verbindung zur Datenbank");  
}  


$sql = "SELECT ".  
    " Nachname, Vorname ".  
  "FROM ".  
    "user ".  
  "WHERE ".  
    "(benutzer like '".$_REQUEST["benutzer"]."') AND ".  
    "(Passwort = '".md5 ($_REQUEST["passwort"])."')";  

$result = mysql_query ($sql);  

if (mysql_num_rows ($result) > 0)  
{  
  // Benutzerdaten in ein Array auslesen.  
  $data = mysql_fetch_array ($result);    

  // Sessionvariablen erstellen und registrieren  
  
  $_SESSION["user_id"] = $data["id"];
  $_SESSION["user_nachname"] = $data["nachname"];  
  $_SESSION["user_vorname"] = $data["vorname"];  


  header ("Location: intern.php ");  
}   
else  
{  
  header ("Location: index.php?fehler=1");  
}  

?>

intern.php:

PHP:
<?php session_start();

include ("checkuser.php");  
?>  
<html>  
<head>  
  <title>Interne Seite</title>  
</head>  
<body>  
  ID:<?php echo $_SESSION["_user_id"]; ?><br>
  Nachname: <?php echo $_SESSION["user_nachname"]; ?><br>  
  Vorname: <?php echo $_SESSION["user_vorname"]; ?>  
  <hr>  
  <a href="logout.php">Ausloggen</a>  
</body>  
</html>

checkuser.php:

PHP:
<?php  

 
if (!isset ($_SESSION["user_id"]))  
{  
  header ("Location: index.php");  
}  
?>

und zum Schluss die Logout.php:

PHP:
<?php  

 
if (!isset ($_SESSION["user_id"]))  
{  
  header ("Location: index.php");  
}  
?>

Das Problem ist, das die Zugangsdaten korrekt sind und auch bestätigt werden, bei der Eingabe nur die Weiterleitung zur intern.php nicht erfolgt.

Danke für eure Hilfe !
 
Code:
$sql = "SELECT ".  
    " Nachname, Vorname, id ".  
  "FROM ".  
    "user ".  
  "WHERE ".  
    "(benutzer like '".$_REQUEST["benutzer"]."') AND ".  
    "(Passwort = '".md5 ($_REQUEST["passwort"])."')";


Code:
$_SESSION["user_id"] = $data["id"];


$data['id'] hat keinen Wert, weil der Query nur eine Tabelle mit Nachname / Vorname zurückgibt.

Darüber hinaus solltest du auf Klein/Großschreibung achten,
Nachname ungleich nachname

Grüße
player1
 
Zuletzt bearbeitet:
Hallo,
meiner Meinung nach muss in die Datei checkuser.php nicht
PHP:
header ("Location: index.php");
sondern
PHP:
header ("Location: intern.php");

du leitest den User nämlich auf die LoginformularSeite wenn ich das richtig sehe.

MfG
hab1cht
 
Hallo,
meiner Meinung nach muss in die Datei checkuser.php nicht
PHP:
header ("Location: index.php");
sondern
PHP:
header ("Location: intern.php");

du leitest den User nämlich auf die LoginformularSeite wenn ich das richtig sehe.

MfG
hab1cht

Und ist auch richtig so.
Die checkuser.php prüft ja auch ob die Sessions gesetzt wurde. Ist sie nicht gesetzt, wird der User auf die index.php geleitet.
Ist sie gesetzt, passiert erstmal nichts.
 
Wenn die Session nicht gesetzt ist dann könnte man doch den jenigen auffordern sich neu einzuloggen :)
 
Tut er doch, weil der Login auf der index.php ist. Einen Hinweis zu senden, fände ich unnötig.
 
Zurück