2011-01-04 7 views
1

私は別のフォルダからファイルを移動するためのものです。このスクリプトを持っていますが、私はエラー,:は、私は別のフォルダにファイルを移動するとエラーが出る

$photo= $_POST['camera']; // i.e. 45647.jpg 

    //move file to userpics/ folder 

    rename ("../uploads/$photo", "../userpics/$photo"); 

を取得するが、私はこのエラーを取得:

Warning: rename(/uploads/1czcec43s.jpg\n,/userpics/1czcec43s.jpg\n) [function.rename]: No error in .. on line 24 
+0

通知を発行してもファイルは移動していますか? –

+0

サイドノート:ファイル名に改行( '$ photo')があ​​ります。それはおそらくそれらを削除する方が良いです... –

答えて

2

ファイル名に改行番号\nが含まれています。これがエラーの原因になる可能性があります。 trimを呼び出してみてください。

$photo = trim($_POST['camera']); // i.e. 45647.jpg 
rename ("../uploads/$photo", "../userpics/$photo"); 

また、善のために、あなたのコードにチェックするいくつかの正気を追加します。あなたのユーザは$_POST['camera']の内容としてweb/index.php(例えば)を入れ、PHPファイルを上書きすることができます。

+0

ありがとうの作品:))私はデータベースに挿入する前に、私はまだ$写真をエスケープすることができます! –

+0

それをエスケープすることは役に立ちません。あなたはファイル名として受け入れるものを定義する正規表現を書くべきです。 '/^\ w \ .jpg $/i'のようなものは、英数字、スペース、アンダースコア、' .jpg'、大文字小文字を区別しないもので十分です。 – lonesomeday

0

使用されているPOSTパラメータの最後に\ n(改行)があります。あなたはそれを削除しようとしましたか?

注意:このコードは非常に脆弱です。

関連する問題