进度在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;
}
}
答案 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文件中的更改。