我正在尝试将表单提交到数据库之前进行一些表单验证。如果所有字段都没有值,但我希望显示错误消息,但是当前,提交时,表单将重定向到同一页面并擦除表单中的所有内容。这是我的代码。
$error = '';
if (isset($_SESSION['logged_in'])) {
if (isset($_POST['submit'])) {
if (isset($_POST['title'], $_POST['content'], $_POST['short_desc'], $_POST['file'])) {
$title = $_POST['title'];
$content = $_POST['content'];
$short_desc = $_POST['short_desc'];
$targetDir = "../images/blog-images/";
$fileName = basename($_FILES["file"]["name"]);
$targetFilePath = $targetDir . $fileName;
$fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);
$allowTypes = array('jpg','png','jpeg','gif','pdf');
if(in_array($fileType, $allowTypes)){
move_uploaded_file($_FILES["file"]["tmp_name"], $targetFilePath);
}
//if (empty($title) or empty($content)) {
// $error = 'All fields are required!';
// echo "<script type='text/javascript'>alert('$error');</script>";
//} else {
$query = $pdo->prepare('INSERT INTO articles (article_title, article_content, article_timestamp, article_short_desc, article_image) VALUES (?,?,?,?,?)');
$query->bindValue(1, $title);
$query->bindValue(2, $content);
$query->bindValue(3, time());
$query->bindValue(4, $short_desc);
$query->bindValue(5, $fileName);
$query->execute();
header('Location: add-new-post.php');
}else {
$error = 'All fields are required!';
echo "<script type='text/javascript'>alert('$error');</script>";
}
}
是否有一种无需AJAX的方法,因为我对此不太熟悉。
谢谢!
答案 0 :(得分:0)
由于您的PHP脚本与HTML表单位于同一页上,因此您可以执行以下操作:
<input type="text" name="someField" value="<?php echo isset($_POST['someField'])
? $_POST['someField'] : '' ?>" required />
末尾的required
标志将阻止表单在未填写时在前端部分提交。 value
字段将使用通过POST传递的最后一个变量重新填充输入。
在您的情况下,您可以使用其中之一。