次のスクリプトを使用しています。それは基本的にアップロードされているファイルの名前が既に存在するかどうかをチェックし、そうであればそれを別の名前に変更してアップロードする必要があります。これまでのところそれは動作しません。いずれかのファイルの名前を変更するか、私はそれが破損したファイルを言うWebページを介してファイルを開くしようとすると。名前が既に存在する場合、ファイルの名前を変更するにはどうすればよいですか?
コード:あなたは既にデータベースを使用している
$sql="SELECT filename FROM doc_u WHERE person_id= '$pid'";
$result=mysql_query($sql);
$query = mysql_query($sql) or die ("Error: ".mysql_error());
if ($result == "")
{
echo "";
}
echo "";
$rows = mysql_num_rows($result);
if($rows == 0)
{
print("");
}
elseif($rows > 0)
{
while($row = mysql_fetch_array($query))
{
$existing = $row['filename'];
print("");
}
}
if ($filename === $existing) {
$filename = $uniqueidgenerator.strrchr($_FILES['filename']['name'], ".");
} else {
$filename = $_FILES['filename']['name'];;
}
//After checking it will move the files
if(move_uploaded_file($_FILES['filename']['tmp_name'],$upload_path . $filename))
echo '';
else
echo '';
これは非常に重要です。誰かにsomejpeg.phpをあなたのサーバにアップロードさせると、それはjpegとして検証されるかもしれませんが、それ自体の中に悪質なコードが残っています。誰かが基本的にこの方法を使用してサーバーを引き継ぐことができます。 – dqhendricks
okですので、ファイル名を取り出してdbに保存し、アップロードされているファイルの名前を変更するようにしてください。そしてあなたがそれをユーザーに提供するとき、私たちがそれに与えた一意のファイル名を持ちます。しかし、ユーザーがアップロードした名前でファイルを取得できないことは悪いことではありません... – KPO
あなたはPHP経由でファイルを提供し、 'header( 'Content-disposition:attachment; filename = ORIGINAL_FILENAME_HERE')を出力します。 ;そして、あなたのサーバー上で実際に '207'と呼ばれることはありません。 –