problem mit php sessions

hi leute,
ich habe ein Problem: schaut euch mal den code an und sagt mir dann bitte warum die variable $loggedin immer richtig gesetzt ist nur ganz am schluss da will ich die variable nochmal ausgeben und da zeigt er mir immer den wert "no" für $loggedin an. woran liegt das? und warum bleibern die variablen username und password gesetzt obwohl der befehl session_destroy() gekommen ist? ich kriegs nicht raus.
Code:
<?php
session_start();

if($id=="destroysession")
{
session_unregister(loggedin);
session_unregister(username);
session_unregister(password);
session_destroy();
}

if(isset($id) && $id=="check")
	{
		$verbindung = mysql_connect("localhost","Administrator","arschkind2") or die ("Keine Verbindung moeglich!");
		mysql_select_db("underground") or die ("Datenbank existiert nicht!");

		$abfrage = "SELECT * FROM access WHERE username='$user_to_check'";
		$ergebnis = mysql_query($abfrage);
	
		$row = mysql_fetch_object($ergebnis);

		$username = $row->username;
 		$password = $row->password;
	
		if($user_to_check==$username && $pw_to_check==$password) 
		{
			
			session_register(loggedin);$loggedin="yes";
			session_register(username);
			session_register(password);
			print "loggedin";
		}
		else 
		{ 
			session_register(loggedin);$loggedin="no";
			print "loggedout";
		}
		mysql_close($verbindung);
	}

if(!isset($id) || $id != "check")
	{
	session_register(loggedin);$loggedin="no";
	print "loggedout2";
	}



	$verbindung = mysql_connect("localhost","Administrator","arschkind2") or die ("Keine Verbindung moeglich!");
	mysql_select_db("underground") or die ("Datenbank existiert nicht!");

	$abfrage = "SELECT * FROM config WHERE variable='title'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$title = $row->wert;

	$abfrage = "SELECT * FROM config WHERE variable='css_file'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$css_file = $row->wert;
 
	$abfrage = "SELECT * FROM config WHERE variable='footer'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$footer = $row->wert;

	$abfrage = "SELECT * FROM config WHERE variable='bgcolor'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$bgcolor = $row->wert;

	$abfrage = "SELECT * FROM config WHERE variable='color_1'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$color_1 = $row->wert;

	$abfrage = "SELECT * FROM config WHERE variable='color_2'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$color_2 = $row->wert;

	$abfrage = "SELECT * FROM config WHERE variable='color_3'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$color_3 = $row->wert;

	$abfrage = "SELECT * FROM config WHERE variable='show_welcome_msg'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$show_welcome_msg = $row->wert;

	$abfrage = "SELECT * FROM config WHERE variable='welcome_msg_text'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$welcome_msg_text = $row->wert;

	$abfrage = "SELECT * FROM config WHERE variable='welcome_msg_table'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$welcome_msg_table = $row->wert;

	$abfrage = "SELECT * FROM config WHERE variable='home_status'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$home_status = $row->wert;

	$abfrage = "SELECT * FROM config WHERE variable='download_status'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$download_status = $row->wert;

	$abfrage = "SELECT * FROM config WHERE variable='download_link'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$download_link = $row->wert;

	$abfrage = "SELECT * FROM config WHERE variable='home_module'";
	$ergebnis = mysql_query($abfrage);
	$row = mysql_fetch_object($ergebnis);
	$home_module = $row->wert;

	mysql_close($verbindung);
?>

<html>

<head>
<title><?php print $title; ?></title>
<?php print "<LINK REL='StyleSheet' HREF='$css_file' TYPE='text/css'"; ?>
</head>

