簡體   English   中英

PHPSESSID =不在ajax jQuery中進行

[英]PHPSESSID= not carried in ajax jquery

我正在嘗試使用$ .ajax(jquery)對我的服務器(php)進行api調用。 我已經成功ping服務器,但是並不能驗證用戶是否已登錄(存儲在PHPSESSID中)。 這是一個跨域請求。

當我使用PHP從前端進行api調用時,它可以工作,因為cURL請求將PHPSESSID分配給CURLOPT_COOKIE。

這是我的網站www.foo.com上的$ .ajax代碼

         $(document).on('click','#pickup_now', function(){

            //testing ajax function for 'cpr.php'

            $.ajax({
                url: "https://app.foo.com/CPR.php",
                data: {
                            PickupLatitude: PickupLatitude,
                            PickupLongitude: PickupLongitude,
                            PickupAddress: PickupAddress,
                            PickupAddress2: '',
                            PickupCity: PickupCity,
                            PickupState: PickupState,
                            PickupZipCode: PickupZipCode,
                            DropOffLatitude: '34.0335328',
                            DropOffLongitude: '-118.48099309999998',
                            DropOffAddress: '2227 Wilshire Boulevard',
                            DropOffAddress2: '',
                            DropOffCity: 'Santa Monica',
                            DropOffState: '5',
                            DropOffZipCode: '90403',
                            ShipmentDescription: document.getElementById('description').value,
                            ShipmentImage: document.getElementById('ShipmentImage').value,
                            EstimatedTime: '180',
                            EstimatedDistance: '1'
                        },
                type: "POST",
                success: function(data,status){
                            console.log("Data: " + data + "\nStatus: " + status);
                            console.log(userSession);
                } //ends success function
            });

    });

返回:

Data: {"LoginValid":false}
Status: success

因此,我們知道它已成功ping通服務器。 這是https://app.foo.com/CPR.php上的代碼

public static function CPR($pickupLatitude, $pickupLongitude, $pickupAddress, $pickupAddress2, $pickupCity, $pickupState, $pickupZipCode,
                                    $dropOffLatitude, $dropOffLongitude, $dropOffAddress, $dropOffAddress2, $dropOffCity, $dropOffState, $dropOffZipCode,
                                    $shipmentDescription, $shipmentImage, $estimatedTime, $estimatedDistance)
    {
        $results = new fooCommon\Results();
        if ($results->LoginValid = SessionInfo::GetInstance()->LoggedIn())
            $results->AddMembers(fooCommon\SHELPER::CPR(SessionInfo::GetInstance()->UserID(), $pickupLatitude, $pickupLongitude, $pickupAddress, $pickupAddress2, $pickupCity, $pickupState, $pickupZipCode,
                                    $dropOffLatitude, $dropOffLongitude, $dropOffAddress, $dropOffAddress2, $dropOffCity, $dropOffState, $dropOffZipCode,
                                    $shipmentDescription, $shipmentImage, $estimatedTime, $estimatedDistance));

        return $results;
    }

$results->LoginValid = SessionInfo::GetInstance()->LoggedIn()使用用戶的SESSION信息來驗證他們是否已登錄並獲取他們的信息。

這是在SessionInfo.php上找到的代碼

public function LoggedIn()
    {
        if (!isset($_SESSION["LoggedIn"]))
            $this->SetLoggedIn(false);

        return $_SESSION["LoggedIn"];
    }

如何正確傳遞該PHPSESSID信息,以便SessionInfo::GetInstance()->LoggedIn()知道要獲取它並驗證用戶信息?

TL; DR- >是否存在與cURL CURLOPT_COOKIE等效的$ .ajax嗎? 當通過cURL執行此操作時,這似乎就是通過適當的渠道傳遞該信息的原因。

預先感謝大家!

頁面呈現時,將會話ID嵌入到隱藏的輸入元素中,即

 <input type=hidden name=sessionid value='<? inject here ?>'/> 

進行ajax調用時,請從隱藏的input元素中讀取值,並將其包含在要回發的數據中。

暫無
暫無

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

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