2009-07-15 14 views
0

こんにちは、私はいくつかの問題を抱えています...質問は、私はフォームから情報を取得し、データを(コメント、アップロード写真と電子メール)私はそれをやったときにPHPとmysqlの質問

コード警告を与えた

// move file from temp location on server to your uploads folder 
    move_uploaded_file($F1["tmp_name"], "Uploads/$F1[name]"); 
    print "Stored in: Uploads/$F1[name]"; 


// save location of upload to text file uploads.txt for later use 

$datafile = fopen("uploads.txt","a"); 
flock($datafile,1); 
fwrite($datafile, "Uploads/$F1[name]\n"); 
flock($datafile,3); 
fclose($datafile); 




// divide size by 1024 to get it in KB 
/* if ($F1["size"]/1024 > 50) { 
    print "Your gif file is too large! Less that 50KB please!"; 
    exit(0); 
    }*/ 

if (!(IsSet($_FILE["fname"]))) { 




    $query="insert into guestbook (comments, email, img,display) values 
    ('$_POST[comments]','$_POST[email]','some address ', '0')";} 

else 

$query="insert into guestbook (comments, email, img, display) values 
    ('$_POST[comments]','$_POST[email]','some addres', '$_POST[0]')"; 

私が得た警告がある

警告:move_uploaded_file(/ holder.jpgがアップロード):ストリームを開けないために失敗しました:中にそのようなファイルやディレクトリを(住所)48行

警告:move_uploaded_file()に格納されているライン48 に(いくつかのアドレス)に 'アップロード/ holder.jpg' に '/ TMP/php4OAZMC' を移動できません:アップロード/ holder.jpg

どうすれば修正できますか?事前

答えて

1

おかげで、私はアップロードのためのあなたの権限を確認し、また、すなわち

/home/meme/www/example.com/Uploads/ 

、それはスクリプトの場所にに保存するファイルの絶対パスではなく相対を必要だと思いますディレクトリ。あなたのベーコンを将来保存するもう一つの小さなヒント - ディレクトリとファイル名を小文字で保存してください。あなたのファイルシステムが大文字と小文字を区別しているため、あなたのコードが存在しないファイルまたはディレクトリを探しているときに、将来、いつか底に噛まれることはありません!

0

アップロード/フォルダは既に存在しますか?そうでない場合は、最初に作成してください。これがエラーの原因になっている可能性があります。

また、move_uploaded_file()が有効かどうかを確認することをお勧めします。正常に機能する場合はtrue、それ以外の場合はfalseを返します。

また、すでに述べたように、絶対パスも使用してください。

Reference

+0

間違いなく良い考えです。ただし、この例ではmove_uploaded_file()は実際にエラーをスローしています。 – Gav

+0

ええ、私はそのエラーの原因を知っている、私はちょうどいくつかのアドバイスを渡していたので、ファイルのアップロードが何らかの不明な理由などで失敗した場合、正常に終了することができます。 – DeadHead

0

あなたはまた、あなたのアップロードフォルダは、それがアクセス権が正しく設定のしていることを確認してください - テスト目的のために、お好みのFTPクライアントを使用して777にアップロードフォルダをchmodコマンド。

アップロードを実践する準備ができたら、フォルダを適切に保護して(誰でも書き込みできるだけでなく)、ファイルタイプにフィルタを適用するようにしてください。

0
  1. 移動するパスが存在することを確認するには、Webサーバープロセスに書き込み権限があることを確認します。
  2. あなたの挿入クエリは、SQLインジェクションを待っているばかりのセキュリティホールです。以下を使用してハッキングの可能性を減らすことができます:

    $ comments = mysql_real_escape_string($ _ POST ['comments']); $ email = mysql_real_escape_string($ _ POST ['email']); $ query = "ゲストのコメント(コメント、メール、画像、ディスプレイ)の値を ( '{$コメント}'、 '{$ email}'、 'some address'、 '0')";