<body bgcolor = "<?php print $bgcolor; ?>">
<p> </p>
<div align="center">
  <center>
  <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="95%" id="AutoNumber1" bgcolor="#FFFFFF">
    <tr>
      <td width="5%" valign="top">
      <img border="0" src="theme/images/corner-top-left.gif" align="top" width="17" height="17"></td>
      <td width="45%" align="center">
      <p align="center"> </p>
      <p align="center"><img border="0" src="images/logo.gif" height=60></p></p>
      <p align="center"> </td>
      <td width="45%" style='border-left-style: solid; border-left-width: 1' bgcolor = '<?php print "$color_2"; ?>' valign=middle>
	
	<center><table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='80%'>
  	<tr>
    	<td width='100%'>search <input type="text" name="T1" size="11"></td>
  	</tr>
	</table></center>

      </td>
      <td width="5%" valign="top" align="right" bgcolor='<?php print $color_2; ?>'>
      <img border="0" src="theme/images/corner-top-right.gif" width="17" height="17"></td>
    </tr>
    <tr>
      <td width="100%" colspan="4">
      <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber2">
        <tr height = 25>
          <td width="15%" style="border-top-style: solid; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1" bgcolor="<?php print $color_1; ?>">
          <p align="center"><font face="Tahoma" size="2">  <b>

		<?php

		if($loggedin=="no") { 
		print "new account"; 
		}

		if($loggedin=="yes") { 
		print "welcome $username"; 
		}	

		?>

	  </b></font></td>
          <td width="70%" style="border-top-style: solid; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1" bgcolor="<?php print $color_1; ?>">
          <p align="center"><font face="Tahoma" size="2"><b>

		<?php
			if($home_status == "active") {
			print "<a href=index.php?jumpto=$home_module>Home</a> :: ";
			}
			if($download_status == "active") {
			print "<a href=$download_link>Download</a> :: ";
			}
		?>Your Account
	  </b></font></td>
          <td width="15%" style="border-top-style: solid; border-top-width: 1; border-bottom-style: solid; border-bottom-width: 1" bgcolor="<?php print $color_1; ?>">
          <p align="center"><font face="Tahoma" size="2">
		     	    <?php 
				print "<b>datum</b>"; 
			    ?>
			    </font></td>
        </tr>
      </table>
      </td>
    </tr>
    <tr>
      <td width="100%" colspan="4">
      <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber3" height="293">
        <tr>
          <td width="120%" colspan="3" height="254">
          <div align="center">
            <center>
            <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="98%" id="AutoNumber4">
              <tr>
                <td width="15%" valign="top">
			
			<?php
			include("menu.php");
			?>

		</td>
                <td width="85%" valign="top">
			<br><br>
			<table border='0' cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%" id="AutoNumber1">
  			<tr>
    			<td width="100%" valign="top">
			<?php
			if($show_welcome_msg == "yes" && !isset($jumpto)) 
			{ 
			print "<p align=center><table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='steelblue' width='50%'>
  		      		<tr><td height=20 bgcolor=$color_1 width='100%' style='border-style: solid; border-width: 1'><p align=center><b>News & Ankündigungen & Mitteilungen</b></td>
  		      		</tr><tr><td bgcolor=$color_2 width='100%' style='border-style: solid; border-width: 1'>
		      		<center><table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='95%'>
  		      		<tr><td width='100%'><p align=justify>$welcome_msg_text</td></tr></table></center></td></tr></table></center><br>";
			}

			if(isset($jumpto)) 
				{
				include($jumpto);
				}
			if(!isset($jumpto))
				{
				include($home_module);
				}
			?>
			</td>
  			</tr>
			</table>

		</td>
              </tr>
            </table>
            </center>
          </div>
          </td>
        </tr>
        <tr>
          <td width="3%" valign="bottom" height="39">
          <img border="0" src="theme/images/corner-bottom-left.gif" width="17" height="17"></td>
          <td width="94%" height="40" valign="top">
          <p align="right"><font size="1" face="tahoma">
	                   	<?php
				print $footer;
				?>
			   </font></td>
          <td width="23%" align="right" valign="bottom" height="39">
          <img border="0" src="theme/images/corner-bottom-right.gif" width="17" height="17"></td>
        </tr>
      </table>
      </td>
    </tr>
  </table>
  </center>
</div>
<p> </p>

</body>

</html>

<?php
session_register(loggedin);
session_register(username);
session_register(password);

if(isset($loggedin)) { print "loggedin=$loggedin "; }
if(isset($username)) { print "username=$username "; }
if(isset($password)) { print "password=$password "; }

?>


mfg
 
Seit dem es üblich ist die global_vars auszustellen, benutze ich für das Registrieren einer Session immer:

PHP:
<?php
session_start();

$var = 'Ich werde ein Session';

  // Registrieren
  $_SESSION['session_title'] = $var;

  // Löschen
  unset($_SESSION['session_title'];

?>

Und in deinem Code macht es keinen Sinn erst alle Sessions einzeln per "session_unregister" zu löschen und dann nochmal "session_destroy" auszuführen, welches ein Löschen aller Sessions ausführt.

Kannst es ja mal testen, vielleicht geht es mit der oben beschriebenen Methode ($_SESSION['title'] = $var).

Gruß
crAb
 
ich hab gmerkt dass die variablen nach session_destroy noch verfügbar sind irgendwie komisch und dann hab ich einfach alle einzeln gelöscht, hat aber a nix gebracht. was weiß ich.

ist $_SESSION['title'] dann ganz normal wie eine variable zu benutzen also was Änderungen angeht?
 
PHP:
session_start();

$user_name = "crAb";

// Hinzufügen
$_SESSION['u_name'] = $user_name;

// Ändern
$_SESSION['u_name'] = "crAb2";

// Löschen
unset($_SESSION['u_name']);

Das ändern hatte ich vergessen zu beschreiben.
 
Wenn ich mit sessions Proggen will, kommt immer folgender Fehler:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/www/web91/html/member/login.php:2) in /home/www/web91/html/member/login.php on line 20

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/www/web91/html/member/login.php:2) in /home/www/web91/html/member/login.php on line 20



Was hat das zu bedeuten? Warum kann er den cookie nicht senden? Ich hab alles versucht!

Hier noch die wichtige Stelle aus dem proggy-code(login.php,17-22):

$test = test_member($member_name, $member_password);
if($test)
{
session_start();
$_SESSION['member_name'] = $member_name;
$_SESSION['member_password'] = $member_password;
 
es hat genau das zu bedeuten was da steht header sind bereits raus !
das heißt das du bereits eine ausgabe gemacht hast bevor du zu den cookies kommst
wenn du den code nicht verschieben willst dann würde ich dir output buffering empfehlen
 
Zurück
Oben