Hi @ all....
Ich hoffe hier kann mir jemand weiterhelfen, komm einfach nicht weiter...
Und zwar hab ich demletzt irgendwann ein Steckbrief-Script geschrieben, dessen User-Management, etc... auf Sessions basiert. Bis dato hat das auch gnaz gut funktioniert...
Heute ist mir allerdings aufgefallen, dass, wenn ich im menü auf "Steckbriefe anschauen" klicke, zwar das neue Fenster öffnet, ich dort allerdings gleich wieder ausgeloggt werde...
Hier mal ein paar Code schnipsel:
So wird das neue Fenster mit der Steckbriefübersicht geöffnet:
laut Statusleiste im IE wird die Session und das ganze zeugs auch mitübergeben, aber beim aufruf der folgenden seite springt er dann wohl ans Ende zur Logout-Funktion, weil irgendwas mit den Sessions nicht stimmt.
irgendwie wird wohl die session, die ja per URL übertragen wird, auf dieser seite nicht anerkannt, denn bei der Logout-Funktion "header("Location: ../index.php?action=logout&userid=".$_SESSION['userid']."");" kann er die "$_SESSION['userid']" nicht anfügen...
Ich vermute mal, dass die session_start() da ganz oben nicht greift oder so irgendwie...
vielleicht/hoffentlich kann mir hier jemand weiterhelfen...
das komische ist halt, dass das früher ging, und jetzt nicht mehr...
weil ich mir dachte, dass mit der if()-Abfrage dann wohl was net stimmt, hab ich mir die ganzen parameter in der if()-Abfrage mal ausgeben lassen. Ergebnis:
folgende fehler:
1. er kann die datenbankabfrage net ausführen, weil er die WHERE ID = '".$_SESSION['userid']."' net korrekt abfragen kann, weil die session scheinbar net existiert (Notice: Undefined index: userid)
dadurch is ja dann klar, dass die große lange if() abfrage auf false umspringt...
aber schlimmer noch:
2. die session id die ich mit get() in der URL übergebe, ist ne andere, als wenn ich die session id mit echo session_id(); auf der seite als test ausgeben lasse...
und dann is auch klar, dass die ganzen anderen $_SESSION["xyz"] net existieren...
wie aber komm ich jetzt an genau dieselbe session wie in meinem hauptfenster???
das ganze problem kommt ja nur deshalb, weil ich die seite in "_blank" öffn, und net im gleichen fenster...
Ich hoffe hier kann mir jemand weiterhelfen, komm einfach nicht weiter...
Und zwar hab ich demletzt irgendwann ein Steckbrief-Script geschrieben, dessen User-Management, etc... auf Sessions basiert. Bis dato hat das auch gnaz gut funktioniert...
Heute ist mir allerdings aufgefallen, dass, wenn ich im menü auf "Steckbriefe anschauen" klicke, zwar das neue Fenster öffnet, ich dort allerdings gleich wieder ausgeloggt werde...
Hier mal ein paar Code schnipsel:
So wird das neue Fenster mit der Steckbriefübersicht geöffnet:
PHP-Code:
<p><img src='abst.gif'> <a href='topsecret/index.php?orderby=name
&order=ASC&sessionid=".session_id()."&userid=".$_GET['userid']."'
target='_blank'>Steckbriefe anschauen</a></p>
laut Statusleiste im IE wird die Session und das ganze zeugs auch mitübergeben, aber beim aufruf der folgenden seite springt er dann wohl ans Ende zur Logout-Funktion, weil irgendwas mit den Sessions nicht stimmt.
PHP-Code:
<?php
session_start();
require("../config.php");
error_reporting(E_ALL);
mysql_connect("$dbhost", "$dblogin", "$dbpwd") or die(mysql_error());
mysql_select_db("$dbname") or die(mysql_error());
$session_sql = "SELECT id, rang, session_rang, session_ip, sessionid FROM steckbriefe
WHERE ID = '".$_SESSION['userid']."'";
$session_result = mysql_query($session_sql);
for ($i=0; $i<mysql_num_rows($session_result); $i++) {
list ($id,$rang,$session_rang,$session_ip,$sessionid) = mysql_fetch_row ($session_result);
}
$sql = "SELECT * FROM steckbriefe ORDER BY '".$_GET['orderby']."' ".$_GET['order']."";
$result = mysql_query($sql);
$log = mysql_num_rows($result);
if($rang == $_SESSION['rang'] AND $_SESSION['rang'] == $session_rang AND
$_SESSION['IP'] == $session_ip AND $_SESSION['IP'] == $_SERVER['REMOTE_ADDR'] AND
session_id() == $sessionid AND session_id() == $_GET['sessionid'] AND $_SESSION['userid'] == $_GET['userid']) {
?>
<html>
...
...
...
</html>
<?php
} else {
header("Location: ../index.php?action=logout&userid=".$_SESSION['userid']."");
}
?>
irgendwie wird wohl die session, die ja per URL übertragen wird, auf dieser seite nicht anerkannt, denn bei der Logout-Funktion "header("Location: ../index.php?action=logout&userid=".$_SESSION['userid']."");" kann er die "$_SESSION['userid']" nicht anfügen...
Ich vermute mal, dass die session_start() da ganz oben nicht greift oder so irgendwie...
vielleicht/hoffentlich kann mir hier jemand weiterhelfen...
das komische ist halt, dass das früher ging, und jetzt nicht mehr...
weil ich mir dachte, dass mit der if()-Abfrage dann wohl was net stimmt, hab ich mir die ganzen parameter in der if()-Abfrage mal ausgeben lassen. Ergebnis:
folgende fehler:
1. er kann die datenbankabfrage net ausführen, weil er die WHERE ID = '".$_SESSION['userid']."' net korrekt abfragen kann, weil die session scheinbar net existiert (Notice: Undefined index: userid)
dadurch is ja dann klar, dass die große lange if() abfrage auf false umspringt...
aber schlimmer noch:
2. die session id die ich mit get() in der URL übergebe, ist ne andere, als wenn ich die session id mit echo session_id(); auf der seite als test ausgeben lasse...
und dann is auch klar, dass die ganzen anderen $_SESSION["xyz"] net existieren...
wie aber komm ich jetzt an genau dieselbe session wie in meinem hauptfenster???
das ganze problem kommt ja nur deshalb, weil ich die seite in "_blank" öffn, und net im gleichen fenster...
Kommentar