ログファイルへの書き込み方法と改善点

このQ&Aのポイント
  • auからログファイルに書き込みをするための方法と、書き込みができない場合の改善点について解説します。
  • ログファイルに書き込みをするためのソースコードと、書き込みができない場合の改善策について詳しく説明します。
  • auからログファイルへの書き込み方法と、書き込みができない場合の対処法について解説します。
回答を見る
  • ベストアンサー

下記ソースでauからログファイルに書込みしたいのですが、全然反応しませ

下記ソースでauからログファイルに書込みしたいのですが、全然反応しません。 かなりいろいろ試したのですが、まったくダメでした どこを改善すれば、書込み出来るようになるでしょうか? <HTML> <?php $data_file = "test.log"; //データファイル名 if(!isset($PHP_SELF)){ $PHP_SELF = $_SERVER["PHP_SELF"]; } if(!isset($action)){ $action = $_POST['action']; } if(!isset($comment)){ $comment = $_POST['comment']; } if(!isset($upfile)){ $upfile = $_POST['upfile']; } ?> <HEAD> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="expires" content="0" /> <meta http-equiv="content-Type" content="application/xhtml+xml; charset=Shift_JIS" /> </HEAD> <BODY ALIGN="LEFT" BGCOLOR="#000000" TEXT="#FFFFFF" > ■TEST<br> <FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="POST" ENCTYPE="multipart/form-data" style="margin: 0px;"> <P><INPUT TYPE="HIDDEN" NAME="action" VALUE="regist"></P> コメント<br> <TEXTAREA NAME="comment" ROWS="5" COLS="28" style="font-size:10pt; color:#000000"></TEXTAREA><BR> 添付画像:<FONT COLOR="#CC0000"> *GIF/JPG/PNG</color><br> <INPUT TYPE="file" NAME="upfile" SIZE="20"><BR> <br> <?php print "<INPUT TYPE='SUBMIT' VALUE=' 書込み/更新 '> <INPUT TYPE='RESET' VALUE='リセット'>\n"; ?> </FORM> <?php //===============データの書き込み================= if ($action == "regist") { $fp = fopen($data_file, "r+"); // ファイル開く $comment0 = fgets( $fp); //値読み取り $comment=$comment."\\".$action."<br>".$comment0; fputs($fp, $comment); fclose($fp); echo"<font size=1 color='white'>"; echo $comment; echo"<br>"; echo"$comment0"; echo"</font>"; $action="no"; unset($action); unset($comment); unset($comment0); } ?> </body> </html>

  • PHP
  • 回答数2
  • ありがとう数9

質問者が選んだベストアンサー

  • ベストアンサー
  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.2

> よかったらどのようにデバックされたか環境を少し教えてもらえたらありがたいです。 別に俺はデバッグなんてほどの事はしていないですけどね。 ただ実行してみただけです。 ちょい古いサーバーですが、以下のような感じですね。 Linux Apache 2.0 PHP Version 4.4.0 携帯 : au W62H ちなみに、 <input type=file>に関しては、それに関する処理は一切なかったので、飾りだと思ってます。 <TEXTAREA NAME=comment>の テキストのほうは ちゃんとログファイルに書き込まれます。

seventozero
質問者

お礼

回答の方ありがとうございました。 なかなか時間がとれないのですが時間が空き次第auショップにでも行って確認してみたいと思います。

その他の回答 (1)

  • bm_hiro
  • ベストアンサー率51% (200/388)
回答No.1

とりあえず、コピペして実行してみました。 test.log ファイルが存在していて、パーミッションの設定が正しければ、ちゃんと書き込まれていることは確認しました。 意図した動作であるかは分かりませんが、ファイルには書き込まれていました。 ファイルのパーミッションが 書き込み許可になっているか、ご確認ください。 ちなみに、以前、俺も ここで やってしまったのですが、↓には 脆弱性があります。 > $PHP_SELF = $_SERVER["PHP_SELF"]; 昔の書籍とかには↑で書いてたりするのもあるんですよねぇ。。 $PHP_SELF = $_SERVER["SCRIPT_NAME"]; としたほうが良いらしいです。

seventozero
質問者

お礼

