如何在PHP中页面刷新后保持变量不变

时间:2013-05-03 18:39:41

标签: php function variables get text-files

我正在创建一个简单的hangman应用程序,我有我的php文件和一个单独的.txt文件,其中包含单词,每行一个。

我想要的是$ word变量在页面刷新后保持不变,因为我打算使用GET或POST来获取用户的输入。

在下面的示例代码中,我希望$ word在提交表单后保持不变。 我相信将代码转移到另一个地方是一件简单的事情,但我无法弄清楚这个PHP菜鸟的任何帮助会受到赞赏!

wordsEn1.txt:

cat
dog

的functions.php:

<?php

function choose_word($words) {
    return trim($words[array_rand($words)]);
}
?>

hangman.php:

<?php
include('functions.php');

$handle = fopen('wordsEn1.txt', 'r');
$words = array();

while(!feof($handle)) {
$words[] = trim(fgets($handle));
}

$word = choose_word($words);

echo($word);
echo('<form><input type="text" name="guess"></form>');
?>

3 个答案:

答案 0 :(得分:7)

使用会话:

session_start();   // in top of PHP file
...
$_SESSION["word"] = choose_word($words);

$_SESSION["word"]将在刷新

如果你关心“生命周期”,也请遵循这一点(把它放在session_start之前)

session_set_cookie_params(3600,"/");

整个域(“/”)

小时

答案 1 :(得分:0)

您可以使用隐藏的输入:

<form method="POST">
    <input type="text" />
    <input type="hidden" name="word" value="<?php echo $word; ?>" />
</form>

......并在下一页:

if(isset($_POST['word'])) {
    echo $_POST['word'];
}

或者您可以使用PHP $_COOKIE,可以永久调用(但如果您只是想在下一页上使用它,那就太浪费了):

setcookie('word', $word, time()+3600, '/');

......并在下一页:

echo $_COOKIE['word'];

答案 2 :(得分:0)

只需使用隐藏类型的表格即可解决该问题。如果我们将其放入会话中,同时页面也会刷新其隐藏内容。如果您可以将该值存储在隐藏的表单字段中,则可以随时对其进行存储和检索。