PHP验证的简单HTML表单

时间:2016-03-05 09:40:40

标签: php html

我遇到了一个带有PHP验证的简单HTML表单的问题。这是一个通用的问题,所以这里有一些我已经看过的堆栈溢出答案:

HTML form with PHP - 使用javascript

尝试:Html form with php validation and honeypot 但它给了我:'/'应用程序中的服务器错误。

这是我的HTML:

<!DOCTYPE html>

<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>

        <form action ="process.php" method ="POST">
            First Name: <input type="text" name="fName"> 

            <input type="submit">       
        </form>



    </body>
</html>

和PHP:

<?php 

    if($_SERVER["REQUEST_METHOD" =="POST"]) {
        //collect value of input fields:
        $fName=$_REQUEST['fName'];

        echo $fName; 
    }
?>

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>

    </body>
</html>

表单提交并调用我的process.php页面,但它不会回显我的fName值。

3 个答案:

答案 0 :(得分:1)

错误在这里

$_SERVER["REQUEST_METHOD" =="POST"]// wrong close of squre bracket
                         ^^

这将是

$_SERVER["REQUEST_METHOD"] =="POST"

阅读http://php.net/manual/en/reserved.variables.server.php

答案 1 :(得分:1)

你也可以这样做。

  <?php 

 if(isset($_POST['fName'])) {
    //collect value of input fields:
    $fName=$_POST['fName'];

    echo $fName; 
   }
 ?>

答案 2 :(得分:-1)

您的代码中存在一些基本问题,Thomas。

有趣的是,当使用GET或POST传递参数以将它们传递到其他地方时,请指定enctype。

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <form action ="process.php" method ="POST" enctype="multipart/form-data">
            First Name: <input type="text" name="fName">
            <input type="submit">       
        </form>
    </body>
</html>

但这不是解决问题的方法。只是一个建议。

你的问题在于你在PHP代码中做错了。

首先,这里存在语法错误:

if($_SERVER["REQUEST_METHOD" =="POST"]) {

这一行应为:

if($_SERVER["REQUEST_METHOD"] =="POST") {

正如您所看到的,您错放了结束括号。

此外,由于你正在使用POST,获取post变量的正确位置是$ _POST,而不是$ _REQUEST。然后,而不是

$fName=$_REQUEST['fName'];

应该是

$fName=$_POST['fName'];

最后,要做的正确测试不是“我的请求使用了哪种方法?”正如你所做的那样

if($_SERVER["REQUEST_METHOD"] =="POST")

但是“我想要真正定义的变量是什么?”,如

if (isset($_POST["fName")) 

因为当您尝试为变量分配一个不存在的值时,缺少此测试可能会产生错误。

但后来我有一个问题:为什么您认为在PHP代码中需要这个?

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
    </body>
</html>

这在PHP代码中没有任何用处。您甚至没有使用此HTML结构来显示您的数据。这让我想起编程中的一个基本规则:取出你不需要的所有内容,这样你就可以专注于真正重要的事情。