-4

コードが正しいかどうかはわかりませんが、最大ファイルサイズが機能しません

ファイルが存在するかどうかを確認しないでください。issetの実装が間違っているか、コードに何かが含まれている可能性があります。

psは私にこのエラーを与えます:

注意:未定義の変数:ecc../eccのコンテンツ。23行目

注意:未定義の変数:ecc../eccのfp。24行目

コードは次のとおりです。

<?php
interface ICheckImage {

         public function checkImage();

}           
abstract class ACheckImage implements ICheckImage {

         public $fileName;
         public $tmpName;
         public $filesSize;
         public $fileType;
         public $fp;
         public $conent;
         protected $mysqli; 

         public function __construct(){

             $this->fileName = $_FILES['userfile']['name'];
             $this->tmpName  = $_FILES['userfile']['tmp_name'];
             $this->filesSize = $_FILES['userfile']['size'];
             $this->fileType = $_FILES['userfile']['type'];
             $this->content = $content;
             $this->fp = $fp;
             $this->mysqli = new mysqli('localhost','root','root','test');

            }
    }           
class Check extends ACheckImage {

         public function checkImage(){

             if(isset($_POST['upload']) && $_FILES['userfile']['size'] > 0){

                 $this->fileName = $_FILES['userfile']['name'];
                 $this->tmpName  = $_FILES['userfile']['tmp_name'];
                 $this->filesSize = $_FILES['userfile']['size'];
                 $this->fileType = $_FILES['userfile']['type'];

                 $this->fp      = fopen($this->tmpName, 'r');
                 $this->content = fread($this->fp, filesize($this->tmpName));
                 $this->content = addslashes($this->content);
                 fclose($this->fp);

                 if(!get_magic_quotes_gpc()){

                     $this->fileName = addslashes($this->fileName);

                    }

                 if ($this->mysqli->query("INSERT INTO upload_images (name, size, type, content ) ".
                      "VALUES ('$this->fileName', '$this->filesSize', '$this->fileType', '$this->content')")){

                         echo "Upload avvenuto &nbsp";

                    }else{

                         echo "Errore &nbsp" . $this->mysqli->error; 

                        }   
                }
            }           
    }

$form = new Check();
$form->checkImage();    

?>
4

2 に答える 2

0

あなたの問題の1つはこれです:

         public $conent;

あなたはそれを(23行目で)と呼んでいて$this->content、それを未定義のローカル変数と等しく設定しています$content

の同じ問題$this->fp。コンストラクターのその時点では、ローカル変数$fpが何であるかを定義していないので、PHPはどのように知る必要がありますか?おそらく、コンストラクターに渡すことになっていますか?

また、私が正しく覚えていれば、MAX_FILE_SIZE違反した場合、ファイルはサーバー上に存在せず、$_FILESアレイは作成されません。

于 2013-02-06T17:13:07.920 に答える
0

ACheckImageクラスの__construct()に渡す$content変数と$fp変数をどこで定義していますか?

本当に変数に空の値を設定したい場合は、これを変更してみてください。

<?php
abstract class ACheckImage implements ICheckImage {

     public $fileName;
     public $tmpName;
     public $filesSize;
     public $fileType;
     public $fp;
     public $conent;
     protected $mysqli; 

     public function __construct(){

       if (count($_FILES)>0) {
         $this->fileName = $_FILES['userfile']['name'];
         $this->tmpName  = $_FILES['userfile']['tmp_name'];
         $this->filesSize = $_FILES['userfile']['size'];
         $this->fileType = $_FILES['userfile']['type'];
         $this->content = '';
         $this->fp = '';
         $this->mysqli = new mysqli('localhost','root','root','test');
       }

     }

}
?>
于 2013-02-06T17:14:36.713 に答える