2017-06-02 62 views
-1

我想检查此页面上的表格,如果输入正确的一切我想要送$name$sport$beoefenaar$texthttp://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> 
+0

什么“下一页”页?你只有一个文件在这里,并使用“自我”作为行动。 051R4-verwerk.php文件中有什么? –

+0

你也应该得到未定义的变量通知。 –

回答

1

问题是你没有包含你的第二个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; 
} 
相关问题