我正在尝试制作一个简单的文字游戏。 这个想法是用户单击一个按钮,服务器生成一个字母并将其存储在一个数组中,该过程重复十次(我在下面使用的临时解决方法是我一次生成所有11个字母)。 现在,用户从选择的字母中得出他/她可以和的最长单词 然后,用户提交该单词,然后计算机检查该单词是否在词典中,如果存在,则显示“成功”,如果不是,则显示“ xzy单词未出现在我们的词典中”。 我并不是在寻找所有的检查和安全检查,仅此而已 a)当用户单击按钮时,计算机将字母存储在数组中 b)计算机检查用户提供的单词是否在预定义的词典中(在单独的.txt文件中)。
此刻我遇到的问题是,每当我单击按钮时,我所有的数组都会被覆盖 要么带有新字母,要么就是空的。 我怀疑提交的行为正在重置所有内容,但我似乎无法使程序记住 选择了哪些字母,并且不检查字典中是否存在单词。 如何永久存储东西? 代码在下面。
<?php
//the array to chose letters from (possible letters)
$PosLetters = [
'a','b','v','g','d',
'đ','e','ž','z','i',
'j','k','l','lj','m',
'n','nj','o','p','r',
's','t','ć','u','f',
'h','c','č','dž','š'
];
//generate 11 letters user can chose from
if (isset($_POST['choose'])) {
for ($i=0; $i < 11; $i++) {
$Rndnumber = mt_rand(0,29);
$Convert = $PosLetters[$Rndnumber];
$Letters[] = $Convert;
}
}
//function that does the check wether user submited word is in my dictionary
function loadFromfile(){
if (isset($_POST['submitword'])) {
//load all the words from file
$vocab = file('http://localhost/igra_slaganje_reci_php/recnik.txt');
//check if user submited word is in the dictionary
if (!empty($_POST['yourword'])) {
$jki = in_array($_POST['yourword'], $vocab);
if ($jki == true) {
echo 'Success';
}else{
echo $_POST['yourword'] . ' doesn't appear in our dictionary.';
}
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
span {
min-width: 50px;
padding: 15px;
margin-right: 15px;
border: 3px solid red;
font-size: 25px;
}
</style>
</head>
<body>
<form method="post">
<input type="submit" name="choose" value="odaberi slovo">
</form>
<div class="letters">
<?php
//put chosen letters each into it's own span
foreach ($Letters as $key => $value) {
echo '<span>' . $value . '</span>';
}
?>
</div>
<div class="subbmitedword">
<form method="post">
<input type="text" name="yourword">
<input type="submit" name="submitword" value="submit word">
</form>
<?php
loadFromfile();
?>
</div>
</body>
</html>
答案 0 :(得分:1)
您可以将$ PosLetters存储在$ _SESSION中。 然后,每次页面刷新时,您首先要从会话中读取数组,然后再继续。 http://php.net/manual/en/reserved.variables.session.php