2016-08-03 1 views
-1

Прогресс генерирует 500 внутренних ошибок сервера на сайте файла PHP (vip_reg.php), я упростил и удалил некоторые избыточные коды/комментарии, но все равно получаю 500 ошибка. Как только я сделал недопустимые данные (неверный номер телефона/неверный формат электронной почты) и отправил на сервер, он ничего не показывает и останавливается на php-странице. Вызывает ли инструкция mysqli сбой программы, или HTML не является хорошо структурированным?Публикация формы на PHP получает 500 ошибок (Внутренняя ошибка сервера)

Я очень новичок в 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

Вы проверили журналы ошибок сервера? PHP * обычно * очень хорошо говорит вам, что сломано. –

+1

'mysqli_real_escape_string()' RTM для этой функции. http://php.net/manual/en/mysqli.real-escape-string.php –

+0

Затем вы используете 'mysqli_query ($ con' <<< и' $ uploadSQL = $ dbConn' <<< so, что один из них? '$ con' или' $ dbConn'? –

ответ

0

Вы должны смотреть на ваш PHP журнал ошибок для конкретной ошибки вы получаете в вашем коде.

Это хорошая практика вникать в кодирование в целом.

Вы можете добавить функцию PHP:

error_reporting(E_ALL); 

в самом начале файла PHP ...

Или (и это лучший вариант для живой среды) ... Заходим в командную строку для сервера - если у вас есть доступ к командной строке - и введите следующую команду:

grep error_log /etc/php.ini 

Этот выход, в командной строке местоположение вашего журнала PHP ошибки.

Найдите этот файл и скачайте/откройте этот файл, чтобы увидеть последнюю ошибку, которую вы получаете. Вставьте эту ошибку здесь, и все мы сможем помочь вам решить эту ошибку лучше.

0

Ошибка сервера 500 происходит от Apache, а не от PHP. Это означает, что «сервер настроен неправильно». По моему опыту, это всегда связано с чем-то в файле .htaccess, который ваша версия Apache не понимает.

Используйте текстовый редактор и прокомментируйте все строки в файле .htaccess, подождите минуту и ​​проверьте свой скрипт. Если он работает, начните разрывы строк, по одной секции за раз в файле .htaccess, пока не получите ошибку 500 снова.

Обратите внимание, что некоторые веб-хосты, похоже, не сразу видят изменения в файле .htaccess.

Смежные вопросы