2014-06-06 52 views
0

我正在用php/mysql創建一個服務,用戶必須在使用它之前進行註冊。關於創建新用戶的PHP會話錯誤

  1. 我有一個的index.php文件在那裏你可以註冊和登錄。它在文件`

    <?php 
        session_start(); 
        if(isset($_SESSION['id'])) 
        { 
         header("location: foosball/"); 
         exit(); 
        } 
        session_write_close(); 
    ?> 
    
  2. 然後我有register.php文件時,一個新的用戶嘗試註冊,我用的頂這個PHP會話確認。我在這裏開始新的會話,但本次會議不工作,當我試圖進入禁區桌上足球/ index.php文件

    session_start(); 
    session_regenerate_id(); 
    setcookie(session_name('Foosball'),session_id(),time()+56*7*24*60*60); 
    $_SESSION['id'] = $mysqli->insert_id; 
    $_SESSION['firstname'] = $firstname; 
    $_SESSION['lastname'] = $lastname; 
    $_SESSION['email'] = $email; 
    $_SESSION['company'] = $company; 
    $_SESSION['state'] = $state; 
    session_write_close(); 
    header('Location: foosball/'); 
    
  3. 桌上足球/ index.php的文件也有會話檢查在頂部。

    <?php 
        session_start(); 
    
        if(!isset($_SESSION['id'])) { 
        header("location: ../index.php"); 
        exit(); 
        } 
    ?> 
    

的問題是,當我註冊和用戶數據添加到數據庫中我也想設置一個會話,並繼續桌上足球/ index.php的區域。但會話無效,導致foosball/index.php頁面上的會話檢查將用戶返回到index.php頁面。但是,當我用登錄腳本登錄並設置新的會話時,一切都按預期運行。我真的希望你們能幫助我。

感謝 卡斯帕

+0

有你tryed打印每$ _SESSION看呢?嘗試將'exit();'放在'header('Location:foosball /');'in'後面'var_dump()'看到你的會話ID' – napster3world

+0

' register.php? –

回答

0

因爲函數使用插入數據庫中的ID不返回任何如此$_SESSION['id']將永遠取消設置您需要修改INSERT_ID功能,以返回的東西您的腳本不工作例如你試圖插入的id,並從你的腳本中調用它來傳遞你想添加到數據庫中的id。

例:

$_SESSION['id'] = $mysqlObject->insert_id(mysql_real_escape_string($_GET['id'])); 

功能:

function insert_id($id){ 
    //Insert values is db 
    //... 
    return $id; //then return something to put into $_SESSION['id'] 
} 
+0

感謝他的工作! –