簡體   English   中英

如何使用ajax請求javascript / PHP將會話存儲在遠程服務器上

[英]How to store session at remote server with ajax request javascript/PHP

我從http:// localhost:8080啟動服務器,並嘗試使用http://192.168.1.2/的 ajax服務器進行查詢。 我需要做一些事情來發送set cookie命令,以將cookie存儲在192.168.1.2服務器上,並在本地服務器上從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();
  header('Access-Control-Allow-Origin: *');            
  header('Access-Control-Allow-Headers: *');     

  echo "<pre>";
  var_dump(headers_list());       
  echo "</pre>";         


  echo json_encode(array('success' => true, 'session_id' => session_id()));

每次查詢時,我都會獲得新的會話ID。 要存儲會話,我需要ID始終是ID。 那么,如何在遠程服務器上存儲會話信息呢? PS對不起,我的英語不好,我很難解釋。

無法通過ajax調用保持會話,因為它每次都會創建一個新的http請求。

解決方法是在客戶端存儲存儲ID,並且每次將ID與請求一起發送到遠程服務器。 在遠程服務器上,使用舊ID生成新會話。 https://404it.no/en/blog/javascript_cross-domain_request_with_session

_SESSION變量就像cookie。 根據您的情況,您應該在會話中存儲一個ID以及一個將用戶ID發送到您的服務器的用戶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));
}

?>

然后為您的Javascript在URL中傳遞變量

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());
});

希望能幫助到你 !

  • 尼克

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM