0

PHP を使用して画像のサイズを変更しようとしていますが、新しい画像に適切な名前を付ける方法がわかりません。データベース内の画像のテーブルを見ると、ID を持つエントリがありますが、名前はありません。

他に見るべきものがあれば教えてください。現時点では、imagecopyresampled の入力が正しくないと想定しています。$formattedImage の名前をエコーし​​ようとしても、何も起こりません。imagejpeg を使用する前にさらに 1 段階バックアップして、$blankImage の名前をエコーし​​ても、何も起こりません。

これが私のコードです。

 function chgSize($image, $width, $height){
    $name = $image["name"]; //this is displaying the file name correctly
    $temp = $image["tmp_name"];
    $imgContents = imagecreatefromstring(file_get_contents($temp));
    $blankImage = imagecreatetruecolor(100,100);
       if(imagecopyresampled($blankImage, $imgContents, 0, 0, 0, 0, 100, 100, $width, $height)){ 
           $formattedImage = imagejpeg($blankImage, $name);
           $this->saveImage($formattedImage);
       }
 }


function saveImage($image){
        $newName = $image["name"];
        move_uploaded_file($image['tmp_name'], "/Applications/XAMPP/xamppfiles/htdocs/images/" . $newName);
        mysql_query("insert into images VALUES('null','$newName')");
        echo "Stored in: " . "/Applications/XAMPP/xamppfiles/htdocs/images/" . $newName;
  }
4

1 に答える 1

0

参考までに:'null'はnull 値ではありません。世界の「null」を含む文字列です。実際の sql null を挿入するには、null という単語を引用符なしで指定する必要がありますnull

コードは SQL インジェクションに対しても脆弱であり、さらに move_uploaded_file 呼び出しはターゲット ファイル名にユーザー提供のデータを使用しているため、リモート ユーザーがサーバー上の任意の場所に任意のファイルを指定して走り書きできるようにしています。

また、アップロードが成功したか失敗したかをまったくチェックしていないようで、成功したかのようにどこでも進んでいます。良くない。挿入クエリについても同様です。クエリが成功したと仮定することは、考えられる最悪のことです。クエリが成功する方法は 1 つしかなく、失敗する方法は無数にあります。

于 2012-05-14T02:50:22.357 に答える