私は自分のプロフィール写真の画像(ファイル)を自分のウェブサイトにアップロードすることを許可します。彼らはHTML形式で画像をアップロードしますが、私が望むフォルダにファイルを移動するのに問題があります。私はアップロードパスを変更するためにphp.iniファイルを混乱させたくありません。 move_uploaded_file()を使いたい。ここでアップロードされたファイルをPHPで移動
は私のHTMLです:
<form enctype="multipart/form-data" method="post" action="upload_img.php">
<input type="hidden" name="MAX_FILE_SIZE" value="32768"/>
<input type="text" name="name" value=""/>
<input type="file" name="picture" value="picture"/>
<input type="submit" name="submit" value="upload"/>
</form>
そして、私のPHP:
<?php
define('GW_UPLOADPATH', 'images/');
$picture= $_FILES['picture']['name'];
$name= $_POST['name'];
$tmp= $_FILES['picture']['tmp_name'];
var_dump($picture);
var_dump($name);
var_dump($tmp);
$connect= mysqli_connect(//connect params)
or die('error connecting with the database');
$query= "INSERT INTO pics (pic, name) VALUES ('$picture', '$name')";
$target= GW_UPLOADPATH . $picture ;
if (move_uploaded_file($_FILES['picture']['tmp_name'], $target);))
{
mysqli_query($connect, $query)
or die('error with query');
}
?>
私はそれを見ることができるので、ファイルがtmpフォルダにアップロードします知っているが、それはsess_96bsj29ub3tndnd2853d24k38adrbqoo.file命名されましたそれは何が起こるべきですか?私は間違って何をしていますか?
'[ '名前']' $ _FILES配列でUSER-SUPPPLIEDデータです。あなたのコードでは、悪意のあるユーザーがWebサーバーがアクセスできるシステム上のファイルを置き換えることができます。 –
あなたは有害なファイルをアップロードすることを意味しますか? – user1174762
すべてのファイル。彼らがファイルの名前を '../../../../../../../../ etc/passwd'にすると、何が起きるか考えてみてください...あなたは信頼できませんリモートユーザがあなたに送るものは何ですか、特にファイルシステムの操作に関するものです。 –