TheBlackBenzKid
TheBlackBenzKid

Reputation: 27107

500 Server Error in PHP

If you visit my script "page.php" in the URL. A 500 Error appears. If you submit through a form it works.

<?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);
?>

Upvotes: 0

Views: 1213

Answers (3)

CodeCaster
CodeCaster

Reputation: 151710

Use useful variable names. Use indenting appropriately. Only escape input before inserting it into your database. Group often used functionality in functions. Don't use $_REQUEST. Fail fast. A few hints which massively increase your code quality.

Now have a look at this:

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");

Upvotes: 1

James
James

Reputation: 3239

A 500 error is a server side error, and I've found the best way to fix this is to check the logs on your server.

On the other hand, looking at your code, you may not have defined $_REQUEST['email_address']. Try this:

<?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);
}
?>

Upvotes: 1

jondavidjohn
jondavidjohn

Reputation: 62412

I would assume this has something to do with $_REQUEST['email_address'] not being defined on normal page load...

Upvotes: 1

Related Questions