拼写检查PHP

时间:2013-08-08 02:47:12

标签: php html spelling

<table align = "left">


<?php

if ($_POST["word"] == "ship" )
{
echo "Your answer is correct.";
}
else
{
echo "Sorry, you typed the wrong answer. Try Again!";
}


?>

<tr>
<td> <span id="dummy" onclick="playSound(this,'vowels/ship.mp3');">
<img src="pics/i.jpg" onmouseover="this.src='pics/vowel/ship.jpg';this.width=200;this.height=250" onmouseout="this.src='pics/i.jpg';this.width=100;this.height=150"/>

 <form action="act_vowel.php" method="post">
 <h2> <font color = "black">  Type the word: <input type="text" name="word"> </h2> </font>
  <input type="submit" name="check" value="Answer">
  </form>

当我运行此代码时。我总是得到这样的错误:

  (Notice: Undefined index: word in C:\xampp\htdocs\dyslexia\sample.php on line 15
  Sorry, you typed the wrong answer. ) 

如何在用户输入答案时设计结果?我希望它更生动。谢谢!

4 个答案:

答案 0 :(得分:4)

您需要检查是否定义了POST值:

if (isset($_POST["word"])) {
    if ($_POST["word"] == "ship" )
    {
        echo "Your answer is correct.";
    }
    else
    {
        echo "Sorry, you typed the wrong answer. Try Again!";
    }
}

答案 1 :(得分:1)

它可能是两者之一:

  1. 也许你发帖到了错误的文件!!
  2. 从你的错误中说出来

      

    (注意:未定义的索引:第15行的C:\ xampp \ htdocs \ dyslexia \ sample.php中的单词     对不起,你输错了答案。 )

    而您的表单发布到页面 act_vowel.php“

    <form action="act_vowel.php" method="post">

    您确定要发布到正确的页面吗?这也可能是错误的根源(不是说它是,但它是可能的)

    1. 在比较其值之前,您没有检查是否设置了$_POST["word"]变量。
    2. 尝试以下

      if(isset($_POST["word"]) && $_POST["word"]=="ship"){
          echo "Your answer is correct.";
      }else{
          echo "Sorry, you typed the wrong answer(Or maybe didnt type it :P). Try Again!";
      }
      

答案 2 :(得分:1)

如果所有这些都在同一个PHP页面上,那么当您第一次加载页面时,而不是在将值发布到它之后,您正在检查该值。在尝试回复之前,您需要检查表单帖子是否存在:

if (isset($_POST["check"]))
{
    if ($_POST["word"] == "ship" )
    {
        echo "Your answer is correct.";
    }
    else
    {
        echo "Sorry, you typed the wrong answer. Try Again!";
    }
}

至于你上次的评论:

  

如何在用户输入答案时设计结果?我希望它更生动。

您可以做的一件事是检查JavaScript中的拼写而不是PHP,这样就不需要表单帖子了。如果您希望在用户输入时进行此操作,则可以回复keypress事件。以jQuery为例:

$('input[name=Word]').keypress(function () {
    if ($(this).val() == 'ship') {
        $('#result').text('Your answer is correct.');
    } else {
        $('#result').text('Sorry, you typed the wrong answer. Try Again!');
    }
});

这将使用响应更新id“result”的元素(您将其放在页面的某个位置):

<span id="result"></span>

但是,响应用户类型的用户体验可能有点尴尬。在输入单词时,他们会一直被告知在完成之前它是错误的,这在输入正确答案时有点负面。

答案 3 :(得分:0)

http://jsfiddle.net/bCpLm/1/

也改变HTML,你的无效!

在表单中添加一个id,以便您可以使用JavaScript更轻松地操作它

<form action="act_vowel.php" method="post" id="form">
     <h2> <font color = "black">  Type the word: </font> </h2> 
    <input type="text" name="word" />
    <input type="submit" name="check" value="Answer" />
</form>

以下内容仅在用户启用了javascript时才有效,但您不太可能遇到禁用该功能的用户,但您应该始终适应所有人!

var form = document.getElementById("form");
form.onsubmit = function () {
    if (document.getElementsByName("word")[0].value.toLowerCase() == 'ship') {
        alert('Your answer is correct.');
    } else {
        alert('Sorry, you typed the wrong answer. Try Again!');
        return false;
    }
}

以适应禁用javascript的用户将以下内容添加到act_vowel.php文件

if (isset($_POST["word"])) {
    if (strtolower($_POST["word"]) == "ship" )
    {
        echo "Your answer is correct.";
    }
    else
    {
        echo "Sorry, you typed the wrong answer. Try Again!";
    }
}