为什么会出现内部服务器错误?

时间:2014-02-10 10:40:59

标签: php forms mysqli internal-server-error

我正在制作会员注册/加入表格。表单数据提交到另一个名为join.php的页面,按下提交按钮我收到内部服务器错误消息。任何人都可以帮我找到编码中的原因/错误吗?虽然数据已成功输入数据库。

    <?php
    // file name : join.php

    $con = mysqli_connect("$DBHOST", "$DBUSER", "$DBPASS","$DBNAME");
    // Check connection
    if (mysqli_connect_errno($con))
    {
    echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    $name   =   $_POST['name'];
    $phone  =   $_POST['phone'];
    $email  =   $_POST['email'];
    $city   =   $_POST['city'];
    $state  =   $_POST['state'];
    $ip =   $_SERVER['REMOTE_ADDR'];

    $name  = mysqli_real_escape_string($con,$name); 
    $email = mysqli_real_escape_string($con,$email);
    $phone = mysqli_real_escape_string($con,$phone);
    $city  = mysqli_real_escape_string($con,$city);
    $state = mysqli_real_escape_string($con,$state);

    $check = "SELECT COUNT(*) FROM `members` WHERE phone=".$phone." 
    OR  email=".$email." Limit 1";
    if (mysqli_query($con,$check)>=1){
    echo ("The phone number <strong>".$phone."</strong> or email <strong>
     ".$email."  </strong> address is already registered with us.");
    }else{
    $query = mysqli_query($con,"INSERT INTO `members` 
        (`name`,`email`, `phone`, `city`, `state`,`ip`, `regdate`)       
    VALUES('".$name."','".$email."','".$phone."','".$city."',
           '".$state."','".$ip."', NOW('') )") 
    or die("MYSQL ERROR :".mysqli_error($con));

    /* PREPARE MESSAGE FOR EMAIL TO NEW MEMBER */
    header("Refresh=07;URL=./index.php");


    $headers4  = "<join@mydomain.com>"; 
    $headers  = "Reply-to: $headers4\n";
    $headers .= "From: $headers4\n";
    $headers .= "Errors-to: $headers4\n";
    $headers .= "Content-Type: text/html; charset=utf-8\n";

    $message  = "<br>Dear ".$name." <br><br>";
    $message .= "Thanks for joining.<br> Your details are";
    $message .= "<br>Name - ".$name." <br>Mobile No. - ".$phone."<br>";
    $message .= "Email - ".$email."<br>City, State - ".$city.",".$state."<br>";
    $message .= "<br>Regards,<br>Name";

    mail("".$email."", "Thanks for Joining", "".$message."", "".$headers."");


    echo "<p>Congratulations!<br>IP-".$ip."<br>Your data has been added 
    into our membership database.<br><strong>Thank you for joining.</strong>";

   }

   mysqli_close($con);
   ?> 

1 个答案:

答案 0 :(得分:0)

它有很多错误。改进你的代码风格,以提高其质量。

首先修正引号,非常具有误导性:

mail("".$email."", "Thanks for Joining", "".$message."", "".$headers."");

应该是

mail($email, 'Thanks for Joining', $message, $headers);

$check = "SELECT COUNT(*) FROM `members` WHERE phone=".$phone." 
OR  email=".$email." Limit 1";

也缺少报价,我认为电子邮件和手机都不是数字。

$check = "SELECT COUNT(*) FROM `members` WHERE phone='".$phone."' 
OR  email='".$email."' Limit 1";

没有名为Refresh的标题,这是一种Javascript风格,但你需要HTTP:

header("Refresh=07;URL=./index.php");

修正:

header("Location: index.php");

最后启用错误报告以查看确实存在错误。