2011-11-02 90 views
0

如果您在URL中訪問我的腳本「page.php」。出現500錯誤。如果你通過一個表單提交它的作品。PHP中的500個服務器錯誤

<?php 
## send forgot pass 
$a=$_REQUEST['email_address']; 
include("template.funcs.php"); 
$yz = mysql_connect("","",""); 
mysql_select_db("", $yz); 
$b=mysql_real_escape_string($a); 
$d=mysql_query("SELECT * FROM `customers` WHERE `customers_email` = '".$b."'"); 
    if (mysql_affected_rows()==0){ 
     header("Location: cart.php?pass=notsent"); 
    }else{ 
     send_registration_email($b,'','',''); 
     header("Location: cart.php?pass=sent"); 
    } 
mysql_close($yz); 
?> 
+3

什麼是您的錯誤日誌告訴你嗎?它應該詳細說明Web服務器遇到的確切錯誤。總是先看看那裏。 –

+0

檢查PHP錯誤日誌? – ManseUK

+1

順便說一句,_always_在'header(「Location ...」)之後調用'exit();'以阻止腳本的進一步執行。 –

回答

1

500錯誤是服務器端的錯誤,我發現修復的最佳方式這是爲了檢查服務器上的日誌。

另一方面,查看你的代碼,你可能沒有定義$ _REQUEST ['email_address']。試試這個:

<?php 
if (isset($_REQUEST['email_address'])) { 
    ## send forgot pass 
    $a=$_REQUEST['email_address']; 
    include("template.funcs.php"); 
    $yz = mysql_connect("","",""); 
    mysql_select_db("", $yz); 
    $b=mysql_real_escape_string($a); 
    $d=mysql_query("SELECT * FROM `customers` WHERE `customers_email` = '".$b."'"); 
     if (mysql_affected_rows()==0){ 
      header("Location: cart.php?pass=notsent"); 
     }else{ 
      send_registration_email($b,'','',''); 
      header("Location: cart.php?pass=sent"); 
     } 
    mysql_close($yz); 
} 
?> 
+0

這將帶來一個空白的PHP文檔按預期。但是,如果email_address爲空,我將如何重定向它們。 – TheBlackBenzKid

+0

如果你還沒有輸出任何信息,那麼你可以重定向他們:header('Location:domain.com/page.php'); 如果你輸出了信息,那麼你可以輸出一個內聯JavaScript來重定向他們:window.location ='domain.com/page.php'; – James

+1

如果未設置$ _REQUEST ['email_address'],您也可以輸出一個鏈接以允許它們手動重定向。 – James

1

我會承擔這個有事情做與$_REQUEST['email_address']不正常的網頁加載定義...

+0

會產生一個500?我認爲500意味着腳本中的語法錯誤或者出於某種原因無法編譯。 –

+0

這一切都取決於你的錯誤級別設置,我相信... – jondavidjohn

1

使用有用的變量名稱。適當地使用縮進。只有在將輸入插入到數據庫之前,才能輸入。組經常在功能中使用功能。請勿使用$_REQUEST。快速失敗。一些提示大大提高了您的代碼質量。

現在看看這個:

include("template.funcs.php"); 

function Redirect($to) 
{ 
    header("Location: " . $to); 
    exit(); 
} 

if ($_SERVER['REQUEST_METHOD' != "POST" || !isset($_POST['email_address'])) 
{ 
    Redirect("cart.php?pass=notsent"); 
    // or redirect to your "forgot password" form 
} 

$mailAddress = $_POST['email_address']; 

$dbconn = mysql_connect("","",""); 
mysql_select_db("", $dbconn); 

mysql_query("SELECT * FROM `customers` WHERE `customers_email` = '".mysql_real_escape_string($mailAddress)."'"); 

if (mysql_affected_rows() == 0) 
{ 
    Redirect("cart.php?pass=notsent"); 
} 

send_registration_email($mailAddress,'','',''); 
Redirect("cart.php?pass=sent"); 
+0

這工作正常。但IE7說內部服務器錯誤。 – TheBlackBenzKid

+0

然後開始調試。 ;-)查看其他答案,您需要配置PHP,以便它輸出錯誤,而不是簡單地拋出狀態500.並禁用IE中的「用戶友好錯誤」。 – CodeCaster