003
19.01.2011, 03:25 Uhr
Pablo
Supertux (Operator)
|
Ich hab ein bisschen mit den session gespielt, aber ich verstehe etwas nicht ganz.
Ich will vor allem den Fall testen, wenn der Browser keine Cookies akzeptiert. Ich habe 2 Skripte geschrieben:
index.php
PHP 4: |
<?php
/* session only to be alive for 3 Minutus */
print "<pre>\n"; print_r(session_get_cookie_params()); print "</pre>\n";
echo "Session name is " . session_name() . " see?<br />";
echo "session.use_cookies is " . ini_get("session.use_cookies") . " see?<br />\n";
$scookie = ini_get("session.use_cookies");
if($scookie) session_set_cookie_params(180);
session_start();
if(isset($_GET['login']) && $_GET['login'] == 1) { $_SESSION['logged'] = 10; }
if(isset($_GET['logout']) && $_GET['logout'] == 1) { print "Destroying session<pre>\n"; print_r($_SESSION); print "</pre>\n";
$_SESSION['logged'] = 0; if($scookie) session_set_cookie_params(time() - 4200); session_destroy(); }
$nick = ""; $city = "";
if(isset($_POST['senddata']) && $_POST['senddata'] == "Post nicks") { $_SESSION['POST'] = $_POST; $nick = $_POST['nick']; $city = $_POST['city']; }
if(isset($_POST['senddata']) && $_POST['senddata'] == "Post nicks") { $_SESSION['POST'] = $_POST; $nick = $_POST['nick']; $city = $_POST['city']; }
print "<pre>\n"; print_r($_POST); print "</pre>\n";
$ssid = htmlspecialchars(SID);
?> <html> <head> <title>Session example 1</title> </head> <body> <h1>Session Example <?php echo $ssid ?></h1>
<?php
if(isset($_SESSION['logged']) && $_SESSION['logged'] == 10) { /* show formular and logout */ ?> <p> <a href="index.php?logout=1<?php echo "?$ssid" ?>">logout</a> </p>
<form action="index.php" method="post"> <input type="hidden" name="<?php echo session_name() ?>" value="<?php echo session_id() ?>" /> Nick: <input name="nick" type="text" size="30" maxlength="30" value="<?php echo $nick ?>" /><br /> City: <input name="city" type="text" size="30" maxlength="30" value="<?php echo $city ?>" /><br /> <input type="submit" name="senddata" value="Post nicks"> </form> <?php } else {
?> <p> <a href="index.php?login=1">login</a> </p>
<?php } ?>
</body> </html>
|
und
look.php
PHP 4: |
<?php
session_start();
print "SID is " . htmlspecialchars(SID) . "<br />";
print "<pre>\n"; print_r($_SESSION); print "</pre>\n";
?>
|
ich weiß, kein perfekter HTML Code, aber das ist nur zum testen & debuggen.
Wenn ich Cookies erlaube, dann läuft alles super. Wenn ich auf login klicke, dann bekomme ich die Felder, ich kann die Sachen verändern und ich sehe sie bei look.php.
Wenn ich aber Cookies ablehne, dann wird eine Session nach der anderen erzeugt. Und obwohl ich überall PHPSESSID=xxx in die URLs eingebe (look.php?PHPSESSID=xxx), komme ich immer wieder auf die "login" Seite, weil die Session nicht erkannt wird. Wie soll ich in diesem Fall vorgehen? -- A! Elbereth Gilthoniel! silivren penna míriel o menel aglar elenath, Gilthoniel, A! Elbereth! Dieser Post wurde am 19.01.2011 um 03:26 Uhr von Pablo editiert. |