Php 未选择图像文件时无法停止处理表单

Php 未选择图像文件时无法停止处理表单,php,file-upload,error-handling,Php,File Upload,Error Handling,我有一个表格,我用它来提交一个新的帖子,里面有图片。如果用户没有选择上传图像,我不希望帖子继续向服务器和数据库提交数据。目前,我所做的一切都是让代码继续处理表单 以下是我的一些代码: //check if the submit button has been clicked if( isset( $_POST['submit'] ) ){ //validate the title and description $title =

我有一个表格,我用它来提交一个新的帖子,里面有图片。如果用户没有选择上传图像,我不希望帖子继续向服务器和数据库提交数据。目前,我所做的一切都是让代码继续处理表单

以下是我的一些代码:

//check if the submit button has been clicked
        if( isset( $_POST['submit'] ) ){

            //validate the title and description
            $title = validate_title($_POST['title']);
            $desc = validate_desc($_POST['desc']);

            //Get other posted variables
            $cat = $_POST['cat'];
            $year = $_POST['year'];

            if($title && $desc != false){

                //check if an image has been submitted
                if( $_FILES['files']['name'] != ""){...
我也尝试过使用以下方法,但在未选择任何文件时都不会停止代码:

if( $_FILES['files']['error'] == UPLOAD_ERR_OK){...

if( $_FILES['files']['name'] != UPLOAD_ERR_NO_FILE){...

您应该查看
bool是上传的文件(string$filename)

例如,其中user_file是文件上载的子数组:

<?php
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
   // Success, file uploaded
}
else
{
   // Error, no file, invalid file, etc.
}
?>

您应该查看
bool是上传的文件(string$filename)

例如,其中user_file是文件上载的子数组:

<?php
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
   // Success, file uploaded
}
else
{
   // Error, no file, invalid file, etc.
}
?>

我认为,这是处理所有上传文件的最佳流程,如:

    // allowed extensions
$extensions = array('.png', '.gif', '.jpg', '.jpeg','.PNG', '.GIF', '.JPG', '.JPEG');

        if((!empty($_FILES["files"])) && ($_FILES['files']['error'] == 0)) {

            // check extension
            $extension = strrchr($_FILES['files']['name'], '.');
            if (!in_array($extension, $extensions)) {
                echo 'wrong file format, alowed only .png , .gif, .jpg, .jpeg';
            } else {
                // get file size
                $filesize = $_FILES['files']['size'];

                // check filesize
                if($filesize > $maxlimit){ 
                    echo "File size is too big.";
                } else if($filesize < 1){ 
                    echo "File size is empty.";
                } else {

                    // temporary file
                    $uploadedfile = $_FILES['files']['tmp_name'];
                }
            }
        }
//允许的扩展
$extensions=array('.png'、'.gif'、'.jpg'、'.jpeg'、'.png'、'.gif'、'.jpg'、'.jpeg');
如果((!empty($_FILES[“FILES”])&($_FILES['FILES']['error']==0)){
//检查分机
$extension=strrchr($_FILES['FILES']['name'],'.');
if(!in_数组($extension,$extensions)){
echo“错误的文件格式,仅允许.png、.gif、.jpg、.jpeg”;
}否则{
//获取文件大小
$filesize=$_文件['FILES']['size'];
//检查文件大小
如果($filesize>$maxlimit){
echo“文件大小太大。”;
}如果($filesize<1){
echo“文件大小为空。”;
}否则{
//临时文件
$uploadedfile=$\u FILES['FILES']['tmp\u name'];
}
}
}

我认为,这是处理所有上传文件的最佳流程,如:

    // allowed extensions
$extensions = array('.png', '.gif', '.jpg', '.jpeg','.PNG', '.GIF', '.JPG', '.JPEG');

        if((!empty($_FILES["files"])) && ($_FILES['files']['error'] == 0)) {

            // check extension
            $extension = strrchr($_FILES['files']['name'], '.');
            if (!in_array($extension, $extensions)) {
                echo 'wrong file format, alowed only .png , .gif, .jpg, .jpeg';
            } else {
                // get file size
                $filesize = $_FILES['files']['size'];

                // check filesize
                if($filesize > $maxlimit){ 
                    echo "File size is too big.";
                } else if($filesize < 1){ 
                    echo "File size is empty.";
                } else {

                    // temporary file
                    $uploadedfile = $_FILES['files']['tmp_name'];
                }
            }
        }
//允许的扩展
$extensions=array('.png'、'.gif'、'.jpg'、'.jpeg'、'.png'、'.gif'、'.jpg'、'.jpeg');
如果((!empty($_FILES[“FILES”])&($_FILES['FILES']['error']==0)){
//检查分机
$extension=strrchr($_FILES['FILES']['name'],'.');
if(!in_数组($extension,$extensions)){
echo“错误的文件格式,仅允许.png、.gif、.jpg、.jpeg”;
}否则{
//获取文件大小
$filesize=$_文件['FILES']['size'];
//检查文件大小
如果($filesize>$maxlimit){
echo“文件大小太大。”;
}如果($filesize<1){
echo“文件大小为空。”;
}否则{
//临时文件
$uploadedfile=$\u FILES['FILES']['tmp\u name'];
}
}
}

如果希望用户在未选择任何图像时无法发送任何请求,可以通过java脚本客户端进行。当表单提交即将开始时,用户将收到一个错误。但请记住,用户可以轻松地完成此验证。没有办法在客户端完成,而且它是可靠的。最好在服务器端检查,因为其他人已经回答了。

如果您希望用户在没有选择任何图像时不能发送任何请求,可以通过java脚本客户端进行。当表单提交即将开始时,用户将收到一个错误。但请记住,用户可以轻松地完成此验证。没有办法在客户端完成,而且它是可靠的。最好像其他人回答的那样在服务器端检查它。

看起来您的文件输入名称是
files[]
,在这种情况下,$\u files[“files”][“name”]将是一个数组,以检查用户是否提供了用于上载的图像

foreach ($_FILES['files']["error"] as $index => $error){
    if ($error == UPLOAD_ERR_NO_FILE){
        //no file was uploaded in $index`th file input 
    }
    else{
        //other checks and process $_FILES['files']['tmp_name'][$index]
    }
}

您的文件输入名称似乎是
files[]
,在本例中,$\u files[“files”][“name”]将是一个数组,用于检查用户是否提供了用于上载的图像

foreach ($_FILES['files']["error"] as $index => $error){
    if ($error == UPLOAD_ERR_NO_FILE){
        //no file was uploaded in $index`th file input 
    }
    else{
        //other checks and process $_FILES['files']['tmp_name'][$index]
    }
}

检查名称应该可以工作。变量转储($_文件)在你检查你有什么之前。我得到这个:数组(1){[“文件”]=>array(5){[“名称”]=>array(1){[0]=>string(11)“d3beta1.png”}[“type”]=>array(1){[0]=>string(9)“image/png”}[“tmp\u name”=>array(1){[0]=>string(45)”C:\Users\chris AppData\Local Temp\php69.tmp”}>array(0)=>[“size”]=>array(1){[0]=>int(1728245)}}}}即使在我选择上载图像时,也会出现错误,还可以使用:“if((!empty($\u FILES[“FILES”]”)和($\u FILES['FILES']['error']==0)){“缺少索引。if($\u FILES['FILES']['name'][0]!=”)检查名称应该有效。var\u dump($\u FILES)在你检查你有什么之前,我得到了这个:数组(1){[“文件”]=>array(5){[“名称”]=>array(1){[0]=>string(11)“d3beta1.png”}[“类型”]=>array(1){[0]=>string(9)“image/png”}[“tmp\u名称”]=>array(1){[0]=>string(45)”C:\Users\chris AppData\Local\Temp\php6B29.tmp”}“错误”=>array(1){[0]=>int(大小)=>{[0]=>int(1728245)}}}即使在我选择上传图像时,也会出现错误,使用“如果((!empty($u FILES[“FILES”])&&($u FILES[“FILES”]['error']==0)){“您缺少索引。如果($u FILES[“FILES”][“name”][0]!=”)$extensions数组由于某种原因没有被修复”如果(!empty($u FILES[“FILES”[“FILES”])&($FILES”])error”==0)){“即使我选择了一个文件,也会为我返回false。您已经更改了数组的语法,形成了一个长字符串。@crm是否设置了最大文件大小限制?$maxlimit=9048576;字段表单field的名称是什么?$extensions数组由于某些原因未修复此“如果(!empty($\u FILES[“FILES”])&($\u FILES['FILES'['error']=0)){即使我选择了一个文件,也会为我返回false。您已经更改了数组的语法,形成一个长字符串。@crm是否设置了最大文件大小限制?$maxlimit=9048576;字段的名称是什么?