2014-02-10 46 views
-2

我正在注册会员/加入表单。表单数据被提交到另一个页面,名为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 = "<[email protected]>"; 
    $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); 
    ?> 
+0

1 ='$ con = mysqli_connect($ DBHOST,$ DBUSER,$ DBPASS,$ DBNAME);' 也可以从哪里获取值? – jycr753

+0

你的服务器的错误日志说什么? – Quentin

+0

set ini_set(“display_errors”,1);在你的文件中并检查它。 – jeeva

回答

0

这么多的错误..改进你的代码风格,以提高其质量。

开始通过固定的报价,非常missleading:

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

有缺失报价也一样,我不thinkg电子邮件和电话都是数字。

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

没有标题叫刷新,这是有点的Javascript的风格,但你需要HTTP:

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

修正:

header("Location: index.php"); 

最后启用错误报告,看看什么是真正的错。

+0

好的我在这里实现了由专家建议的更正,现在我得到了这个错误:注意:类mysqli_result的对象无法转换为int在/行35上的/home/public_html/join.php .. if(mysqli_query($ con, $ check)> = 1){ 电话号码1234567890或电子邮件[email protected]地址已经在我们注册。数据没有被添加到mysql数据库表中。 – user2039716

+1

哦! @DanFromGermany有一个错误的建议,用于添加行中的行号,其中='“。$ phone。”',但所有其他建议都有帮助。我删除了额外的报价,现在它工作正常。感谢大家。 – user2039716

相关问题