使用Javascript(AJAX)更改PHP会话变量
我需要设置PHP会话变量或将其更改为“”或通过javascript获取它。由于某些原因,变量未设置也未获取。javascript是否对此有任何限制?以下是示例代码: JS(获取变量): 上面的JavaScript代码得到一个正常的结果,由调试器显示,但由于某些原因,分配给例如函数getSessionVariable('userName')的变量未定义(尽管调试器显示“return='Bob'”) session.php使用Javascript(AJAX)更改PHP会话变量,javascript,php,ajax,session,undefined,Javascript,Php,Ajax,Session,Undefined,我需要设置PHP会话变量或将其更改为“”或通过javascript获取它。由于某些原因,变量未设置也未获取。javascript是否对此有任何限制?以下是示例代码: JS(获取变量): 上面的JavaScript代码得到一个正常的结果,由调试器显示,但由于某些原因,分配给例如函数getSessionVariable('userName')的变量未定义(尽管调试器显示“return='Bob'”) session.php if(isset($_REQUEST['command']) &&a
if(isset($_REQUEST['command']) && $_REQUEST['command']=='get' &&
isset($_REQUEST['sessionValue'])){
$value = $_REQUEST['sessionValue'];
$res = $_SESSION[$value];
echo ($res);
}
if(isset($_REQUEST['command']) && $_REQUEST['command']=="end" && isset($_REQUEST['userName'])){
$userName = $_REQUEST['userName'];
$result = mysql_query('SELECT user_id FROM users WHERE userName="{$userName}"');
$row = mysql_fetch_array($result);
$user_id =$row['user_id'];
mysql_query("DELETE FROM userlist WHERE user_id= '{$user_id}'");
$_SESSION['userName']="";
$_COOKIE['logined']="";
}
更改值时也是这样:
function logInCheck(){
var userName = getSessionVariable('userName');
if(document.getElementById('name').value!= userName && userName!=undefined){
if(getCookie('logined')=="true"){
var xhttpSession = new XMLHttpRequest();
xhttpSession.open('POST','session.php',true);
xhttpSession.onreadystatechange = function(){
if(xhttpSession.readyState==4 && xhttpSession.status==200){
xhttpSession.abort();
}
}
xhttpSession.send("command=end")}
}
session.php
if(isset($_REQUEST['command']) && $_REQUEST['command']=='get' &&
isset($_REQUEST['sessionValue'])){
$value = $_REQUEST['sessionValue'];
$res = $_SESSION[$value];
echo ($res);
}
if(isset($_REQUEST['command']) && $_REQUEST['command']=="end" && isset($_REQUEST['userName'])){
$userName = $_REQUEST['userName'];
$result = mysql_query('SELECT user_id FROM users WHERE userName="{$userName}"');
$row = mysql_fetch_array($result);
$user_id =$row['user_id'];
mysql_query("DELETE FROM userlist WHERE user_id= '{$user_id}'");
$_SESSION['userName']="";
$_COOKIE['logined']="";
}
提前感谢您的帮助。以这种方式向客户端公开会话变量似乎非常不安全。session.php中打开php标记后的第一行是否有session_start()?