ajax 处理程序(php 脚本)中的会话变量不可用
Session variable unavailable in ajax handler ( php script )
我的目录结构如下所示:
public_html
|_ ajax
|_ test_handler.php
|_ test.php
我的 test.php 看起来像这样:
session_start();
if(isset($_SESSION["tested"]) && $_SESSION["tested"] == "NO"){
//unset the session array and destroy current session
destroyActiveSession();
//start a new session
session_start();
$_SESSION["test_var"] = "Hello world!"
$_SESSION["tested"] = "YES"
}
test_handler.php 有以下代码(简化):
session_start();
exit($_SESSION["test_var"]);
使用本地环境(XAMPP)并在 google crome
上执行
在 test.php
页面 $_SESSION["test_var"]
中工作正常,但在 test_handler.php
中出现 Undefined index: test_var
错误。我做错了什么???
您的 "If" 条件似乎有误:$_SESSION["tested"] = "NO"
尝试:
session_start();
if(isset($_SESSION["tested"]) && $_SESSION["tested"] == "NO"){
//unset the session array and destroy current session
destroyActiveSession();
//start a new session
session_start();
$_SESSION["test_var"] = "Hello world!"
$_SESSION["tested"] = "YES"
}
我看你需要先设置这个值,以确保逻辑测试正常运行
<?php
#test.php
session_start();
/*
In the original code the session variable was not set before
any form of testing.. set an initial value
*/
if( !isset( $_SESSION["tested"] ) ) $_SESSION["tested"]='NO';
if( isset( $_SESSION["tested"] ) && $_SESSION["tested"] == "NO" ){
destroyActiveSession();
session_start();
$_SESSION["test_var"] = "Hello world!"
$_SESSION["tested"] = "YES"
}
?>
并且在尝试通过 ajax
延迟输出值时进行测试是有意义的
<?php
#test_handler.php
session_start();
$var=isset( $_SESSION["test_var"] ) ? $_SESSION["test_var"] : 'bogus';
exit( $var );
?>
所以如果有人 运行 遇到这个问题,下面是解决我的问题的方法:
新 test.php
:
session_start();
if(isset($_SESSION["tested"]) && $_SESSION["tested"] == "NO"){
//unset the session array
$_SESSION = array();
$_SESSION["test_var"] = "Hello world!"
$_SESSION["tested"] = "YES"
}
和新的 test_handler.php
:
<?php
session_start();
exit( $_SESSION["test_var"] );
?>
我的目录结构如下所示:
public_html
|_ ajax
|_ test_handler.php
|_ test.php
我的 test.php 看起来像这样:
session_start();
if(isset($_SESSION["tested"]) && $_SESSION["tested"] == "NO"){
//unset the session array and destroy current session
destroyActiveSession();
//start a new session
session_start();
$_SESSION["test_var"] = "Hello world!"
$_SESSION["tested"] = "YES"
}
test_handler.php 有以下代码(简化):
session_start();
exit($_SESSION["test_var"]);
使用本地环境(XAMPP)并在 google crome
上执行在 test.php
页面 $_SESSION["test_var"]
中工作正常,但在 test_handler.php
中出现 Undefined index: test_var
错误。我做错了什么???
您的 "If" 条件似乎有误:$_SESSION["tested"] = "NO"
尝试:
session_start();
if(isset($_SESSION["tested"]) && $_SESSION["tested"] == "NO"){
//unset the session array and destroy current session
destroyActiveSession();
//start a new session
session_start();
$_SESSION["test_var"] = "Hello world!"
$_SESSION["tested"] = "YES"
}
我看你需要先设置这个值,以确保逻辑测试正常运行
<?php
#test.php
session_start();
/*
In the original code the session variable was not set before
any form of testing.. set an initial value
*/
if( !isset( $_SESSION["tested"] ) ) $_SESSION["tested"]='NO';
if( isset( $_SESSION["tested"] ) && $_SESSION["tested"] == "NO" ){
destroyActiveSession();
session_start();
$_SESSION["test_var"] = "Hello world!"
$_SESSION["tested"] = "YES"
}
?>
并且在尝试通过 ajax
延迟输出值时进行测试是有意义的<?php
#test_handler.php
session_start();
$var=isset( $_SESSION["test_var"] ) ? $_SESSION["test_var"] : 'bogus';
exit( $var );
?>
所以如果有人 运行 遇到这个问题,下面是解决我的问题的方法:
新 test.php
:
session_start();
if(isset($_SESSION["tested"]) && $_SESSION["tested"] == "NO"){
//unset the session array
$_SESSION = array();
$_SESSION["test_var"] = "Hello world!"
$_SESSION["tested"] = "YES"
}
和新的 test_handler.php
:
<?php
session_start();
exit( $_SESSION["test_var"] );
?>