2011-11-02 68 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