2011-06-01 110 views
0

我試着寫這個劇本說,如果電子郵件valied插入到數據庫和重定向,否則錯誤消息重定向只有我的重定向不工作,我不是可怕的PHP偉大和還在讀書了關於這個問題,所以ID欣賞任何建議,在此先感謝!PHP頭位置

<?php 

$userid = $usersClass->userID(); 
$user_email=$_POST['email_upd']; 

if(!filter_var($user_email, FILTER_VALIDATE_EMAIL)) 
{ 
header('Location: http://www.mysite.co.uk/mytwitter.php?msg=invalid'); 
} 
else 
{ 
mysql_query(" UPDATE produgg_users SET email='$user_email' where produgg_users.id = ".$usersClass->userID()) or die(mysql_error()); 
header('Location: http://www.mysite.co.uk/mytwitter.php?msg=success'); 
} 

?> 

對不起,不說明什麼不順心,發生了什麼事是我的網頁心不是在標題重定向回頁面(位置)

我現在已經啓用了錯誤報告和IM仍然只看到一個白色的頁面,繼承我的整個頁面代碼。

<?php 

error_reporting(E_ALL); 
require 'config.inc.php'; 


?> 

<?php 

$userid = $usersClass->userID(); 
$user_email=$_POST['email_upd']; 

if(!filter_var($user_email, FILTER_VALIDATE_EMAIL)) 
    { 
    header('Location: http://www..co.uk/mytwitter.php?msg=invalid'); 
    } 
else 
    { 
    mysql_query(" UPDATE produgg_users SET email='$user_email' where produgg_users.id = ".$usersClass->userID()) or die(mysql_error()); 
    header('Location: http://www..co.uk/mytwitter.php?msg=success'); 
    } 

?> 
+2

不回答你的問題,但你需要時刻'死()'頭重定向後,你的代碼很容易受到[SQL注入](http://php.net/manual/en /security.database.sql-injection.php) – 2011-06-01 19:07:45

+0

儘管如此,您應該描述究竟出了什麼問題。 – 2011-06-01 19:08:05

+0

佩卡嗨,我意識到它目前脆弱的注入式攻擊,即時通訊在我打算以後整合,或者是這難道不是處理事情的最佳途徑一刻起,閱讀起來? – Liam 2011-06-01 19:08:54

回答

0

我設法得到它的工作使用下面的代碼,我已經重寫它基於我讀過關於SQL注入和它工作得很好,我會很感激這個任何建議,謝謝!

<?php 

require 'config.inc.php'; 

$userid = $usersClass->userID(); 
$user_email=mysql_real_escape_string($_POST['email_upd']); 

if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $user_email)) 
{ 
    mysql_query(" UPDATE produgg_users SET email='$user_email' where produgg_users.id = ".$usersClass->userID()) or die(mysql_error()); 
    echo "<meta http-equiv=\"refresh\" content=\"0;URL=/mytwitter.php?msg=email updated\">"; 
} 
else 
{ 
    echo "<meta http-equiv=\"refresh\" content=\"0;URL=/mytwitter.php?msg=email error\">"; 
} 

?> 
0

這應該工作,但要確保你沒有頭的方法之前的任何代碼,當我說的代碼我的意思是,在任何其他文件從PHP或HTML標籤的輸出,這需要先執行, ,但你也需要確保重定向後的代碼沒有被執行,用exit退出;

header(.... 
exit; 
+0

沒有運氣........ – Liam 2011-06-01 19:20:46

+0

這應該真正發揮作用,但檢查其他瀏覽器,我知道FF一些插件可以禁用頁面重定向... – 2011-06-01 19:31:52

0

您可以發佈您的完整腳本嗎? Senad說的是真的:如果你的腳本寫任何東西到輸出緩衝區,任何header();將不再工作。根據你給出的代碼,沒有什麼會被寫入輸出緩衝區(除非你得到一個mysql錯誤,你沒有告訴我們,我認爲不是這種情況)。

而且,也沒有必要使用,然後重新打開它。只是FYI。