Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript(AJAX)更改PHP会话变量_Javascript_Php_Ajax_Session_Undefined - Fatal编程技术网

使用Javascript(AJAX)更改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

我需要设置PHP会话变量或将其更改为“”或通过javascript获取它。由于某些原因,变量未设置也未获取。javascript是否对此有任何限制?以下是示例代码:

JS(获取变量):

上面的JavaScript代码得到一个正常的结果,由调试器显示,但由于某些原因,分配给例如函数getSessionVariable('userName')的变量未定义(尽管调试器显示“return='Bob'”)

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']="";
}
更改值时也是这样:

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()?