我遇到了一个带有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值。
答案 0 :(得分:1)
错误在这里
$_SERVER["REQUEST_METHOD" =="POST"]// wrong close of squre bracket
^^
这将是
$_SERVER["REQUEST_METHOD"] =="POST"
答案 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结构来显示您的数据。这让我想起编程中的一个基本规则:取出你不需要的所有内容,这样你就可以专注于真正重要的事情。