verständnisfrage oder fehler?

mrfishly

Mitglied
Morgen Zusammen.

Ich bin mal wieder halb am verzweifeln. Ich bin gerade dabei das erstemal mit Sessions zu arbeiten. Hab eine Homepage angefangen in der in einem Layer eine Datei mit einem login system eingebunden wird. Der Login klappt auch soweit. Allerdings wenn ich jetzt auf einen link klicke, ist die Session anscheinend weg. Hat jemand eine idee? Ich Poste mal alle Dateien die damit zusammen hängen:


index.php

PHP:
<html>
<head>
<title>Welcome</title>
<link href="css/format.css" rel="stylesheet" type="text/css">
</head>

<body background=images/bghp.jpg class=cwtext>

<?php
if ($inc=="")
{
$inc=formular;
}
else
{
$inc=$_GET['inc'];
}

?>


<div style="position:absolute; height:25px; width:670px; overflow:auto; z-index:1; left: 185px; top: 175px;">
<p align=center>Navigationsname</p>
</div>


<div style="position:absolute; height:400px; width:670px; overflow:auto; z-index:1; left: 185px; top: 200px;">
<p align=center>Inhalte</p>
</div>


<div style="position:absolute; height:300px; width:120px; overflow:auto; z-index:1; left: 40px; top: 175px;">
<p align=center><?php include("menu.php");?></p>
</div>


<div style="position:absolute; height:125px; width:120px; overflow:auto; z-index:1; left: 40px; top: 475px;">
<p align=center>
<?php 

if ($inc!="")
{
	include ("$inc.php");
}


?>
</p>
</div>


<div style="position:absolute; height:25px; width:670px; overflow:auto; z-index:1; left: 180px; top: 625px;">
<p align=center>Copyright</p>
</div>


</body>
</html>

formular.php:
PHP:
<?php 

session_start();

if (isset ($_REQUEST["fehler"])) 
{ 
  echo "Die Zugangsdaten waren ungültig."; 
} 
?> 
<p align=left class=cwtext>Login</p>
<table border="0" cellpadding="0" cellspacing="0" width="120" id="AutoNumber1">
<form method="POST" action="index.php?inc=login" >
  <tr>
    <td>
      <input type="text" name="name" size="20" value="Benutzername" class="cwborder">
    </td>
  </tr>
  <tr>
    <td><input type="password" name="pwd" size="20" value="Passwort" class="cwborder"></td>
  </tr>
  <tr>
    <td><input type="submit" value="Login" name="B1" class="cwborder"></td>
  </tr>
</form>
</table>

intern.php
PHP:
<?php 
include ("checkuser.php"); 
?> 
<html> 
<head> 
  <title>Interne Seite</title> 
</head> 
<body class=cwtext> 
  BenutzerId: <?php echo $_SESSION["user_id"]; ?><br> 
  Nickname: <?php echo $_SESSION["user_nickname"]; ?><br> 
  Nachname: <?php echo $_SESSION["user_nachname"]; ?><br> 
  Vorname: <?php echo $_SESSION["user_vorname"]; ?> 
  <hr> 
  <a href="index.php?inc=logout">Ausloggen</a> 
</body> 
</html>

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

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

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

$sql = "SELECT ". 
    "Id, Nickname, Nachname, Vorname ". 
  "FROM ". 
    "benutzerdaten ". 
  "WHERE ". 
    "(Nickname like '".$_REQUEST["name"]."') AND ". 
    "(Kennwort = '".md5 ($_REQUEST["pwd"])."')"; 
$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_nickname"] = $data["Nickname"]; 
  $_SESSION["user_nachname"] = $data["Nachname"]; 
  $_SESSION["user_vorname"] = $data["Vorname"]; 
  $_SESSION["user_gruppe"] = $data["Gruppe"];

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

logout.php
PHP:
<?php 
// Wird ausgeführt um mit der Ausgabe des Headers zu warten. 
ob_start (); 

session_start (); 
session_unset (); 
session_destroy (); 

header ("Location: index.php?inc=formular"); 
ob_end_flush (); 
?>

menu.php
PHP:
<?php
session_start();
?><p align = left>
<a href="index.php?inc2=Home">Home</a><br>
<a href="index.php?inc2=About Me">About Me</a><br>
<a href="index.php?inc2=Gästebuch">Gästebuch</a><br>
<a href="index.php?inc2=Forum">Forum</a><br>
</p>


Zusehn ist das ganze unter: http://mrfish007.funpic.de/test/index.php

Vielleicht klappt das auch generell nicht so wie ich mir das vorstelle. Vielleicht kann ja jemand helfen.

Gruß,
mrfishly

P.S: einloggen kann man sich mit:

Benutzername: test
Passwort: abc

^^
 
Hallo

Ich denke mal das die Session_id nicht weitergereicht wird.
Also musst du an jeden frame oder Link deine Session_id per get anhängen.
 
Hab den fehler gefunden. und zwar hier:

PHP:
<?php 
if ($inc=="") 
{ 
$inc=formular; 
} 
else 
{ 
$inc=$_GET['inc']; 
} 

?>

das bewirkt das wenn nichts mit der variabel inc übergeben wird automatisch auf die Formular.php umgeleitet wird, statt auf die interne seite. da in jedem link nichts übergeben wurde, bekam ich immer wieder das login formular! ^^

trotzdem danke für die hilfe
 
Hab noch ein Problem.

Wollte gerade mein Gästebuch einbauen, aber jetzt bekomm ich vom login immer folgenden Fehler:

Warning: Cannot modify header information - headers already sent by (output started at /usr/export/www/vhosts/funnetwork/hosting/mrfish007/test/menu.php:9) in /usr/export/www/vhosts/funnetwork/hosting/mrfish007/test/checkuser.php on line 8

Was bedeutet das? Hab gelesen das es was mit Leerzeichen vor dem Header zutun hat, aber ich hab in meinen Scripten keine fehler bzw leerzeichen gefunden.
 
Du darfst vor Verwendung der [phpf]header[/phpf]-Funktion keinerlei Daten an den Browser senden. Auch keinen HTML-Code. Das machst du allerdings zur Genüge.
 
Hey... Fettes Merci! Hab mir mal den link durchgelesen und an den anfang und ans ende der index.php ob_start() undob_end_flush() geschrieben. Jetzt gehts :)

Danke
 
Zurück