2011-01-20 11 views
2

は、このような基本的な質問のための謝罪が、私は次のコードdebuggind狂ってきた:基本的なPHPのファイル操作

$fname = 'results.txt'; 

$handle = fopen($fname,"a+"); 
if ($handle){ 
    $cnt = file_get_contents('./results.txt'); 
    $pos = strpos($cnt,":"); 
    if ($pos === 'false'){ 
     $str = htmlspecialchars($_COOKIE['username']).": ".$_COOKIE['score']; 
     fwrite($handle,$str); 
     } 
    if ($cnt) echo $cnt; 
    else echo 'Error in file_get_contents!<br />'; 
} 
else echo '<span>Error while opening file</span>'; 

$ cntが私は何でも、falseを返します。私は引数を 'results.txt'に変更しようとしましたが、完全なURLはファイルに保存されています。私はphp.net上の関数を見て、私が見ているものから、構文が正しいです。

お時間をいただきありがとうございます。

P.S.コード自体はいいものではありません(f.e.正規表現はこの作業に適しています)。私は急いで書きましたが、書き直す前に実行したいのです。

+1

エラー報告はオンになっていますか?ファイルの先頭に 'error_reporting(E_ALL);'を実行してください –

+0

データベースやデータベースに類似したもの(テキストファイルなど)にHTMLエスケープデータを入れないでください。あなたはものを出力するときに行うことができます。そうしないと、エスケープされていないデータがある時点で必要な場合(たとえば、平文のメールの場合)に問題が発生します。 – ThiefMaster

+1

'false'を引用しないでください。 – ThiefMaster

答えて

5

strposは、 'false'の文字列値ではなく、ブール値falseを返します。試してみてください:

if ($pos === false) { 
+0

ありがとうございます、ファイルは正しく書き込まれました。 – Arnthor