2013-01-14 36 views
0

我試圖在某個if語句成功時重定向我的頁眉。重定向到成功開機自檢頁面

它只是不重定向。我正在做我的POST方法,然後重定向。這不可能嗎?我的數據提交成功,它只是不重定向。

$errors = false; 

if (isset($_POST['submit'])) { 

if (!empty($_POST['name']) && !empty($_POST['company']) && !empty($_POST['email']) && !empty($_POST['question'])) { 
     extract($_POST); 
     $sql = "INSERT INTO `knowledge` (`name`,`company`,`email`,`question`) VALUES ('$name','$company','$email','$question')"; 
     $query = mysql_query($sql) or die(mysql_error()); 
     header("Location: http://www.test.com/thankyou.php"); 
} else { 
    $errors = true; 
} 

if ($errors) { 
    $leftNav .= "<p style='color: red;'>You must fill out all form fields.</p>"; 
} 
} 
+0

這意味着你的條件總是錯誤的..所以你的代碼是打開的SQL注入 –

+0

地方var_dump($ _ POST);最後要確保它能正確接收郵政數據。在header()之後放入類似的東西('Redirecting');只是爲了知道它到達那一部分。 – aurbano

+0

這是?請解釋。 – wowzuzz

回答

1

首先,您應該在您的開發環境中打開error_messaging和display_errors。這將幫助你馬上解決這個問題的底部。

我的猜測是,你已經輸出到瀏覽器之前已經做這個重定向。如果你有錯誤的消息傳遞會導致「頭文件已發送」錯誤,甚至會告訴你輸出發送到瀏覽器的代碼行。

此外,您還需要了解SQL注入以及如何防止它。你的代碼現在非常不安全。使用mysql_*函數或PDO而不是已棄用的mysql_*函數將使您能夠使用預準備語句來防止SQL注入。

+0

感謝邁克的指針。 – wowzuzz

0

這段代碼亂七八糟。

此代碼似乎對於與$_POST['leftnav']的XSS攻擊是開放的:請勿使用提取,因爲它可能會覆蓋您自己的變量。

您的代碼可能受到所有$_POST密鑰的攻擊,因爲它們未被轉義:不使用mysql_query,因爲它已被棄用且不支持預準備語句。

而且回答你的問題: 打開的error_reporting:

<?php error_reporting(E_ALL);ini_set('display_errors', 1); ?> 

檢查錯誤。如果你有一個空間或之前的<?php php會告訴你。

+0

感謝您的提示。 – wowzuzz