Probleme mit Sessions und Übergabe an andere PHP Dateien

Tigermaus

Grünschnabel
Hi, ich hätt da ein Problem.
Also ich hab ein login php, dass bei Eingabe der richtigen Benutzerdaten einen Link ausgibt, von wo aus man zu einem Chat weitergeleitet wird (chat.php).

Das chat.php ist ein Frameset, dass messageWin.php (oberer Frame) und updateWin.php (unterer Frame) ausgibt.

Nun soll mittels einer Session, die Benutzerdaten vom login.php zu den anderen php Files weitergeleitet werden, wo sie dann weiter benützt werden.

Mein Problem ist, dass, sobald ich Sessions verwende, chat.php manchmal nicht mehr aufrufbar ist, bzw nur einmalig aufrufbar ist, die Sessions zeitweise nicht angenommen werden usw....

login.php:
PHP:
<?php session_name("jabber");
  session_start();
  if(strlen($_POST['username'])>0){
  	echo "username";
  	$_SESSION['username']=$_POST['username'];
  }
  if(strlen($_POST['password'])>0){
  	echo "password";
  	$_SESSION['password']=$_POST['password'];
  }
  echo "debug";
  
  ?>
  
  <html><head><meta http-equiv="Content-Type" content="text/html;
  charset=utf-8"/><title>Chat</title>
  
  </head>
  <body>
  <br>
  <br>
  <form action="" method="post">
  <table width="75" border="0">
    <tr>
  	<td>Name:</td>
 	<td><input name="username" type="text" value="<?php echo $_SESSION['username'] ?>"></td>
    </tr>
    <tr>
  	<td>Passwort:</td>
 	<td><input name="password" type="text" value="<?php echo $_SESSION['password'] ?>"></td>
    </tr>
  	 <tr>
  	<td></td>
  	<td><div align="right">
  		  <input name="submit" type="submit" value="Ok">
  		</div></td>
    </tr>
  </table>
  .
  weiterer code
  .
  .
  <a href="chat.php" target="_blank">go to the Chat</a>


chat.php:
PHP:
<?php session_name("jabber");
  session_start();?>
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
  <html>
  <head>
  <title></title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  </head>
  
  <frameset rows="600,*" cols="*" framespacing="0" frameborder="NO" border="0">
  	<frame src="messageWin.php" name="messageWin">
  	<frame src="updateWin.php" name="updateWin" >
  </frameset>
  <noframes><body>
  </body></noframes>
  </html>

messageWin.php:
PHP:
<?php session_name("jabber");
  session_start();
  $username=$_SESSION["username"];
  $password=$_SESSION["password"];
  ?>
  .
  weiterer code
  .

updateWin.php:
PHP:
<?php session_name("jabber");
  session_start();
  $username=$_SESSION["username"];
  $password=$_SESSION["password"];
  ?>
  .
  weiterer code
  .

Wäre toll, wenn mir jemand helfen könnte, bin ziemlich ratlos.

cu Tigermaus
 
So wie du es programmiert hast setzt das ganze vorraus, das Cookies aktiviert sind, denn die SessionID die jede seite braucht, da sie sonst mit session_start() eine neue Session anlegt wird via Cookie vergeben. Dies kannst du entweder via ini_set() abschalten oder einfach an die URL mit anhängen, z.b.

echo "<a href=\"chat.php?PHPSESSID=".session_id()"\">Chat</a>
 
Der action-Parameter des Form-Tags in der login.php ist leer. Nutzername und Passwort werden eigentlich nirgendwo hin übertragen.

Das Formular sollte an ein Script übertragen werden, das die Übergebenen Login-Daten prüft, bei Erfolg in die Session schreibt und via header-Funktion auf den Chat weiterleitet.

@Ben: Je nachdem, wie PHP konfiguriert ist, sollte die Session-ID auch automatisch an URLs angehangen werden, falls kein Cookie gesetzt werden konnte. Auch ist es möglich mit einer Fallback-Funktion zu arbeiten, wie sie auf http://www.php-faq.de/q/q-sessions-fallback.html beschrieben ist.

Sven
 
Zuletzt bearbeitet:
Hi!
Jo, des action ist des action habe ich deswegen gelassen, da es im login.php schon selber überprüft wird, ob die Variable gesetzt wird oder nicht.
und wenn ich dann testweise echo $_Session['username']; im login.php reinschreiben, gibt er mir es auch richtig aus
 
Zurück