Problem mit MYSQL und SESSIONS [Loginscript]

Mew

Erfahrenes Mitglied
Hallo ich habe ein kleines Loginscript mit SESSIONS.

login.php :

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

// Datenbankverbindung aufbauen 
include("/inc/config.php");

$sql = mysql_query("SELECT ID, Email, Nickname, Nachname, Vorname, Rang FROM benutzerdaten WHERE (Nickname like '".$_REQUEST["name"]."') AND (Kennwort = '".md5 ($_REQUEST["pwd"])."')"; 

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

  // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["ID"]; 
  $_SESSION["user_email"] = $data["Email"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"];  
  $_SESSION["user_rang"] = $data["Rang"];

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

intern.php:

PHP:
<body>
<table id="welcome" border="0">
<tr>
<td><p>Herzlich Willkommen <strong><?php echo $_SESSION["user_vorname"];?> <?php echo $_SESSION["user_nachname"]; ?></strong>!</p><br></td>
</tr>
  <tr>
    <td>BenutzerId:</td>
    <td><?php echo $_SESSION["user_id"]; ?></td>
  </tr>
  <tr>
    <td>Nickname:</td>
    <td><?php echo $_SESSION["user_nickname"]; ?><br> </td>
  </tr>
      <tr>
    <td>Email:</td>
    <td><?php echo $_SESSION["user_email"]; ?><br> </td>
  </tr>
    <tr>
    <td>Rang:</td>
    <td><?php echo $_SESSION["user_rang"]; ?><br> </td>
  </tr>
</table><br>
<a href="login/logout.php">Logout</a>
<br>

</body>

Wenn man auf die Interne Seite kommt, sieht man nur den Vornamen, Nachnamen und die ID und den Nickname, aber kein Rang und keine Email.

Was habe ich falsch gemacht?

Vielen Dank Mew
 
Naja, ich denke ja mal dass du dich anhand dem Tutorial login-system-mit-sessions
orientiert hast !!
Also wenn ich mir das tutorial durchlese, sehe ich dass in dem Internbereich eine datei included wird welche ja checkt ob der user zugriffsrechte hat. Dort ist am Anfang ein
PHP:
session_start ();
vorhanden. Probier einfach mal das am Anfang deiner internt.php einzufügen, dann dürfte es funktionieren.

Mfg. Oliver
 
^^ ich habe die intern in eine andere seite included und dort wird auch checkuser mit mit session start included. Außerdem würde man ja sonst den nicknamen und so auch nicht sehen ^^ aber danke
 
PHP:
// Benutzerdaten in ein Array auslesen. 
  $data = mysql_fetch_array;

Ich kann mir nicht vorstellen, dass das so klappt.
 
was ist denn daran falsch? Das kam mir aber auch komisch vor ^^

ich habe es nun so: $data = mysql_fetch_array ($sql);
 
Probier mal
PHP:
<?php 
// Session starten
session_start ();

// Datenbankverbindung aufbauen 
include("/inc/config.php");

$sql = mysql_query("SELECT ID, Email, Nickname, Nachname, Vorname, Rang FROM benutzerdaten WHERE (Nickname like '".$_REQUEST["name"]."') AND (Kennwort = '".md5 ($_REQUEST["pwd"])."')"; 

if (mysql_num_rows ($sql) > 0) 
{ 
  // Benutzerdaten in ein Array auslesen.

while($data = mysql_fetch_assoc($result))
		{
 // Sessionvariablen erstellen und registrieren 
  $_SESSION["user_id"] = $data["ID"]; 
  $_SESSION["user_email"] = $data["Email"]; 
  $_SESSION["user_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"];  
  $_SESSION["user_rang"] = $data["Rang"];

  header ("Location: intern.php"); 
} 
else 
{ 
  header ("Location: index.php?fehler=1"); 
} 
}
?>
 
Upps sry stimmt.
Pack also vor das
PHP:
if (mysql_num_rows ($sql) > 0)
einfach
PHP:
$result = mysql_query($sql);
dann kann das funktionieren. Und ausgeben solltest du auf jeden Fall, dann weißt du was ausgegeben wird und was nicht !!

Mfg. Oliver
 
Zurück