Php 验证用于创建记录的表单

Php 验证用于创建记录的表单,php,Php,在尝试上传任何内容之前,我有代码验证我的表单 我想我已经错误地嵌套了if语句,这就是它不能正常工作的原因 我已经将我的PHP和HTML表单代码放在一把小提琴中,供任何愿意查看的人使用: 以下是PHP的一个片段: if ($_SERVER["REQUEST_METHOD"] == "POST") { //if the year is left empty then show error, if not then test_input if (empty($_POST["year"])) { $

在尝试上传任何内容之前,我有代码验证我的表单

我想我已经错误地嵌套了if语句,这就是它不能正常工作的原因

我已经将我的PHP和HTML表单代码放在一把小提琴中,供任何愿意查看的人使用:

以下是PHP的一个片段:

 if ($_SERVER["REQUEST_METHOD"] == "POST") {

//if the year is left empty then show error, if not then test_input
if (empty($_POST["year"])) {
$yearErr = "*enter a year";
} else {
$year = test_input($_POST["year"]);
}

//if the description is left empty then show error 
if (empty($_POST["description"])) {
$descriptionErr = "*enter a description";
  } else {
$description = test_input($_POST["description"]);
  }

// If the date has not been selected in the drop down, and the select is left at "Please Select" value = 0
if(isset($_POST['dateID']) && $_POST['dateID'] == '0'){
    $decadeErr = "*select a decade";    
}

 else {
$dateID = test_input($_POST["dateID"]);
  }

仅供参考-在PHP示例中使用JSFIDLE没有帮助。试一试

我认为问题在于过早调用代码第10行的
$\u文件
变量:

$target\u file=$target\u dir。basename($_文件[“文件上传”][“名称])

如果您第一次运行该脚本,则会失败。我将此更改为:

if(!empty($_POST)){
     if(!empty($_FILES["file_upload"])){
          $target_file = $target_dir . basename($_FILES["file_upload"]["name"]);
          $uploadOk = 1;
          $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
          $check = getimagesize($_FILES["uploaded"]["tmp_name"]);
     }
     $year = $description = $dateID = "";
     $yearErr = $descriptionErr = $decadeErr = "";
     // continue the rest of your $_POST handling...
}

这样,如果没有发布任何内容,就像第一次运行时一样,脚本不会尝试处理尚未发布的项目。

是否有任何显示错误或其他错误?还有,为什么GET会检索到您的“选择框”,而不是其他已发布的框呢?这是一个错误,我想我已经删除了它。我会把它改回去。你也试过用
if($\u服务器[“请求方法”]=“发布”){
替换
if(!empty($\u发布)){
?因为我认为request_方法也有机会返回
选项
,所以什么不起作用?如果我在任何字段中输入任何内容并单击upload,它将返回错误。但是错误出现在图像部分,显示“文件已存在”.如果将信息放入任何其他框中,它将进入空白页,并且不会上载任何内容。。