将表单发布到PHP会收到500错误(内部服务器错误)

时间:2016-08-03 15:05:15

标签: php html regex mysqli

进度在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;
    }
}

2 个答案:

答案 0 :(得分:0)

您需要查看PHP错误日志,了解您在代码中遇到的特定错误。

这是一种良好的做法,通常在编码时进入。

您可以添加PHP函数:

error_reporting(E_ALL);

到PHP文件的最顶层......

或(这是实时环境的更好选择)...进入服务器的命令行 - 如果您有权访问命令行 - 并键入以下命令:

grep error_log /etc/php.ini

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

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

答案 1 :(得分:0)

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

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

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