我无法回显会话用户名,我是否正确存储会话用户名和ID?

时间:2012-03-12 04:33:34

标签: php mysql session

我正在设置登录表单。

预期结果:

成功登录后页面上的Echo会话用户名。

实际结果:

登录成功。会话用户名不回显。看起来好像会话用户名不存在或者没有持久到下一页。

下面的代码有问题吗?

的login.php

...
session_start();    
    if (mysql_num_rows($result) ==1)
    {
    session_regenerate_id();
    $row = mysql_fetch_assoc($result);
    $profileid = $row['userid'];
    $profile = $row['username'];
    //Set session
    $_SESSION['profileid'] = $profileid;
    //Put name in session
    $_SESSION['profile'] = $profile;
    //Close session writing
    session_write_close();

    //Redirect to user's page
    header("location: index.php?msg=userpage");
    exit();
    }
...

的index.php

...
    <?php
    session_start();    
    if($_GET['msg']=="userpage")
    {
    echo $_SESSION['profile'];

    } 
...

编辑: 把session_start放在php标签中。 将HTML更改为INDEX.PHP “如果”支架关闭。
在LOGIN.PHP中更改为if。 将用户名更改为用户页面

3 个答案:

答案 0 :(得分:0)

您不需要打开/关闭会话,这不值得额外的代码行。我也不知道你为什么要重新生成会话ID。

但是,有一点是你的HTML文件构造糟糕,而且几乎看起来session_start()不在任何PHP标签内,因此它甚至不被视为代码。

答案 1 :(得分:0)

首先, HTML 尚未 PHP ,因为它只涉及PHP标记。

while替换为if因为您只想设置$ _SESSION变量一次。

最后一部分你要找的是

<?php
session_start();   //at the beginning of your script
if($_GET['msg']=="username")
{
 echo $_SESSION['profile'];
}
?>

确保在打开脚本上的第一个<?php标记之前消除所有空格,因为这会产生潜在的标题错误。

答案 2 :(得分:0)

关闭html文件中的if循环

  

<强>编辑:

我在我的页面中完成了这个简单的代码,并按照会话概念进行了概述代码工作正常...相应地进行更正

<强> p1.php

<?php
    session_start();    

        //Put name in session
    $_SESSION['profile'] = "Pranav";
    //Close session writing


    //Redirect to user's page
    header("location: p2.php?msg=userpage");
    exit();

?>

<强> p2.php

<?php 
session_start();    
    if($_GET['msg']=="userpage")
    {
    echo $_SESSION['profile'];

    }

?>

FOR NEW SESSION ID 使用这个

$a = session_id();