Merkwürdiges Session Problem

Baldus

Grünschnabel
Hallo,
ich habe ein Loginscript geschrieben. Nun will ich, wenn man eingeloggt, ist angezeigt wird "Ausloggen", sonst "Einloggen".

Vorweg:
$_SESSION['id'] ist nicht die SessionID, sondern die ID des Users...
PHP:
<?php
session_start();
echo $_SESSION['id'];
if(isset ($_SESSION['id']) && $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) {
echo '<a href="login.php?action=logout">Ausloggen</a>';
}else{
echo '<a href="login.php">Login</a> &nbsp;&nbsp;&nbsp; - &nbsp;&nbsp;&nbsp;';
echo '<a href="register.php">Registrieren</a>';
}
?>
Auf dieser Seite wird mittels $_GET eine ID übergeben. Die "Seiteid" könnte man es nennen.
Aber komischweiße wird, wenn ich die Seite verlasse und auf irgendeine andere Seite die "ID" aus $_GET als $_SESSION['id'] gespeichert.
Ich habe shcon herausgefunden, dass es an dieser Stelle liegt(um genau zu sein an dem session_start() ), weil wenn ich diese als kommentar setzte, passiert dies nicht!
Weiter unten im Quelltext wird nochmal was angezeigt, wenn die Session vorhanden ist, dies klappt aber auch und daran liegt es nicht.

Beispiel:
Ich habe die $_SESSION['id'] 15
als url steht da http://www.bla.de/irgendwas.php?id=11
Wenn ich nun auf eine andere Seite gehe, ändert sich die $_SESSION['id'] auf 11 um.


Ich verstehe nicht, wieso er die $_SESSION['id'] ändert, obwohl ich das nicht gecodet habe.:confused:

Vielen Dank im Vorraus!
 
Zuletzt bearbeitet:
Mhhh... das $_SESSION['id'] zur Seiten Id in $_GET['id'] wird MUSS irgendwo stehen, d.h. irgendo muss es einen part geben der so oder so ähnlich aussieht:

PHP:
$_SESSION['id'] = $_GET['id'];

Und das $_SESSION['id'] != $_GET['id'] ist wenn du die Session nicht per session_start() startest ist klar, da ja $_SESSION['id'] dann gar nicht existiert.

Also an dem Schnippsel den du geposted hast liegt es auf jedenfall nicht.
 
Mhhh... das $_SESSION['id'] zur Seiten Id in $_GET['id'] wird MUSS irgendwo stehen, d.h. irgendo muss es einen part geben der so oder so ähnlich aussieht:

PHP:
$_SESSION['id'] = $_GET['id'];

Und das $_SESSION['id'] != $_GET['id'] ist wenn du die Session nicht per session_start() startest ist klar, da ja $_SESSION['id'] dann gar nicht existiert.

Also an dem Schnippsel den du geposted hast liegt es auf jedenfall nicht.
Hi,
so ein Codeteil finde ich nicht. Hab ich vorher auch schon überlegt... Aber dies kann auch nicht sein, da es egal ist, welche Seite ich als nächstes besuche. Es kann auch eine Seite sein, wo ich garnicht mit sessions arbeite....
 
In irgendeinem Codeteil musst du doch $_SESSION['id'] einen Wert zuweisen.
Diesen Teil würden wir gerne sehen.

Das muss dann schon so aussehen:

PHP:
$_SESSION['id'] = 'irgendwas'; // ein Wert muss ja zugewiesen werden...

Wenn du sowas nicht findest poste mal das ganze Script.
 
In irgendeinem Codeteil musst du doch $_SESSION['id'] einen Wert zuweisen.
Diesen Teil würden wir gerne sehen.

Das muss dann schon so aussehen:

PHP:
$_SESSION['id'] = 'irgendwas'; // ein Wert muss ja zugewiesen werden...

Wenn du sowas nicht findest poste mal das ganze Script.

Hiho,
PHP:
$check = "SELECT * FROM user WHERE username LIKE '$username'";
$check2 = mysql_query($check);
$row = mysql_fetch_object($check2);	
session_start();
         $_SESSION['id'] = $row->id;
         $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
