将表单张贴到PHP收到500错误(内部服务器错误)


Posting form to PHP receive 500 error (Internal server error)

进度在PHP文件(vip_reg.PHP)的站点上生成了一个500内部服务器错误,我简化并删除了一些多余的代码/注释,但仍然得到了500错误。一旦我制作了无效的数据(无效的电话号码/无效的电子邮件格式)并发布到服务器,它就什么都不显示,并在php页面上停止了。mysqli语句会使程序崩溃,还是HTML结构不好?

我是PHP和mysqli的初学者,如果这是一个愚蠢的问题,我很抱歉。因此,任何提示或建议都将不胜感激。谢谢大家。

HTML文件:

          ......<div class='rows'>
                    <div class='col_left'>
                        <img src='imageabc.jpg' id='left_img' alt='test'>
                    </div>
                    <form action="vip_reg.php" method="POST"><!--Post data to PHP-->
                    <div class='col_right'>
                        <p><span class="txtDesc">Your Name</span><span class="txtField"><input type='text' name='vipName' id='vipName' size='40' autocomplete="off" /></span></p> <?php echo $errorMsg; ?><br/><br/>
                        <p><span class="txtDesc">Phone Number</span><span class="txtField"><input type='tel' name='telNum' id='telNum' size='40' maxlength='8' autocomplete="off"/></span></p><?php echo $errorTel; ?><br/><br/>
                        <p><span class="txtDesc">Email Address </span><span class="txtField"><input type='text' name='email' id='email' size='40' autocomplete="off"/></span></p><?php echo $errEmail; ?><br/><br/>
                        <p><span class="txtDesc">Car Number</span><span class="txtField"><input type='text' name='carNum' id='carNum' size='40' autocomplete="off"/></span></span></p><?php echo $errCarNum; ?><br/><br/>
                        <p><span class="txtDesc">Verification</span><span class="txtField"><span class='g-recaptcha' data-sitekey='xxxxxxxx Google recaptcha-secret-key'></span></span></p><?php echo $errorMsg; ?><br/>
                    </div>
                </div>
                <div class='rows'>
                    <div class='button_Style'>
                        <input type="image" name="submit" id="submit"src="image/submit_btn.jpg" alt="submit" /> 
                    </div>
                </form>......

PHP文件:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if(!empty($_POST['vipName'])&& !empty($_POST['telNum'])&& !empty($_POST['email']&& !empty($_POST['carNum']))){
        if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])){  //detect user clicks recaptcha or not
            $recaptcha=$_POST['g-recaptcha-response'];
            include("getCurlData.php");
            $google_url="https://www.google.com/recaptcha/api/siteverify";
            $secret='google-secret-key';
            $ip=$_SERVER['REMOTE_ADDR'];
            $url=$google_url."?secret=".$secret."&response=".$recaptcha."&remoteip=".$ip;
            $res=getCurlData($url);
            $res= json_decode($res, true);
            if($res['success']){ //Get POST Data
                $name_vip = htmlspecialchars($_POST['vipName']);
                $telNumber = htmlspecialchars($_POST['telNum']);
                $email = htmlspecialchars($_POST['email']);
                $carNum = htmlspecialchars($_POST['carNum']);
                //validation
                    $result = mysqli_query($con, "SELECT car_num FROM vip_register WHERE username='$carNum'");
                    $row=mysqli_fetch_array($result,MYSQLI_ASSOC);
                    if(mysqli_num_rows($result)==1){ //unique
                        $errorCarNum = "The Car Plate Number is existed, please check.";
                        return true;
                    }elseif(strlen($telNumber)!=8){
                        $errTel = "Telephone number must be 8 digits.";
                        return false;
                    }elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) { //validate email
                        $errEmail = "The format of Email address is invalid.";
                        return false;
                    }else{ //success
                        echo "OK";
                        $vip = mysqli_real_escape_string($_POST['$name_vip']);
                        $tel = mysqli_real_escape_string($_POST['telNumber']);
                        $emailAddress = mysqli_real_escape_string($_POST['$email']);
                        $carNumber = mysqli_real_escape_string($_POST['$carNum']);
                        //insert into DB    
                        $sql_vip="INSERT INTO `vip_register` (`name`, `tel`, `email`, `car_num`) VALUES ('$vip', '$tel', '$emailAddress', '$carNumber')";
                        $uploadSQL = $dbConn->prepare($sql_vip);
                        $uploadSQL->execute();
                        //clear the error msg
                        $name_vip = $telNumber = $email = $carNum = "";
                        $errorMsg = $errTel = $errEmail = $errCarNum = "";
                        //turn it to success page
                        //header("Location:xxx.php");
                    }

        }
    }else{
        $errorMsg = $errTel = $errEmail = $errCarNum = "It should not be blank.";
        return false;
    }
}

您需要查看PHP错误日志,查找代码中的特定错误。

一般来说,在编码时,这是一个很好的实践。

您可以添加PHP函数:

error_reporting(E_ALL);

到PHP文件的顶部。。。

或者(对于生活环境来说,这是更好的选择)。。。进入服务器的命令行(如果您可以访问命令行),然后键入以下命令:

grep error_log /etc/php.ini

这将在命令提示符中输出PHP错误日志的位置。

找到该文件并下载/打开该文件,查看您收到的最新错误。将该错误粘贴到此处,我们都可以帮助您更好地解决该错误。

500服务器错误来自Apache,而不是PHP。这意味着"服务器配置错误"。根据我的经验,这总是由于.htaccess文件中的某些内容导致的,而您的Apache版本并不理解这些内容。

使用文本编辑器并对.htaccess文件中的所有行进行注释,等待片刻并测试脚本。如果有效,请开始取消对.htaccess文件中的行的注释,每次一节,直到再次出现500错误。

请注意,有些web主机似乎没有立即看到.htaccess文件中的更改。