【问题标题】:PHP Keep the variable scope even after the page reloadPHP 即使在页面重新加载后也保持变量范围
【发布时间】:2016-10-06 15:04:41
【问题描述】:

网站在访问首页(page1.php)时会生成1到100的随机数。用户会猜出这个数字。

第一页包含 - 用于接受的文本框 来自用户的号码,以及一个提交按钮。

第二页(page2.php)如果猜测数过高或过低都会返回给用户。该页面显示一条消息,告诉用户“太高”或“太低”。该页面还包含 一个按钮(重试按钮),允许用户返回第一页(page1.php)以重新输入新号码 一个允许用户退出游戏的按钮。

如果猜测正确,则返回第三页(page3.php)给用户。该页面显示“正确”、随机数和尝试次数。

我有这个 index.php,它是所有页面的核心。这是代码。

index.php

    <?php

$name = '';
$inputnumber = '';
$random = 33; //this is just an assumption to keep it simple
$message = '';
$guesscount = '';
if (isset($_POST['action'])) {
    $action = $_POST['action'];
}

if ($action === 'guess') {
    $guesscount = $_POST['$guesscount'];
    $inputnumber = $_POST['$inputnumber'];
    if ($inputnumber == $random) {
        $message = "Correct!";
        include 'page3.php';
    }
    if ($inputnumber > $random) {
        $message = "Too High";
        include 'page2.php';
    }
    if ($inputnumber < $random) {
        $message = "Too Low";
        include 'page2.php';
    }
}

if ($action === 'retry') {
    include 'page1.php';
}

page1.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Number Guess</title>
    </head>
    <body>
        <h1>Number Guess</h1>
        <form name="myForm" action="index.php" method="post" >
            Number Guess: <input type="text" name="$inputnumber" value="<?php if(isset($inputnumber)==1){
echo $inputnumber;}else echo ""; ?>" /><br>

            <input type="submit" name="action" value="guess" />
            <hr>
            Guess Count: <?php echo $guesscount; ?>
        </form>
    </body>
</html>

page2.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Number Guess</title>
    </head>
    <body>
        <h1>Number Guess</h1>
        <form name="myForm" action="index.php" method="post" >
            Message: <?php echo $message; ?>
            <input type="hidden" name="$guesscount" value="<?php echo $guesscount;?>"/><br>
           <input type="submit" name="action" value="retry" />

            <hr>
           Guess Count: <?php echo $guesscount;?>
        </form>
    </body>
</html>

page3.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Number Guess</title>
    </head>
    <body>
        <h1>Number Guess</h1>
        <form name="myForm" action="index.php" method="post" >
            Message: <?php echo $message; ?>
            Number of Tries: <?php echo $guesscount; ?>
           <input type="submit" name="action" value="ok" />

        </form>
    </body>
</html>

page1.php 是首先加载的页面。

我面临的挑战是,我无法始终保持 $guesscount 稳定。它一直在我身上重置。我已经尝试过会话但无法解决它。请帮助解决它。 提前致谢。

【问题讨论】:

  • 会话、cookie 或数据库 ;) - 会话应该可以正常工作,为什么它不适合您?
  • 会话应该可以工作,但不知道为什么不能。其他选项可能是您通过 POST 或 GET 传递变量(对其进行编码以便他们不知道数字),或者甚至使用 cookie。
  • 一个会话变量是去这里的方式。不确定为什么会话变量对您不起作用,但您没有显示尝试使用它们的代码,因此我们无法帮助您处理我们看不到的代码。但是,您可以只用一个 PHP 文件而不是 3 个文件来完成大部分工作,这会简化事情。
  • @SgtAJ 我可以用一页来完成。但是当我使用多个页面时会出现问题。会话在一页上工作正常。但我需要知道如何解决这个问题。
  • @MaciejCygan 我可以用一页来完成。但是当我使用多个页面时会出现问题。会话在一页上工作正常。但我需要知道如何解决这个问题。

标签: php html variables scope


【解决方案1】:

我不知道为什么,但我的直觉告诉我,会话在其他页面上不适合你的原因是因为你没有启动它??

所以你要做的是:

index.php

<?php
session_start();
$_SESSION['myVariable'] = 'myVariable';
?>

page1.php

<?php
session_start();
$mySessionVar = $_SESSION['myVariable'];
var_dump($mySessionVar); // <- this should print myVariable
?>

您可能会收到一条错误消息,指出 $_SESSION 为 null 或未设置,为了防止您只需将 $_SESSION 包含在 isset 方法中即可

if(isset($_SESSION['myVariable']) && $_SESSION['myVariable'] != null) {
  $mySessionVar = $_SESSION['myVariable'[;
}

【讨论】:

  • 感谢您的帮助。我已经在 index.php 中对其进行了初始化,但我没有在其他页面中包含会话变量。也许那会奏效。我会尽力让你知道。
  • @user3423927 它必须;)
  • 感谢您的帮助 Cygan。我可以使用会话来做到这一点。你的建议对我很有帮助。
  • @user3423927 好吧,如果这对您有帮助,请接受我的回答作为正确答案:)
猜你喜欢
  • 2019-04-07
  • 1970-01-01
  • 2016-07-15
  • 1970-01-01
  • 2015-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多