2013-03-24 132 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中没有看到。

我把代码放在该语句之外,它工作。