我有一個上傳PHP腳本,在它上傳文件之前,它將它重命名爲一個隨機名稱,因此沒有已經存在的文件將被覆蓋。問題是它不能正常工作。它在文件名中加入了一些奇怪的符號,當我嘗試查看文件時,它有一個404錯誤。這是工作之前,我加入這個隨機名稱的一部分下面是PHP腳本,我現在所擁有的。爲什麼這個上傳文件的隨機名PHP腳本不工作?
<?php
// Where the file is going to be placed
$target_path = "files/";
/* Rename file with random name and keep extension */
$length = 10;
$characters = ’123456789’;
$string="";
for($p = 0; $p < $length; $p++) {
$string .= $characters[mt_rand(0, strlen($characters))];
}
$pos = strrpos(basename($_FILES['uploadedfile']['name']), ".");
$ext = str_split(basename($_FILES['uploadedfile']['name']), $pos);
$target_path = $target_path.$string.$ext[1];
if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) {
echo "<h2>Your file has been uploaded!</h2><br /><p>Your file has been uploaded successfully. <a href='".$target_path."'>Click here</a> to see the file you uploaded.
<br /><br /><br />
<h2>A link to your file</h2><br />The full link to your file is:
<br /><br />
<code>http://www.example.com/upload/".$target_path."</code></p>";
} else{
echo "<span class='error'>There was an error uploading the file, please try again.</span>";
}
?>
出於某種原因,它是真的怪怪的。然後,當我在我的託管文件管理器中查看文件夾/文件/時,我嘗試刪除其中包含奇怪符號的文件,然後我刷新並且它們全都回來了。看看這張截圖:
奇怪的,是吧?
我可能需要一個新的隨機命名PHP腳本,但這很煩人,因爲我刪除了所有這些文件,而且,你知道,當我重新加載時它們會馬上回來!這就像PHP迫使他們不刪除或其他東西。
感謝提前任何幫助,
彌敦道
這不是你的問題,但這會開始給你帶來問題。 '$ string。= $ characters [mt_rand(0,strlen($ characters))];'你需要使用strlen -1作爲mt_rand的上界。 strlen從1開始計數,字符串索引計數從0開始。 – dsas