1

私は小規模なユーザー管理のオンライン ストアで作業しており、エンド ユーザー (ストア管理者) が製品のグラフィックをアップロードできるようにしようとしています。ただし、このスクリプトを実行すると、実際には画像が保存されません。ここのさまざまなヒントとチュートリアルからこのスクリプトを作成し、画像のアップロード部分以外はすべて機能するようにしました。

// Set the image target directory here
$target = "itemImages/";
$target = $target . basename($_FILES["image"]["name"]);

// Variables get POSTed here - just tack new ones on at the end.
// Various POSTs omitted for brevity

$pic=($_FILES["image"]["name"]);

// Places the picture in the folder
if(move_uploaded_file($_FILES["image"]['tmp_name'], "itemImages/")) 
{
echo "The file " . basename($_FILES['uploadedfile']["name"]) . " has been         uploaded.<br />";
}else {
    echo "There was an issue adding this item. Please try again.<br />";
}

// Writes variables to the database
mysql_query("INSERT INTO tbl_item   (itemNAME,itemDESC,itemCOST,itemHCOL,itemHSIZ,itemIMG)
VALUES ('$itemName','$itemDesc','$itemCost','$hasColor','$hasSize','$pic')");

mysql_close($con);
?>

ヘルプ、ヒント、アドバイス、洞察などをいただければ幸いです。

4

3 に答える 3

3

move_uploaded_filesターゲットとしてファイル名が必要です。やみくもにディレクトリに移動しないので、

move_uploaded_files($_FILES..., 'somedir/somefile.txt');

動作しますが

move_uploaded_file($_FILES..., 'somedir/');

しない。

さらに、データベース操作はSQLインジェクション攻撃に対して脆弱であることに注意してください。アップロードされたファイルのリモート名を(['name']$ picを介して)盲目的に挿入しており、その名前は完全にリモートユーザーの制御下にあります。

于 2012-08-10T14:37:11.993 に答える
0

Web サーバー (例: ) を実行しているユーザー (例: )がitemImagesフォルダーに書き込み権限を持っていることを確認してください。Apachewww-data

于 2012-08-10T14:36:12.907 に答える
0

書き込んでいる .php ファイルとフォルダーの「所有者」が同じであることを確認してください。または、itemImages フォルダーのパーミッションを 777 に設定してみてください (これは推奨されません。単なるデバッグ戦術です)。

于 2012-08-10T14:42:20.157 に答える