2013-03-24 68 views
0

我有一個表單,它將一些東西插入到MySQL數據庫中。存儲會話並回顯後,什麼也沒有顯示

用戶名。 密碼。 ID。

我將用戶名存儲到一個會話中,然後我更改標題(.php?recovery = success)。 之後,我想測試一下我的會話是否正常工作(爲了以後的使用,那麼我可以去數據庫中該用戶名的列來獲取我們插入的ID,如果我只是做echo $ ID,它會生成一個新的。ID

else if (isset($_GET['recovery']) && $_GET['recovery'] == 'success') 
{ 
echo $_SESSION['user']; 

    /* 

    ***REMOVED FOR TESTING*** 

    $fetch = $connect->query("SELECT * FROM users WHERE username = ':username' LIMIT 1"); 
    $fetch->bindValue(':username', $_SESSION['user']); 
    $fetch->execute(); 

    while($row = $fetch->fetch(PDO::FETCH_ASSOC)) { 
     echo $row['recover_id']; 
    } 
    */ 
} 

問題:??

我填了表格,在呼應會話數據時,提交帶我去recover.php恢復=成功 然後,沒有輸出

我需要打開新會話的文件session.inc.php。

這是整個代碼:

http://pastebin.com/ba77rDi3

我在做什麼錯?

我是PHP新手,特別是PDO。 謝謝!

補充:

Session.inc.php

<?php 
session_start(); 
?> 
+0

'session.inc.php'中有什麼? – 2013-03-24 16:05:25

+0

你如何開新會議? – str 2013-03-24 16:05:28

+0

@John <?php session_start(); ?> – 2013-03-24 16:06:14

回答

2

它看起來像你的代碼信息存儲到會話中,然後用一個呼叫重定向到頭部(見段)。

   // Let's store these into a session now. 
       $_SESSION['user'] = $username; 
       $_SESSION['pass'] = $password; 

       //Now let's refresh the page, to a different header. 
       header('Location: recover.php?recovery=success'); 

只是要謹慎;我會執行離開當前頁面之前顯式調用奉勸

session_write_close()

您的重定向之前,以確保會議數據被正確保存......像這樣:

    // Let's store these into a session now. 
        $_SESSION['user'] = $username; 
        $_SESSION['pass'] = $password; 


        session_write_close();      

        //Now let's refresh the page, to a different header. 
        header('Location: recover.php?recovery=success'); 
+0

謝謝你的回答,我已經嘗試過了,它並沒有真正改變,只是沒有顯示過去那樣的東西。 – 2013-03-24 16:18:41

+0

另外;我只注意到你的FORM元素被設置爲通過POST提交它的動作。除非你在你的URL中手動設置GET,或者我在你的代碼中錯過了一個地方,在PHP調用header()之前,你通過PHP設置GET,你將永遠不會**擊中你正在查找的IF..THEN塊。 - isset($ _ GET ['recovery'])&& $ _GET ['recovery'] =='success')。 – Dogoferis 2013-03-24 16:20:35

+0

啊!沒關係,我明白了;它直接調用header() – Dogoferis 2013-03-24 16:22:25

1

問題是:

我把代碼中的語句中是檢查是否恢復設置

if (!isset($_GET['recovery'])) { 

位於代碼的頂部,如果您在pastebin中沒有看到。

我把代碼放在該語句之外,它工作。

相關問題