2017-06-02 19 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; 
} 
相關問題