【问题标题】:PHP Issues with forms and refreshing/storing data表单和刷新/存储数据的 PHP 问题
【发布时间】:2014-01-16 02:08:05
【问题描述】:

作为第一次尝试 PHP,我决定尝试制作一个基本的 Hangman 游戏。我的大部分逻辑已经完成,但是在弄清楚如何获取用户输入并使用它时遇到了重大问题。

理想情况下,我希望有一个带有提交按钮的文本框。我想验证输入以确保只输入了小写输入,然后假设一切正常,然后将字母输入到将显示在提交表单下方的数组中。

基本上,我希望将用户输入定向到我的函数,而不会完全刷新页面并丢失所有数据。有没有办法解决这个问题?我一直在浏览这个网站,人们似乎唯一推荐的东西是 ajax/jquery 和会话,作为初学者,所有这些似乎都非常复杂且难以学习。我已经尝试了这个网站上推荐的多种东西,但我无法完全理解它。我只想要一些非常基本的功能,因为这是我学习和理解 PHP 的早期阶段。

<?php

function comparison()
{   
$theWord ="test";
$theSplit = str_split($theWord);
$currentWord = array(); 
$lettersGuessed = array();
$guessAttempts = 7;
$score = 0;

print_r($theSplit)."<br>";

for($i=0;$i<count($theSplit);$i++)
{
    $currentWord[$i] = "_";
}

print_r($currentWord)."<br>";

$userLetter = "o";

  if (ctype_lower($userLetter)) 
    {
        echo "The user-submitted letter is lowercase. Niceness!<br>";
    } 

  else 
    {
        echo "Invalid submission pigeon-face. Only lowercase letters please muches.<br>";
    }

  if(strpos($theWord,$userLetter) !== false)
    {
        echo "This word contains the letter ".$userLetter."<br>";
        $score++;   
    }

  else
    {
        echo "This word does not contain the letter ".$userLetter."<br>";
        $guessAttempts--;   
    }

$start = 0;

while(($pos = strpos($theWord, $userLetter, $start)) !== false)
    {
        $start = $pos + 1;
        $currentWord[$pos] = $userLetter;
    }

foreach ($currentWord as $letter)
{
    echo $letter." ";
}

array_push($lettersGuessed,$userLetter);
//print_r($lettersGuessed);
print_r($score);
print_r($guessAttempts);

}
?>

这是我在游戏中使用的粗略主要逻辑,但显然我希望用户提交的信函代替手动分配的 $userLetter 变量值。稍后我也会写一个单词生成器。

这段代码虽然显然非常基本,但可以完成我认为游戏需要的大部分工作,但我只是想让提交的东西正常工作,并且在它被解决时不会破坏单词的显示/数组等。

我意识到这是一个措辞不佳的问题,但我希望人们能够理解我的问题的性质,并愿意帮助一个菜鸟。

提前致谢

【问题讨论】:

    标签: php forms validation session


    【解决方案1】:

    您可以在提交表单时调用 Javascript 函数,并使用它来进行验证。

    看到这个问题:Form Submit Execute Javascript Best Practice?

    验证逻辑看起来很简单,因此您应该能够编写一个 JavaScript 函数来检查表单数据,然后在检查出时执行完整的帖子。 JavaScript 函数还可以操作页面以显示错误等。

    如果需要在服务器端进行验证,您将需要使用 AJAX 进行另一个调用,或者重新加载整个页面。

    【讨论】:

      猜你喜欢
      • 2020-02-13
      • 1970-01-01
      • 2012-02-22
      • 2019-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-17
      • 1970-01-01
      相关资源
      最近更新 更多