返事が遅くなってすいません。 回答頂きありがとうございます。 友達のもってる携帯でやってみたのですが、何も書き込まれないみたいです。 よかったらどのようにデバックされたか環境を少し教えてもらえたらありがたいです。

関連するQ&A

  • 掲示板で更新処理をすると、なぜか書込みされてしまいます。

    掲示板で更新処理をすると、なぜか書込みされてしまいます。 どなたかわかる方教えて下さい、宜しくお願いします。 <HTML> <?php $data_file = "test.log"; //データファイル名 if(!isset($PHP_SELF)){ $PHP_SELF = $_SERVER["PHP_SELF"]; } if(!isset($action)){ $action = $_POST['action']; } if(!isset($tenki)){ $tenki = $_POST['tenki']; } if(!isset($comment)){ $comment = $_POST['comment']; } if(!isset($upfile)){ $upfile = $_POST['upfile']; } ?> <HEAD> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="expires" content="0" /> <meta http-equiv="content-Type" content="application/xhtml+xml; charset=Shift_JIS" /> </HEAD> <BODY ALIGN="LEFT" BGCOLOR="#000000" TEXT="#FFFFFF" > ■TEST<br><br> <FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="POST" ENCTYPE="multipart/form-data" style="margin: 0px;"> <P><INPUT TYPE="HIDDEN" NAME="action" VALUE="regist"></P> <SELECT NAME="tenki" SIZE="1"> <OPTION VALUE="不明">未</OPTION> <OPTION VALUE="☆快晴">☆快晴</OPTION> <OPTION VALUE="○晴">○晴</OPTION> <OPTION VALUE="○晴曇">○晴曇</OPTION> <OPTION VALUE="△曇">△曇</OPTION> <OPTION VALUE="▼雨">▼雨</OPTION> </select> <br> コメント<br> <TEXTAREA NAME="comment" ROWS="5" COLS="28" style="font-size:10pt; color:#000000"></TEXTAREA><BR> <?php print "<INPUT TYPE='SUBMIT' VALUE=' 書込み/更新 '> <INPUT TYPE='RESET' VALUE='リセット'>\n"; ?> </FORM> <?php //===============データの書き込み================= if ($action == "regist") { $fp = fopen($data_file, "r+"); // ファイル開く $comment0 = fgets( $fp); //値読み取り $comment=$tenki."\\".$comment."\\".$action."<br>".$comment0; fputs($fp, $comment); fclose($fp); echo"<font size=1 color='white'>"; echo $comment; echo"<br>"; echo"$comment0"; echo"</font>"; unset($action); unset($tenki); unset($comment); unset($comment0); } ?> </body> </html>

    • ベストアンサー
    • PHP
  • 掲示板の記事の削除

    データの削除の覧でのソースについての質問です。 記事が削除されません。原因がわからないので困ってます。 答えをズバリ書いてくれたり、一からでもいいのでこっちのほうが簡単にできるよってのでも良いです。よろしくお願いします <HTML> <HEAD> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=sjis"> <FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="POST" > <TITLE>削除操作</TITLE> </HEAD> <BODY> <BR> <FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="POST"> <INPUT TYPE ="text" NAME="comment" SIZE="40"><BR> 削除キー<INPUT TYPE="password" NAME="pass" SIZE="10"><BR> <INPUT TYPE ="submit" NAME="regist" VALUE="ボタン"><BR> </FORM> <BR><BR> </CENTER> </BODY> </HTML> <? $data_file = "test01.txt"; if(!isset($code)) { $code = $_POST['code']; } if(!isset($comment)) { $comment = $_POST['comment']; } if(!isset($regit)) { $regist = $_POST['regist']; } if(!isset($delete)) { $delete = $_POST['delete']; } if(!isset($delcode)) { $delcode = $_POST['delcode']; } if(!isset($password)){ $password = $_POST['password']; } if(!isset($pass)) { $pass = $_POST['pass']; } //データの削除 if($delete){ if(($delcode != "") && ($password != "")){ $delfile = file($data_file); $fp = fopen($data_file, "w"); for($i=0; $i<count($delfile); $i++){ list($dcode,$dcomment,$dpass) = split( ",", $delfile[$i]); if ($password == $dpass){ if ($delcode == $dcode) { $delfile[$i] = ""; } } } fputs($fp,$delfile[$i]); fclose($fp); } unset($delfile); } //データの書き込み if($regist){ if(($pass != "") && ($comment != "")){ $code = time(); //アクセス時の秒数 $imput_msg = ( $code .','. $comment .','.$pass); //ファイル操作 $fp = fopen($data_file,"a+"); rewind($fp); fputs($fp,"$imput_msg\n"); fclose($fp); } } //出力処理 $msg = file($data_file); for($i = 0; $i < count($msg); $i++){ list($code2,$comment2,$pass2) = split( ",", $msg[$i]); print "<form method=\"POST\" action=\"$PHP_SELF\">"; print "<input type=\"checkbox\" name=\"delcode\" value=\"$code2\"><br>\n"; print "code2: $code2<br>"; print "comment:$comment2<br>"; print "pass: $pass2<br>"; print " 削除用パスワード:<input type=password size=10 name=password>"; print " <input type=\"submit\" name=\"delete\" value=\"削除\">\n"; print "</form>\n"; } unset($msg); ?>

    • ベストアンサー
    • PHP
  • フォームの値をまとめて取得する関数

    以下のようなフォームから値を取得するときに、(2)のような関数化したいと思っていますが、思うように取得できません。どこが問題かアドバイスください。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=sjis" /> <title>sample</title> </head> <body> <form action="" method="post"> 名前:<br /> <input type="text" name="name" size="30" value="" /><br /> コメント:<br /> <textarea name="comment" cols="30" rows="5"></textarea><br /> <br /> <input type="submit" value="登録する" /> </form> </body> </html> (1)問題なく表示できる <?php  foreach(${"_" . $_SERVER["REQUEST_METHOD"]} as $k=>$v) {   ${$k}=$v;  } echo "名前:$name<br>"; echo "コメント:$comment<br>"; ?> (2)表示できない? <?php function Request() {  foreach(${"_" . $_SERVER["REQUEST_METHOD"]} as $k=>$v) {   ${$k}=$v;  } } Request(); echo "名前:$name<br>"; echo "コメント:$comment<br>"; ?>

    • 締切済み
    • PHP
  • 再帰処理で変数が戻ってきません

    下記プログラムで$viewdataの値が再帰処理時にうまく渡されません。 $actionのregistは渡されるのですが、なぜでしょうか? <html> <head></head> <?php $data_file="new_bbs.log";//ログファイル if(!isset($PHP_SELF)){$PHP_SELF=$_SERVER["SCRIPT_NAME"];} if(!isset($action)){$action=$_POST['action'];} if(!isset($viewdata)){$viewdata=$_POST['viewdata'];} ?> <body> ■TEST<br> <FORM ACTION="<?php echo $PHP_SELF; ?>" METHOD="POST" ENCTYPE="multipart/form-data" style="margin: 0px;"> <INPUT TYPE="HIDDEN" NAME="action" VALUE="regist"> <INPUT TYPE='SUBMIT' VALUE='---UP---'> <?php if($action != "regist"){ $viewdata= file_get_contents( $data_file );//ログファイルのデータ読込 echo "<br>データ:".$viewdata; }else{ echo "再帰データ:".$viewdata; } ?> </FORM> </body> </html>

    • ベストアンサー
    • PHP
  • PHP重複ファイルに連番をつけてアップロードしたい

    ファイルをアップロードするページをPHPで作りました。 testup.htmlでファイルを選択し、 testup.phpでファイルをサーバーにアップする 簡単な仕組みです。 アップロードには成功したのですが、 同じファイル名のデータがある場合、上書きされてしまいます。 上書きされずに、連番等をファイル名に追加してアップロード できればと思いましたが、方法がわかりません。 当方PHPの初心者です。何卒お力をお貸しください。 よろしくお願い致します。 ソースを記入しておきます。 「testup.html」 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>test</title> </head> <body> テストアップローダー<br> <form action="testup.php" method="post" enctype="multipart/form-data"> アップロードするファイルを選択してください。 <br> <input type="file" name="upfile" size="30"><br> <br> <input type="submit" value="アップロード"> <label>  <input type="reset" name="button" id="button" value="リセット" /> </label> </form> </body> </html> 「testup.php」 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>test</title> </head> <body> <p><?php if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0777); echo $_FILES["upfile"]["name"] . "をアップロードしました。"; echo "<br><br>ありがとうございました。"; echo "<br><FORM><INPUT TYPE=button value=閉じる onClick=window.close()></FORM>"; } else { echo "ファイルをアップロードできません。"; echo "<br>お手数ですが前の画面に戻ってもう一度ファイルをアップロードしてください。"; echo "<br><FORM><INPUT TYPE=button value=前のページに戻る onClick=JavaScript:history.back()></FORM>"; } } else { echo "ファイルが選択されていません。"; echo "<br>お手数ですが前の画面に戻ってファイルを選択してください。"; echo "<br><FORM><INPUT TYPE=button value=前のページに戻る onClick=JavaScript:history.back()></FORM>"; } ?></p> </body> </html>

    • ベストアンサー
    • PHP
  • $_SESSION['submit']の自動生成

    <form>タグの中にあるsubmitボタンをクリックすると、post先の.phpに、$_SESSION['submit']変数が自動生成されると聞いたので、テストプログラムを作ってみましたが、自動生成されません。 具体的には、test02.phpのprint_r($_SESSION);において、何も表示されません。 つまり、$_SESSION['submit']が作られていません。 詳しい方、ご教授をおねがいします。 test01.phpのソース <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <?php session_start(); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title>test01</title> </head> <body> <?php print <<< EOH1 <form action="test02.php" method="post" name="form1"> <table> <tr> <td>会社名</td> <td> <input type="text" name="company" size="30" value="東京電気株式会社"> </td> </tr> </table> <br> <input type="submit" value="登録" name="submit">&nbsp;<input type="reset"> </form> EOH1; ?> </body> </html> test02.phpのソース <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <?php session_start(); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <title>test02</title> </head> <body> <?php print_r($_SESSION); if(isset($_SESSION['submit'])) { dispRequest(); } if(isset($_SESSION['submit'])) { unset($_SESSION['submit']); session_unset(); session_write_close(); } function dispRequest() { if (isset($_REQUEST['company'])) { echo "会社名:", $_REQUEST['company'], "<br>\n"; } else { echo "companyが未定義<br>\n"; } } ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHPのPHP_SELFに絡む設定を教えてください

    PHPを勉強中なのですが、以下のソースをSubmit(value=更新)処理すると 結果がURLが見つからない「ページを表示できません」がでます。 恐らく、「PHP_SELF」に絡む設定か、「localhost」のPathに問題があると思うのです。 何かの設定が抜けていると思うのですが、色々調べても分かりません。 どこの設定を直せばいいか教えてください。(^^ 【書籍】 ホンキで学ぼう!PHPのキホン 【環境】 OS:WindowsXPHomeEdition Apapche:1.3.26 PHP:4.2.3 【URL結果】 最初にPHPにアクセスしたときのURL:http://localhost/tmp/php/fileedit.php SubmitしたときのURL:http://tmp/php/fileedit.php 【ソース】書籍の抜粋 <? $filename = "todo01.txt"; if ( $submit ) { $backupfile = $filename.".bak"; echo $backupfile; if ( copy($filename, $backupfile) ) { $fp = fopen($filename, "w"); if(flock($fp, 2)){ fputs($fp, $contents); flock($fp, 3); }else{ echo "ERROR: file lock is failed.<BR>\n"; exit; } fclose($fp); }else{ echo "ERROR: backup failed.<BR>"; exit; } } // ファイル書き換え部終わり ?> <HTML> <HEAD> <TITLE> <? echo $filename ?> </TITLE> <META HTTP-EQUIV="Content-Type" CONTENT="text/html;CHARSET=euc-jp"> </HEAD> <BODY> <FORM ACTION="<? echo $PHP_SELF; ?>" METHOD="POST"> <TEXTAREA NAME="contents" ROWS="25" COLS="100"> <? require ( $filename ); phpinfo(); ?> </TEXTAREA> <INPUT TYPE="submit" NAME="submit" VALUE="更新"> </FORM> </BODY> </HTML>

    • ベストアンサー
    • PHP
  • アップロードしたファイルをメールで添付したいのですが教えてください

    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>ファイルのアップロード</title> </head> <body> <p><?php $fradrs = "from@xxxxxxx"; $toadrs = "to@xxxxxxxx"; $subject = "ファイルアップ\n"; $comment = "アライアンスから\n"; $comment .= "ファイルがアップされました\n"; if (is_uploaded_file($_FILES["upfile"]["tmp_name"])) { if (move_uploaded_file($_FILES["upfile"]["tmp_name"], "files/" . $_FILES["upfile"]["name"])) { chmod("files/" . $_FILES["upfile"]["name"], 0644); echo $_FILES["upfile"]["name"] . "をアップロードしました。"; } else { echo "ファイルをアップロードできません。"; } } else { echo "ファイルが選択されていません。"; } mb_language("ja"); $sdmail0 = $toadrs; $mlhed = "From: $fradrs\n"; $rslt = mb_send_mail($sdmail0,$subject,$comment,$mlhed); ?></p> </body> </html> ファイルは、アップされ、メールでのアップ通知をしていますが アップしたファイルを添付するには、どう書けば良いのでしょうか?

    • 締切済み
    • PHP
  • 現在PHPにてsessionを使用したフォームを作成しております。

    現在PHPにてsessionを使用したフォームを作成しております。 現在、PHPは初心者で勉強中ですが悩んでいるため、ご質問させていただきます。 ソースは下記の通りです。 /* contact.php ----------------------*/ <html> <body> <form action="confirm.php" method="POST" > コメント:<br /> <?php echo $_SESSION['error_comment']; ?> <textarea name="comment"><?php echo $_SESSION['comment']; ?></textarea> <input type="hidden" name="contact" value="<?php $contact; ?>" /> <input type="submit" name="submit" value="確認" /> </form> </body> </html> /* confirm.php ----------------------*/ <?php session_start(); $comment = htmlspecialchars($_POST['comment']); if (isset($_POST["contact"])) { if (empty($comment)) { $_SESSION['error_comment'] = "コメントを入力してください!"; } if (!count($contact)) { $_SESSION["comment"] = $comment; header("Location: contact.php"); exit; } } else { $msg = '編集しました。'; } <html> <body> <?php echo $msg; ?> </body> </html> としております。 上記の内容でテストをするとcomment欄に入力されないと「コメントを入力してください!」と表示されますが、入力(テストと入力)をして確認をすると onfirm.phpのページは表示されずcontact.phpのcomment欄にテストと表示されたままです。 入力された場合はconfirm.phpを表示されせるにはどうしたらよろしいのでしょうか? お分かりの方がいらっしゃいましたら、ご教授お願いします。

    • ベストアンサー
    • PHP
  • phpでテキストファイルへ書き込み

    HTMLでのテキストエリアに記述された内容をPHPを利用して、テキストファイル化したいと考えています。 具体的には、画像上をクリックし、座標値(xとy)をテキストエリアに表示させます。 その表示された座標値をテキストファイルに保存したいと考えています。 以下がソースコードです。 ----- sumple.php ------------------------------ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <SCRIPT type="text/javascript"> function xyget(e){ var box = document.getElementById("xy"); box.value += e.clientX + "\n" + e.clientY + "\n"; } </SCRIPT> </head> <body> <br>画像上をクリック<br> <form name="picture"> <div><img src="sumple.jpg" onclick="xyget(event)" id="pic"></div> <b>座標値</b> <form action="sumple.php" method="POST"> <textarea name="xy" rows="5" cols="5"></textarea> <input type="submit" value="完了"> </form> <?php $content = $_POST['xy']; if ($content) { $fp = fopen('sumple.txt', 'w'); fputs($fp, $content); fclose($fp); print "書き込み完了しました。"; } ?> <br> </body> </html> ---------------------------------------------- テキストファイルはあらかじめ作成してあり、テキストエリアに座標値もちゃんと表示できています。 ですが、完了ボタンを押してもテキストファイルに書き込みがされず、困っています。 お願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう