在页面刷新php会话

时间:2016-11-08 14:56:47

标签: php session post

我将数据从一个站点发布到另一个站点,然后将发布的数据转换为会话。

来自其他网站的

表格

<form action="https://www.122.co.uk/11/" method="POST">
<input type="hidden" name="userid" value="1010101">
<input type="submit" value="Go" style="font-size:14px; padding:20px;">

然后我将此数据发布到我的新网站,然后将其转换为变量$userid

然后检查变量是否为空,如果没有显示某些代码。

检查变量不为空

if (!empty($userid)) {
    ?>
    <div class="container">
        <?php
        echo "<hr>";
        echo "You Are Logged In,</br>";
        echo "Your User ID is <strong>" . $_POST['userid'] . "</strong>.";

当我单击按钮刷新页面时,我会松开会话数据,因此检查中的代码不会显示。

如何刷新页面并保留会话数据?

按钮刷新

<button class="btn btn-primary hidebutton showbuttonv2" role="button" id="homebutton" onClick="history.go(0)">Home</button>

完整代码spinet

<?php

session_start();

$_SESSION['userid'] = $_POST['userid'];

$userid = $_SESSION['userid'] = $_POST['userid'];

//$_SESSION["userID"] = $userid;

if (!empty($userid)) {
    ?>
    <div class="container">
        <?php
        echo "<hr>";
        echo "You Are Logged In,</br>";
        echo "Your User ID is <strong>" . $_POST['userid'] . "</strong>.";

2 个答案:

答案 0 :(得分:1)

这是因为即使$_POST['userid']字段中没有任何内容,您仍然会使用POST数据覆盖会话数据。

我发现你是编程(PHP)的新手,因此我建议你坐下来思考一下你想做什么。然后尝试写下执行这些操作所需步骤的短项列表。请记住确实特定,因为这是您编写代码时所需要的。这被称为伪代码,是编程中的重要工具 完成后,请仔细阅读您编写的代码,并真正阅读它的功能。不只是你期望它。然后,您将了解编程的工作原理。 ;)

简短示例,基于您发布的代码:

  • 开始会话。
  • 如果用户提交了ID - &gt;会话中的商店ID
  • 如果会话包含用户ID - &gt;显示登录确认。
    :其他 - &gt;显示登录表单

您的代码,&#34;英语&#34;形式。

// Start the session
session_start ();

// Save the POSTed value from the form in the session array.
$_SESSION['userid'] = $_POST['userid']; 

// Save the POSTed value fromthe form in the session array, and a variable of its own.
$userid = $_SESSION['userid'] = $_POST['userid'];


// If we have a (non-empty) value in the user ID variable.
if (!empty ($userid)) {
    // Show the login confirmation.
}

如您所见,您的预期行为与您编写的代码之间存在差异。 :)

请记住:详细信息总是在编程中很重要。

此外,使用JavaScript history创建面包屑并不是最好的选择。这将导致用户有些不可预测的行为,尤其是当他们从网络搜索进入您的页面时。 (它会再次将它们带到搜索引擎,而不是您的主页。)
这就是为什么我建议使用正确的URL。相对的,或动态创建的完整的。这样,您始终可以完全控制用户在单击链接时的结果。 :)

编辑,添加#2: 以下是我编写代码的方法,以执行伪代码概述的任务。

// Using sessions to persist data across page views.
session_start ();

// Check if user has tried to log in.
if ($user = login_user ($username, $password)) {
    // He has. Use session to keep him logged in.
    $_SESSION['user'] = $user;
}

// If the user is logged in, show confirmation message.
if (!empty ($_SESSION['user']['id'])) {
    $page = 'login_confirmed';
} else {
    $page = 'login_form';
}

查看注释和代码如何与子弹列表中的伪代码对齐?它是如何详细描述你想要的? ;)

答案 1 :(得分:1)

如果最后一个为空,您可能不希望将$_SESSION['userid']设置为$_POST['userid']的值。

<?php

    session_start();

    // check that $_POST['userid'] is set
    if (isset($_POST['userid'])) {
        $_SESSION['userid'] = $_POST['userid'];
        $userid = $_SESSION['userid'];
    }

    if (!empty($userid)) {
?>