【问题标题】:PHP using sessionsPHP 使用会话
【发布时间】:2013-03-17 19:18:57
【问题描述】:

我有一个用户登录的 login.html 页面及其信息;姓名和邮政编码显示。此信息显示在 login.php 页面上。

<?php
session_start();

echo "systemResult=Success";
        $row=mysql_fetch_array($result);
        echo $row['Name']." is located at".$row['Postcode'];
        $_SESSION['name'] = $row['User_id'];

我希望此信息以表单的形式显示在不同的页面上,而不是在当前显示的页面上。 (如下图)

<form name="form1" method="post" action="info.php">
            <strong>info</strong>
            <br />
            <br />
            Name: <input name="name" type="text" id="name" />
            <br />
            Postcode: <input name="postcode" type="text" id="postcode" />
            <br />

            </form

            <div data-role="content">
            <?php
            session_start();
            echo $_SESSION['user_id'] 

我已经在 login.php 页面上设置了会话,但它仍然在错误的页面上显示信息。在“信息”页面上,信息会显示,但不会显示在表单中。

总而言之,我希望 login.php 中显示的信息显示在 info.php 中,所以当用户登录时,它会自动将他们带到 info.php,显示他们的信息。

信息来自 phpmyadmin 数据库。

提前致谢

Info.php 页面

<!DOCTYPE html>
<?php
session_start();
echo $_SESSION['user_id'] 
?>
<html>

    </head>
    <body>
        <!-- Home -->
        <div data-role="page" id="page1">
            <div data-theme="a" data-role="header">
            <a data-role="button" data-theme="c" href="menu.html" data-icon="arrow-l" data-iconpos="left" class="ui-btn-left">
                    Main Menu
                    </a>
                <h3>
                    Your info
                </h3>
            </div>
            <form name="form1" method="post" action="login.php">
            <strong>Details</strong>
            <br />
            <br />
            Name: <input name="name" type="text" id="name" />
            <br />
            Postcode: <input name="postcode" type="text" id="postcode" />

            </form


         </div>
    </body>
</html>

【问题讨论】:

  • 你的问题对我来说很不清楚。您的会话代码是否不起作用(对我来说看起来不错)还是要在登录后重定向用户?
  • 将名称和邮政编码信息重定向到表单设置中的 info.php,而不是现在显示在 login.php 中的位置
  • 您没有将姓名和邮政编码数据放入会话中。您正在设置$_SESSION['name'],然后读取未设置的$_SESSION['user_id'] (=空)。
  • $_SESSION['user_id'] 是在 phpmyadmin 数据库中设置的行的名称。这就是信息的来源。
  • 不,不是。 $_SESSION['user_id'] 从会话中读取,而不是从数据库中读取。你也设置$_SESSION['user_id']。如果你打开 PHP 警告和通知你会得到一个错误。

标签: php html phpmyadmin


【解决方案1】:

首先,您的页面需要是.php

其次,您必须在页面上呈现任何内容之前使用session_start() 启动会话。在页面开头的标题上方启动会话。

阅读PHP SESSIONS

更新

将您的info.php 代码更改为如下所示:

<?php
session_start();
// This needs to go before ANYTHING else on the page.
?>
<!DOCTYPE html>
<html>

    </head>
    <body>
        <!-- Home -->
        <div data-role="page" id="page1">
            <div data-theme="a" data-role="header">
            <a data-role="button" data-theme="c" href="menu.html" data-icon="arrow-l" data-iconpos="left" class="ui-btn-left">
                    Main Menu
                    </a>
                <h3>
                    Your info
                </h3>
                <p>
                    <?php // Put this where you want to echo the user_id on the page
                     echo $_SESSION['user_id']; ?>
                </p>
            </div>
            <form name="form1" method="post" action="login.php">
            <strong>Details</strong>
            <br />
            <br />
            Name: <input name="name" type="text" id="name" />
            <br />
            Postcode: <input name="postcode" type="text" id="postcode" />

            </form


         </div>
    </body>
</html>

【讨论】:

  • 刚刚试过,现在info.php中的信息根本不显示。它只显示空表单
  • 如果不发布更多代码,包括所有info.php,任何人都无法看到发生了什么。此外,即使是处理登录表单的文件也需要声明 session_start()
  • 我已经发布了 info.php 页面
【解决方案2】:

您的会话变量名为 $_SESSION['name'],在 login.php 文件中将其更改为 $_SESSION['user_id'] = $row['User_id']。也许您想要多个会话变量?如:

$_SESSION['user_id']  = $row['User_id'];
$_SESSION['name']     = $row['name'];
$_SESSION['postcode'] = $row['code'];

正如已经提到的 session_start() 需要在其他任何事情之前完成,将 php 代码移动到 DOCTYPE 之前。

【讨论】:

    【解决方案3】:

    我亲爱的朋友,我认为您对会话变量感到困惑。请记住,你应该开始

    session_ start( );
    

    在你的 php 页面的最开始,在任何事情开始之前。 您可以将值存储到会话变量中,如下所示

    $_SESSION['demo'] = 'Hello';
    

    您可以检索会话变量,如下所示

    echo $_SESSION['demo'];
    

    就是这样。 在分配给会话变量之前,请仔细检查您是否从 db 获取值

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-28
      • 1970-01-01
      • 2014-07-31
      • 2017-08-17
      • 2018-11-13
      • 2011-04-09
      • 1970-01-01
      • 2014-01-29
      相关资源
      最近更新 更多