Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.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
如何使用ajax请求javascript/PHP在远程服务器上存储会话_Javascript_Php_Ajax_Session_Cookies - Fatal编程技术网

如何使用ajax请求javascript/PHP在远程服务器上存储会话

如何使用ajax请求javascript/PHP在远程服务器上存储会话,javascript,php,ajax,session,cookies,Javascript,Php,Ajax,Session,Cookies,我在启动服务器,并尝试在使用ajax服务器进行查询。我需要执行同样的操作来发送setcookie命令,将cookie存储在192.168.1.2服务器上,并在localhost服务器上使用ajax获取信息 因此,javascript AJAX请求的代码: let query = this.http.get('http://192.168.1.2/testdb.php'); query.toPromise().then((result) => { console.log(result

我在启动服务器,并尝试在使用ajax服务器进行查询。我需要执行同样的操作来发送setcookie命令,将cookie存储在192.168.1.2服务器上,并在localhost服务器上使用ajax获取信息

因此,javascript AJAX请求的代码:

let query = this.http.get('http://192.168.1.2/testdb.php');

query.toPromise().then((result) => {
   console.log(result);
   console.log(result.json());
});
我正在查询服务器192.168.1.2,以便在脚本运行时将信息存储在会话中,从而从中获取信息

在服务器上,我尝试做一些事情,并将信息存储在会话变量中。但我不能,因为每次我从本地主机向192.168.1.2发送新查询时,我的服务器(192.168.1.2)每次都会设置新会话。若我并没有错,我需要将cookie设置为正确的,以便将会话存储在远程服务器上

我在PHP服务器(192.168.1.2)上的代码是:

session_start();
标题('Access-Control-Allow-Origin:');
标题('Access-Control-Allow-Headers:');
回声“;
变量转储(标题列表());
回声“;
echo json_encode(数组('success'=>true,'session_id'=>session_id());
每次查询时,我都会得到新的会话ID。要存储会话,我需要将id设置为somealways。 那么,如何在远程服务器上存储会话信息呢?
另外,很抱歉我的英语不好,我很难解释。

会话变量就像一块饼干。在您的情况下,您应该在会话中存储一个Id以及一个用户Id,并将该用户Id发送到您的服务器。服务器将检索userid并返回id。 比如:

let query = this.http.get(http://192.168.1.2/testdb.php?userId=someid);

query.toPromise().then((result)=>{
    console.log(result);
    console.log(result.json());
});
希望有帮助

  • Nic

不可能通过ajax调用保持会话,因为它每次都会创建一个新的http请求

解决方案是在客户端存储seision id,并在每次请求时将id发送到远程服务器。在远程服务器上,使用旧id生成新会话。

我知道这个解决方案,但想通过任何没有id的查询自动存储它。也许我可以使用session_set_cookie_params?@AlexanderZakusilo这种方法通常用于设置cookie的参数,如生存时间或安全级别,您可以尝试。在代码中,每次调用时都要插入一个新的会话变量,这就是为什么每次都有不同的Id。
<?php
function getInfo(){
    $id = $_GET['userId'];
    //some id validations;
    $sessionData = $_SESSION[$id];
    echo json_encode($sessionData);
}

function setInfo(){
    $id = generateuserid();
    //some id validation 
    $sessionData = array('id' => session_id(), 'data' => 'data'); // the data you need to store;
    $_SESSION[$id] = $sessionData;
    echo json_encode(array('userId' => $id));
}

?>
let query = this.http.get(http://192.168.1.2/testdb.php?userId=someid);

query.toPromise().then((result)=>{
    console.log(result);
    console.log(result.json());
});