0

画像を含む新しい投稿を送信するために使用するフォームがあります。ユーザーがアップロードする画像を選択していない場合、投稿がサーバーとデータベースにデータを送信することを望んでいません。現時点では、コードにフォームの処理を続行させることだけを試みています。

私のコードの一部を次に示します。

//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){...
4

4 に答える 4

2

ファイル入力名のようです。files[]この場合、 $_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]
    }
}
于 2012-06-04T19:20:09.837 に答える
1

これは、アップロードされたすべてのファイルを次のように処理するための最良のプロセスだと思います。

    // 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'];
                }
            }
        }
于 2012-06-04T18:12:22.280 に答える
1

チェックアウトする必要がありbool is_uploaded_file ( string $filename )ます。

たとえば、user_fileはファイルアップロードのサブ配列です。

<?php
if (is_uploaded_file($_FILES['userfile']['tmp_name']))
{
   // Success, file uploaded
}
else
{
   // Error, no file, invalid file, etc.
}
?>
于 2012-06-04T18:07:38.920 に答える
1

ユーザーが画像を選択していないときにリクエストを送信できないようにする場合は、クライアント側の Java スクリプトで作成できます。フォームの送信が始まろうとしているときに、ユーザーはエラーを受け取ります。ただし、ユーザーはこの検証を簡単に回避できることに注意してください。クライアント側で行う方法はなく、信頼性があります。他の人が答えたように、サーバー側で確認することをお勧めします。

于 2012-06-04T18:15:24.697 に答える