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
文件中有什么内容?您还应该得到未定义变量通知。