2013-06-04 46 views
0

內創建$ _SESSION失敗時,我有一個簡單的登記表和新來的人會用Ajax功能進行註冊。在註冊完成後,我創建了一個$_SESSION['is_logged']。 在var_dumb上,我得到該var被設置。但是,當另一頁是空的重定向(我已經包括在session_start()的兩個頁面上... 我已經在網上某處讀取:

「會議只是寫在頁面加載/刷新」

是這種情況,還是我要看看我的代碼中的其他一些問題

阿賈克斯:。

 $.ajax({ 
     url:"../controllers/register.php", 
     type:"POST", 
     data:res, 
     success: function(responce){ 
      if (responce==1) { 
       $('#msg').addClass('msg-warning'); 
       $("#form").css('display',"none"); 
       $('#msg').append("<p>It seems that you have already submited the form. Click to "+ 
        " <a href='login.php'>log-in</a> or to <a href='register.php'>register</a>.</p>"); 
      } 
      else if (responce==2) { 
       $('#msg').addClass('msg-warning'); 
       $("#form").css('display',"none"); 
       $('#msg').append("<p>You have successfully created account. Click to "+ 
        " <a href='start.php'>welcome</a> to start your .</p>"); 
       $('.menu').append("<li><a href='logout.php'>Log out</a></li>") 
      } 
      else{ 
       $('#msg').text(responce); 
      } 

     }, 
     error: function(){ 
      $('#msg').text("Opss, try again"); 
     } 
    }); 

的register.php文件:

if (isset($_SESSION['submited'])) { 
    echo 1; 
    exit; 
} 

include_once('../models/functions.php'); 

// Give the post parametters to another var 
$arr=$_POST; 

// function for uploading 
$reg = registerMe($arr); 

if ($reg === true) { 
    $_SESSION['submited']=1; 
    $_SESSION['is_logged']=1  
    echo(2); 
} 
else{ 
    echo($reg); 
} 
exit; 

session_start();的被包括在所述第一頁的從AJAX其中報頭是started.And第二頁 - 其中$ _SESSION [「is_logged」]丟失,再次session_start();是dc_header();函數的一部分。 start.php:

<?php 
dc_header("Речник|Регистрация"); 

if (!isset($_SESSION['is_logged'])) { 
    #header("location: ../views/login.php"); 
    var_dump($_SESSION); 
} 

>

+0

請張貼Ajax代碼 – Sharky

+0

按道理它應該工作。郵政編碼,您可以在其中設置值以及您要檢查和重定向的位置。 –

+0

是不同子域上的重定向頁面,然後是您使用ajax調用的頁面? www.url.com和url.com被瀏覽器視爲不同的子域名,因此每個會話的會話都不相同。 –

回答

2

添加

session_start(); 

到register.php頂部

你需要指定的session_start,所以你的誰是指揮服務器執行「register.php」(來自ajax,直接調用,瀏覽器腳本,cron作業或任何可能的你的名字)將處理執行和設置$ _SESSION變量參考連接的客戶端ses錫永。服務器本身不會猜測這是「來自已經session_start頁面的ajax調用」。您需要指定在register.php中完成的任何操作都在當前客戶端的會話中完成。

+0

該死的,它的工作。所以儘管如此,我曾經在頁面的頭部包含session_start(),一旦我執行ajax查詢,我需要再次聲明session_start()。 – Alordiel

+0

感謝@sharky這就是解釋是有幫助:) – Alordiel

+1

@Alordiel什麼,是關於一個用戶,一定要在他的會議。所以,你從session_start開始。想象一下:如果你已經使用Ajax註銷,可以說ajax_log_out.php你可以看到,這是至關重要的有在session_start(否則註銷?哪個用戶)樂於幫助:) – Sharky