仅影响Internet Explorer和Firefox(适用于chrome和opera)。
当我尝试执行标头重定向时,会话被删除。举个例子,我在下面写了一小段代码作为测试......
Page1 (test.php)
<?php
session_start();
$_SESSION['testvar']=true;
session_write_close();
//header('Location: ./test2.php');
$host = $_SERVER['HTTP_HOST'];
$uri = rtrim(dirname($_SERVER['PHP_SELF']), '/\\');
$extra = 'test2.php';
header("Location: http://$host$uri/$extra");
exit;
//header('Location: http://' .$_SERVER['SERVER_NAME'].":".$_SERVER['SERVER_PORT']. '/test2.php');
//header('Location: http://192.168.1.111:78/test2.php');
?>
Page2 (test2.php)
<?php
session_start();
echo $_SESSION['testvar'];
echo "<br>test Page #2 (You should see a 1 above if it worked!)<br><br>";
?>
我确实尝试了所有我能想到的(和/或谷歌)。
答案 0 :(得分:0)
首先,正如其他人告诉的那样,你必须检查php.ini文件以获取存储会话处理程序的目录 有来自php.ini文件的片段,显示了该做什么:
Handler used to store/retrieve data.
session.save_handler = files
; Argument passed to save_handler. In the case of files, this is the path
; where data files are stored. Note: Windows users have to change this
; variable in order to use PHP's session functions.
;
; As of PHP 4.0.1, you can define the path as:
;
; session.save_path = "N;/path"
;
; where N is an integer. Instead of storing all the session files in
; /path, what this will do is use subdirectories N-levels deep, and
; store the session data in those directories. This is useful if you
; or your OS have problems with lots of files in one directory, and is
; a more efficient layout for servers that handle lots of sessions.
;
; NOTE 1: PHP will not create this directory structure automatically.
; You can use the script in the ext/session dir for that purpose.
; NOTE 2: See the section on garbage collection below if you choose to
; use subdirectories for session storage
;
; The file storage module creates files using mode 600 by default.
; You can change that by using
;
; session.save_path = "N;MODE;/path"
;
; where MODE is the octal representation of the mode. Note that this
; does not overwrite the process's umask.
session.save_path = "/tmp"
请注意,必须使用适当的权限手动创建此文件夹。