我的php代码不起作用我找不到问题



我有一个html文档,其中包含一个经过调试且正确的表单页面。问题是DB,我在strato上托管,但我认为这更多的是一个代码问题,而不是服务器端问题。html文档是超级全局POST中的一个表单,因此First、Lastname、Email、Subject、Address、PLZ和message。然而,这条消息不会进入数据库,它会被邮寄到我的支持电子邮件中。我没有设置邮件函数,因为我想先调试sqldb部分。所有的if语句都会过滤输入,以获取有效的电子邮件和模式,所以你不允许以html表单的形式输入数字。我知道你可以用html制作模式,但我希望100%安全。在输入通过所有过滤器后,连接到我的数据库将要连接,我想插入名字、姓氏、电子邮件地址和主题以及plz。

$fname   = $_POST['fname'];
$lname   = $_POST['lname'];
$email   = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
$subject = $_POST['thema'];
$address = $_POST['address'];
$plz     = $_POST['plz'];
$text    = $_POST['text'];
$pattern = "/^([a-zA-Z' äöü ÄÖÜ]+)$/";
$pattern_plz = "/[0-9]$/";
//VALID INPUT//
if(preg_match($pattern, $fname)){
if(preg_match($pattern, $lname)){
if($email == TRUE){
if(preg_match($pattern_plz, $plz)){
if(is_numeric($plz)){
$con = new mysqli($host, $db, $user, $passwd) or die ("Keine Verbindung konnte aufgebaut werden");
if($con){
$sql="INSERT INTO contact (fname, lname, email, thema, address, plz)
VALUES ($fname, $lname, $email, $subject, $address, $plz)";
if($con->mysqli_query($sql) == TRUE){
echo "success";
}else{mysqli_close($con); exit("Keine Verbindung konnte aufgebaut werden");}
}else{mysqli_close($con); exit("Keine Verbindung konnte aufgebaut werden");}
}else{exit("Inavlid PLZ");}
}else{exit("Inavlid PLZ");}
}else{exit("Inavlid email");}
}else{exit("Inavlid email");}
}else{exit("Inavlid lastname");} 

当你在实时主机上使用它时,显示错误可能会从你的directadmin或cpanel关闭,你可以在主机中找到php选项并打开,或者你可以使用try-catch,例如

//trigger exception in a "try" block
try {
//Your code
}
//catch exception
catch(Exception $e) {
echo 'Message: ' .$e->getMessage(); // display error
}

最新更新