Php 如何将表单数据转到下一页
我正在尝试检查此页面上的表单,如果输入的所有内容都正确,我希望将Php 如何将表单数据转到下一页,php,Php,我正在尝试检查此页面上的表单,如果输入的所有内容都正确,我希望将$name、$sport、$beoefenaar和$text发送到http://localhost/051R4-verwerk.php。但是变量没有被发送到该页面 <!DOCTYPE HTML> <html> <head> <title>Inzendopdracht 051R4</title> <meta charset="utf-8" /> <lin
$name
、$sport
、$beoefenaar
和$text
发送到http://localhost/051R4-verwerk.php
。但是变量没有被发送到该页面
<!DOCTYPE HTML>
<html>
<head>
<title>Inzendopdracht 051R4</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="style.css" type="text/css" media="all" />
</head>
<body>
<a href='viewguestbook.php'>View Guestbook</a>
<?php
// define variables and set to empty values
$nameErr = $sportErr = $beoefenaarErr = $textErr = "";
$name = $sport = $beoefenaar = $text ="";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$valid = true;
if (empty($_POST["name"])) {
$nameErr = "Name is required";
$valid = false;
} else {
$name = test_input($_POST["name"]);
}
if (empty($_POST["sport"])) {
$sportErr = "Sport is required";
$valid = false;
} else {
$sport = test_input($_POST["sport"]);
}
if (empty($_POST["text"])) {
$textErr = "Comment is required";
$valid = false;
} else {
$text = test_input($_POST["text"]);
}
if (empty($_POST["beoefenaar"])) {
$beoefenaarErr = "Comment is required";
} else {
$beoefenaar = test_input($_POST["beoefenaar"]);
}
if($valid){
header("location: http://localhost/051R4-verwerk.php");
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<h2>Laat hier u bericht achter</h2>
<p><span class="error">* required field.</span></p>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
<br><br>
Sport: <select name="sport">
<option valeu="">
<option valeu="Tennis">Tennis
<option valeu="Voetbal">Voetbal
<option valeu="Running">Running
<option valeu="Tafeltenis">Tafeltenis
<option valeu="Squash">Squash
<option valeu="Wielrennen">Wielrennen
<option valeu="Boksen">Boksen
</select>
<span class="error">* <?php echo $sportErr;?></span>
<br><br>
Beoefenaar:
<INPUT TYPE="radio" name="beoefenaar" value="0" checked>Nee
<INPUT TYPE="radio" name="beoefenaar" value="1">Ja
<br><br>
<textarea name="text" placeholder="Schrijf hier u bericht*" /></textarea>
<span class="error"> <?php echo $textErr;?></span>
<br><br>
<input type="submit" value="Verstuur"/>
</form>
</body>
</html>
InzendodDracht 051R4
你是谁
*必填字段
问题是您没有包含第二个PHP文件。您正在重定向到第二个PHP文件。这意味着您正在指示浏览器加载带有新HTTP请求的新页面。PHP不能在调用之间存储变量,所以当这个新请求传入时,所有以前的变量(和历史记录)都会丢失。每个页面的执行完全独立于其他页面
相反,完成您试图完成的任务的最简单方法是使用会话。这允许您在脚本执行之间存储有关用户的信息。PHP将自动为您创建cookie并管理会话信息。您只需将数据放入会话,然后在第二个脚本中将其从会话中取出。在您的第一个脚本中,可能看起来像这样:
if($valid){
$_SESSION['name'] = $name;
$_SESSION['sport'] = $sport;
/// and more
header("location: http://localhost/051R4-verwerk.php");
}
然后在接收脚本中:
$name = isset( $_SESSION['name'] ) ? $_SESSION['name'] : '';
$sport = isset( $_SESSION['sport'] ) ? $_SESSION['sport'] : '';
这仅在两个脚本由同一服务器托管且位于同一域上时才有效。有很多关于使用会话的教程。实际上,您仍然需要在第二个脚本中再次验证数据,因为用户可以直接访问它,而不需要会话中的任何信息
您的第二个选择是包含第二个脚本,而不是重定向到它,在这种情况下,您的变量实际上是可用的,但是您还必须调整第一个页面的工作方式。可能是这样的:
if($valid){
include "051R4-verwerk.php";
exit;
}
“下一页”是什么?这里只有一个文件,使用“self”作为操作。051R4 verwerk.php
文件中有什么内容?您还应该得到未定义变量通知。