Сессии исчезают при перенаправлении заголовка с php - PullRequest
2 голосов
/ 27 сентября 2011

Влияет только на 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>";
?>

Я буквально перепробовал абсолютно все, что только могу придумать (или Google).

1 Ответ

0 голосов
/ 27 сентября 2011

Во-первых, как сказали другие парни, вы должны проверить файл 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"

Обратите внимание, что эта папка должна создаваться вручную с соответствующими разрешениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...