Kann mir jemand sagen, warum die Sitzungsvariablen nicht zwischen Seiten ausgetauscht werden? Sie haben bis vor 2 Tagen gearbeitet. Jetzt ist es nicht? Es gibt ein Drittsystem, das Benutzer basierend auf dem Drittsystem anmeldet. Ich leite Benutzer mit der Rückgabe-URL auf die Anmeldeseite weiter. Das Drittanbietersystem meldet einen Benutzer an und übergibt seine ID und ein an seinem Ende generiertes Token und gibt ihn mit der ID und dem Token in der URL an meine Website zurück.
Wenn Sitzungen nicht festgelegt sind, versuche ich, die ID und das Token aus der URL zu holen und die Sitzungen festzulegen. (funktioniert) Ich generiere dann mein eigenes Token, um es mit dem vom Drittanbietersystem übergebenen Token zu validieren (funktioniert), wenn ich auf eine andere Seite klicke, sind die von mir festgelegten Sitzungen nicht leer (????)
Hier ist mein Code:
<?php
session_start();
// FUNCTION TO PASS THE URL THE USER IS ON SO THEY COME
// BACk TO THIS PAGE AFTER THE LOG IN. IF APPLICABLE
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
// DESTROY SESSION INFO IF TIMED OUT
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
session_destroy(); // destroy session data in storage
session_unset(); // unset $_SESSION variable for the runtime
}
// SET THE SESSIONS WITH INFO PASSED FROM
// LOGIN PAGE SENT AS A GET
if(isset($_SESSION['ID']) && isset($_SESSION['token'])) {}else{
$_SESSION['ID'] = $_GET['ID'];
$_SESSION['token'] = $_GET['token'];
}
// GENERATE MY TOKEN TO MATCH THE LOGIN SYSTEM TOKEN
$userIP = $_SERVER['REMOTE_ADDR'];
$secretkey = 'A Unique Key For The Logged In User Matching the Login System Passed From mydomain.com/login.php';
$algorithm = 'md5';
$mm = date('m');
$dd = date('d');
$mmdd = $mm.$dd;
$mytoken = strtoupper(hash($algorithm, $secretkey.$_SESSION['ID'].$userIP.$mmdd));
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
// THIS IS WHERE THINGS ARE GOING WRONG
// SESSION token IS NO LONG SET AFTER I Go To another page
// and my token isnt the same any more either because session ID
// is no longer set???
if($_SESSION['token']==$mytoken){}else{
header("location: https://mydomain.com/login.php?returnURL=".curPageURL());
}
?>
ok das ist durcheinander. Es muss ein Problem mit dem PHP-Setup des Hosting-Providers sein, weil ich zwei Seiten erstellt habe. man rief info mit diesem Code an:
<?
session_start();
$_SESSION['ID'] = "112233";
$_SESSION['token'] = "mytoken";
print $_SESSION['ID'];
print $_SESSION['token'];
?>
<a href="https://stackoverflow.com/questions/6200612/info2.php">info 2</a>
und einer namens info2 mit diesem Code:
<?
session_start();
print $_SESSION['ID'];
print $_SESSION['token'];
?>
<a href="https://stackoverflow.com/questions/6200612/info.php">info</a>
info erstellt und gedruckt die Sitzung ok. Wenn ich auf den Link klicke, um zu info2 zu gelangen, werden die Sitzungen nicht gedruckt. Ist das ein Hosting-Konfigurationsproblem?
Ich habe genau das gleiche Problem … außer dass sich meine Sachen auf localhost befinden und PHP mit IIS verwenden
– Thomas An
20. Oktober 2015 um 1:20 Uhr