我在提交表單後加載新鮮的「thankyou.php」文件時出現問題。表單將數據發送給自己,如果所有數據都通過了驗證,則會繼續將它們保存在數據庫中。PHP URL重定向不能按預期方式工作
「thankyou.php」負載很重,但「signup.php」仍然存在,兩個文件的輸出仍保留在同一頁面中。我想要一個新的頁面,但它不會工作。
這裏是我的環境衛生:
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["firstName"]))
{$Err[] = "* First Name is required";}
else
{
$name = test_input($_POST["firstName"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name))
{
$Err[] = "Only letters are allowed in First Name";
}
}
if (empty($_POST["email"]))
{$Err[] = "* Email is required";}
else
{
$email = test_input($_POST["email"]);
// check if e-mail address syntax is valid
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
{
$Err[] = "Invalid email format";
}
}
}
而且形式:
<div id = "signupform">
「> 郵箱地址 名
和數據庫連接和插入:
try {
$conn = new PDO('mysql:host=localhost; dbname=mydb', 'root', '');
$conn->setAttribute(PDO:: ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
趕上(PDOException $ PE){ 回波( '連接錯誤,這是因爲:'。$ PE->的getMessage()); }
//插入數據到數據庫,如果值不爲空,並進行消毒 如果(!空($ _ POST [ 「名字」])& &!空($ _ POST [ 「電子郵件」])) { $ qry =「INSERT INTO userdetails(email,firstName)values(?,?)」;
$q = $conn->prepare($qry) or die("ERROR: " . implode(":", $conn->errorInfo()));
$q->bindParam(1, $email);
$q->bindParam(2, $firstName);
try {
if($q->execute()){
header("Location: invoice.php");
exit;
}
}
catch(PDOException $pe) {
echo('Connection error, because: ' .$pe->getMessage());
}
}
而這一切,但它仍然不加載新的一頁。
出口是否必需? – Duver
@DuverJaramillo是的建議。 –
你可以試試''if($ q){'而不是'if($ q-> execute()){' –