Das ist die Login.php und das ist der einzige Punkt, wo $_SESSION['id'] etwas zugewiesen wird.
 
Du schreibst
Auf dieser Seite wird mittels $_GET eine ID übergeben. Die "Seiteid" könnte man es nennen.
Aber komischweiße wird, wenn ich die Seite verlasse und auf irgendeine andere Seite die "ID" aus $_GET als $_SESSION['id'] gespeichert.

Jetzt wären die Codeteile die etwas mit dem $_GET zu tun haben interessant.
Die bisher geposteten Codeteile helfen da nicht den Fehler zu finden, finde ich :)
 
Du schreibst


Jetzt wären die Codeteile die etwas mit dem $_GET zu tun haben interessant.
Die bisher geposteten Codeteile helfen da nicht den Fehler zu finden, finde ich :)

PHP:
if (isset ($_GET['id'])) {

				$id = $_GET['id'];

 	 			      	mysql_connect(***) or die ('Keine Verbindung möglich');
 	 				mysql_select_db(****) or die ("Kann Verbindung zur Datenbank nicht herstellen");
 	 				$idlook = "SELECT * FROM radio WHERE id LIKE '$id'";
          				$ergebnis = mysql_query($idlook);




      				while($row = mysql_fetch_object($ergebnis)) {

echo '		 				<table border="0" width="460">';

echo '		 					<tr>';
echo '		         					<td colspan="3" style="text-align:center"><a href="' .$row->link .'">' . $row->name . '</a></td>';
echo '		 					</tr>';

echo '	         					<tr>';
echo '	         						<td>Bitrate: ' . $row->bitrate . ' Kbs</td>';
echo '	                 					<td>Sprache: ' . $row->sprache . '</td>';
echo '	                 					<td>Richtung: ' . $row->richtung . '</td>';
echo '	               					</tr>';
echo '	         					<tr>';
echo '	         						<td colspan="3">' . nl2br ("$row->beschreibung") . '</td>';
echo '	         					</tr>';

echo '						</table>';
                                                 if(isset ($_SESSION['id']) && $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) {
                                                 	mysql_connect(***) or die ('Keine Verbindung möglich');
							mysql_select_db(***) or die ("Kann Verbindung zur Datenbank nicht herstellen");
							$favoriten = "SELECT * FROM favoriten WHERE radioid LIKE '$id2'";
                                                         $favoriten2 = mysql_query($favoriten);

                                                         $anzahl = "0";
                                                         while($row11 = mysql_fetch_object($favoriten2)) {
                                                         $anzahl = $anzahl + "1";
                                                         }
                                                         if($anzahl >= "1") {
                                                         }else{
echo '								<form method="post" action="favoriten.php">';
echo '                                                 		<input name="fav" type="hidden" value="' .$id. '">';
echo '                                                 		<input type="submit" value="Zu den Favoriten hinzufügen">';
echo '                                                 		</form>';
                                                         }
     						}
     					}



echo '				<br><br>Kommentare: <a href="kommentar.php?id=' . $id . '">(Hier können sie ein Kommentar hinzufügen!)</a><br><br>';


     					$comments = "SELECT * FROM kommentare WHERE RadioID LIKE '$id'";
         				$commentsconnect = mysql_query($comments);
				if (mysql_num_rows($commentsconnect)) {
					while($row = mysql_fetch_object($commentsconnect)) {
echo '                 				<table border="1" width="460">';

echo '							<tr>';
echo '		         					<td>Name: ' . $row->Name . '</td>';
echo '		         				</tr>';
echo '		         				<tr>';
echo '		         					<td> '. nl2br ("$row->kommentar") . '</td>';
echo '		         				</tr>';

echo '						</table><br>';
					}
     				}else{
     				echo '<br><br>Keine Einträge vorhaden.';
     				}




				}
Die formatierung ist leider etwas anders, als bei mir im Editor... Sorry.
Dies war die einzige Stelle, wo wirklich was mit $_GET['id'] zu tun hat.
 
Zuletzt bearbeitet:
Uhmm... darin seh ich leider den Fehler nicht den du beschrieben hast. Gibts sonst noch was? Ansonsten häng mal das ganze Script an.

Ich glaube, dass das ganze Script etwas viel wäre, da nicht nur dies mit "id=12" ist, sondern die index.php, mit mehreren Seiten in einer. Schwer zu beschreiben :D
Außerdem möchte ich dies nicht so einfach "preisgeben"

Es können ja nur 2 Teile in frage kommen, da ich nur in 2 Teilen eine Session benutze bzw $_SESSION['id'] benutze.

1. Oberer Teil (Eine Art header):

PHP:
                              	<?php
                                 session_name($_COOKIE['sname']);
                                 session_start();
                                 echo $_SESSION['id'];
                                 echo '<a href="neuste.php">Neuste Radios</a> &nbsp;&nbsp;&nbsp; - &nbsp;&nbsp;&nbsp;';
                                 echo '<a href="favoriten.php">Meine Favoriten</a> &nbsp;&nbsp;&nbsp; - &nbsp;&nbsp;&nbsp;';
				if(isset ($_SESSION['id']) && $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) {
                         	echo '<a href="favoriten.php">Meine Favoriten</a> &nbsp;&nbsp;&nbsp; - &nbsp;&nbsp;&nbsp;';
                                 echo '<a href="login.php?action=logout">Ausloggen</a>';
                                 }else{
                                 echo '<a href="login.php">Login</a> &nbsp;&nbsp;&nbsp; - &nbsp;&nbsp;&nbsp;';
                                 echo '<a href="register.php">Registrieren</a>';
                                 }
                                 ?>

2. Teil, wenn $_GET['id'] vorhanden ist.
PHP:
				if (isset ($_GET['id'])) {

				$id = $_GET['id'];

 	 			      	mysql_connect(***) or die ('Keine Verbindung möglich');
 	 				mysql_select_db(***) or die ("Kann Verbindung zur Datenbank nicht herstellen");
 	 				$idlook = "SELECT * FROM radio WHERE id LIKE '$id'";
          				$ergebnis = mysql_query($idlook);




      				while($row = mysql_fetch_object($ergebnis)) {

echo '		 				<table border="0" width="460">';

echo '		 					<tr>';
echo '		         					<td colspan="3" style="text-align:center"><a href="' .$row->link .'">' . $row->name . '</a></td>';
echo '		 					</tr>';

echo '	         					<tr>';
echo '	         						<td>Bitrate: ' . $row->bitrate . ' Kbs</td>';
echo '	                 					<td>Sprache: ' . $row->sprache . '</td>';
echo '	                 					<td>Richtung: ' . $row->richtung . '</td>';
echo '	               					</tr>';
echo '	         					<tr>';
echo '	         						<td colspan="3">' . nl2br ("$row->beschreibung") . '</td>';
echo '	         					</tr>';

echo '						</table>';
                                                 if(isset ($_SESSION['id']) && $_SESSION['ip'] == $_SERVER['REMOTE_ADDR']) {
                                                 	mysql_connect(localhost, vistakomp, ehh4wu1d) or die ('Keine Verbindung möglich');
							mysql_select_db(vistakomp) or die ("Kann Verbindung zur Datenbank nicht herstellen");
							$favoriten = "SELECT * FROM favoriten WHERE radioid LIKE '$id2'";
                                                         $favoriten2 = mysql_query($favoriten);

                                                         $anzahl = "0";
                                                         while($row11 = mysql_fetch_object($favoriten2)) {
                                                         $anzahl = $anzahl + "1";
                                                         }
                                                         if($anzahl >= "1") {
                                                         }else{
echo '								<form method="post" action="favoriten.php">';
echo '                                                 		<input name="fav" type="hidden" value="' .$id. '">';
echo '                                                 		<input type="submit" value="Zu den Favoriten hinzufügen">';
echo '                                                 		</form>';
                                                         }
     						}
     					}

Danke für die hilfe :)
 
Also das sind ja jetzt die Teile die wir schon kennen. Benenn mal $_SESSION['id'] um in $_SESSION['userid'], dann ist es eindeutiger. Dann ruf mal ne Seite auf und gib per print_r() die _GET und _SESSION arrays aus und poste das mal. Ich kann mir da grad nicht helfen...
 
Zurück