0

特定のフォルダーにアップロードするphpアップロードを実行しようとしています。フォルダリストであるドロップダウンボックスの横にあるアップロードしたいファイルを選択します。これは、ファイルを整理するためです。

<?php 
session_start();
if(!isset($_SESSION["USER"]["Admin"])){
    header("Location: index.html?unath");
}

$folder = mysql_real_escape_string($_POST['loc']);

$target_path = "../../shared/docs/$folder";




$upload2 = $target_path  .  basename( $_FILES['uploadedfile']['name']); 

if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $upload2)) {
    echo "The file ".  basename( $_FILES['uploadedfile']['name']). 
    " has been uploaded";
} else{
    echo "There was an error uploading the file, please try again!";
}

?>

現在、コードはファイルをdocs/folderではなく「docs」フォルダーにアップロードします。代わりに、ファイルの前にフォルダー名を置きます。たとえば、フォルダの名前が「abc」で、ファイルの名前がrobs.docxの場合、メインのDocsフォルダにアップロードされ、abcrobs.docxと呼ばれます。

4

5 に答える 5

2

スラッシュがありません

この行を置き換えます:

$upload2 = $target_path  .  basename( $_FILES['uploadedfile']['name']); 

と:

$upload2 = $target_path  ."/".  basename( $_FILES['uploadedfile']['name']); 

また:

この行を置き換えます:

$target_path = "../../shared/docs/$folder";

と:

$target_path = "../../shared/docs/".$folder."/";
于 2012-08-26T11:12:46.833 に答える
1
  1. mysql_real_escape_stringここにはSQLが含まれていないため、必要ありません。
  2. データベース接続が確立されていない場合は、をmysql_real_escape_string返しますnull$_POST['loc']だからあなたはおそらく価値を捨てているでしょう。
  3. 操作しようとしているものを実際に徹底的に検査せずに、ファイルシステム上の何かを操作するためにユーザー提供の値を使用することは絶対にしないでください。アップロードによるセキュリティの脅威を参照してください。
  4. 自由に使用var_dumpして、さまざまな段階で値がどのように見えるかを確認し、デバッグを行います。
于 2012-08-26T11:14:33.937 に答える
0

$target_pathの後にスラッシュがありません

于 2012-08-26T11:12:59.113 に答える
0

/あなたの最後にを追加してください$target_path

$target_path = "../../shared/docs/$folder/";
于 2012-08-26T11:13:34.887 に答える
0

変数を適切にエスケープする必要があります。

$target_path = "../../shared/docs/". $folder ."/";
于 2012-08-26T11:15:53.383 に答える