2014-06-21 24 views
-1

我檢查的this question它接受的答案,但沒有幫助如何將POST變量值附加到AJAX中的新SESSION變量並從其他腳本調用它?

我試圖做一個AJAX POST請求請跟隨我的註冊表格中,ajax.php文件將檢查輸入的信息,例如密碼匹配與否,然後將$ _POST變量附加到$ _SESSION變量,以便稍後可以從任何其他頁面調用提交的數據。

Ajax.php

... 
if ($everythingValid) { 
// add this user to db 
$_SESSION["signup_details"] = $_POST; 
echo "[email protected]".$core->signupPaymentUrl($package); // tried without this line but didn't work 
exit(); // tried without this line but didn't work 
} else { 
foreach ($errors as $e) print "<br>".$e; 
exit();  
} 
... 

,我使用調用文件jQuery代碼是以下:

var form = $('#signup'); 

$("#submit").click(function() { 

$.ajax({ 
    type: "POST", 
    dataType: 'html', 
    crossDomain: true, 
    url: form.attr('action'), 
    data: form.serialize(), 
    success: function(response) { 
    if ("SUCCESS" === $.trim(response.split('@')[0])) { 
    // user created, redirect to payment page 
    var paymentUrl = $.trim(response.split('@')[1]); 
    window.location.href = paymentUrl; 
    } else { 
    $("b#signupErr").hide(); 
    $("b#signupErr").html(response); 
    $("b#signupErr").fadeIn(); 
    } 
    } 
}); 

}); 

提交表格後,我順利拿到重定向到付款網址,但是,在訪問我想要使用我的會話的網頁後,我無法弄清楚如何檢索我的會話,但我確定我已經在中包含session_start ajax.phpcompleteOrder.php並且在打開php標記之前沒有空格。

這裏是我包括在這兩個文件的行:我試圖對的var_dump在ajax.php $ _SESSION變量

if(!session_id()) session_start(); 

,它看起來不錯。然而,當我的var_dump上completeOrder.php會話變量它表明我NULL

最後這裏是completeOrder.php內容

if(!session_id()) session_start(); 

require_once("core.php"); 
$core = new coreOptions(); 
$email = $_SESSION["signup_details"]["email"]; 
$password = $_SESSION["signup_details"]["password"]; 
$package = $_SESSION["signup_details"]["pkg"]; 

$options = $core->attachOptions($package); 

if ($core->registerUser($email,$password,$options,$package)) 
$core->redirect("registrationCompleted.php"); 
+1

我們應該如何知道您的'completeOrder.php'文件的功能以及它的外觀? – idmean

回答

0

在completeOrder.php文件中刪除if(!session_id()) session_start();

,然後只添加session_start();,它會做的伎倆!

0

session_id()如果之前沒有調用session_start(),將返回一個空字符串ajax.php。所以ajax.phpsession_start()將永遠不會被調用,$_SESSION的內容將不會被存儲在任何地方。

所以只需使用:

session_start(); 

兩個文件。

+0

我在這兩個文件上只使用了session_start,但沒有幫助。 –

+0

是的,但有這條if條款。完全刪除if子句。 – idmean

+0

這個'session_start();'完全替代了這個if(!session_id())session_start();'。 – idmean

相關問題