データーの受け渡し後書き込みが出来ません

このQ&Aのポイント
  • 初心者で本を見ながらデーターの受け取り後に書き込みをしようとしたらエラーが出ます。
  • 自宅サーバーで確認したところ正常に動作するのですが、レンタルサーバーにアップした際にエラーが発生します。
  • どこが問題なのか教えていただけますか?
回答を見る
  • ベストアンサー

データーの受け渡し後書き込みが出来ません

初心者で本を見ながら作成しているんですが、FORMでデーターを受け取った後に書き込みをしようとしたらエラーが出ます。 自宅サーバーで確認後、ちゃんと動くんですが。 レンタルサーバーにアップ後エラーが出ます。 何処がおかしいんでしょうか? <?php if (isset($_POST['mane']) && isset($_POST['mita']) && isset($_POST['janru']) && isset($_POST['koment'])) { $s = sprintf("題名 : %s<br> 期待度 : %s<br> ジャンル : %s<br> コメント : %s\n<hr>" , $_POST['mane'], $_POST['mita'], $_POST['janru'], $_POST['koment']); $f = fopen("kitaidosakusei.html", "a"); fwrite($f, $s); fclose($f); echo "<p>書き込みました。"; } ?>

  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
回答No.1

エラーが出たんですよね?どういうエラーメッセージが表示されたんでしょうか?英語なのでハナから読まない方も多いようなのですが、単純なバグの90%位はエラーメッセージをちゃんと読めばそれだけで解決できるものだったりします。こういう所に質問する場合もエラーメッセージを載せた方が答えやすいです。なぜならプログラムがうまく動かない原因は本当にたくさん考えられるからです。 第一印象ですけど、kitaidosakusei.html及びこのファイルが置かれているディレクトリのパーミッションはどうなっていますか?PHPからの書込みが許可されてないんじゃないでしょうか。とりあえずこのディレクトリを777、ファイルを666にしてみて下さい。まあ、セキュリティ的には、プログラムから更新するファイルがあるディレクトリは別ける等の対策が必要かとは思いますが、とりあえず動くようになるのが先かという事で、ここでは考えない事にしましょう。 あと蛇足なのですが、恐らくフォームの入力内容をレイアウトしてkitaidosakusei.htmlに追加しているのだと思いますが、これだと正しいHTMLファイルにはならないですよね。それと入力された文字を何の処理もチェックもなくファイルに書き出していますが、これはセキュリティ上危険な行為です。訪問者が仮にここにJavaScriptやおかしなHTMLを書き込んでしまうと、それがそのまま他の訪問者のブラウザに表示されてしまったり、スクリプトが実行されたりしてしまいますから。純粋にテストプログラムであればいいんですが、このまま本番用にしないように注意して下さい。せめてhtmlspecialcharsを使って表示させるようにして下さいね。

takataka7
質問者

お礼

お礼のお返事が遅くなり申し訳ありませんでした。 ホントに単純なミスでした。 パーミッションの設定が間違ってました。755で動くものと勘違い。 今はテスト用にどのように動くか確認をしながら勉強中です。有難う御座いました。

関連するQ&A

  • phpのエラー

    phpで $fp = fopen("test.txt", a);//ココ1 $jyusin = $_POST['score'];//ココ2 fwrite($fp, $jyusin); fclose($fp); $f = fopen("test.txt", r);//ココ1 echo fgets($f); fclose($f); ココ1の場所でUse of undefined constant...というエラー ココ2の場所でUndefined index...というエラー 上記のエラーはどうしたら直りますか。 因みにissetで隠す方法以外でお願いします。

    • ベストアンサー
    • PHP
  • 新規ファイルを作成する

    にはどうしたらいいのでしょうか? <?php $file='gomi.dat'; $in=isset($_POST['in'])?$_POST['in']:'bad'; if(file_exists("$file")) { $a=file("$file"); foreach($a as $value) { echo "$value<br/>"; } } $fp=fopen("$file","w"); // <-------------- fwrite($fp,"$in\n"); fclose($fp); ?> <form method="post" action="<?= $_SERVER['PHP_SELF'] ?>"> <input type="text" name="in"/> <input type="submit" value="send"/> </form> は動きませんが $fp=fopen("$file","w"); // <-------------- を $fp=fopen("$file","r+"); // <-------------- としてあらかじめ空の gomi.dat (モード777)を作っていれば動きます どうしたら $fp=fopen("$file","w"); // <-------------- にしても動くようになるでしょうか?

    • ベストアンサー
    • PHP
  • htmlとphpのデータ受け渡し???

    いつもお世話になり誠にありがとうございます。 標記の件。 まだ、ボク自身、解っていないようです。 htmlとphpのソースコードを提示します。 どうすればデータの受け渡しができるか? 添削してくださらないでしょうか? html <!--入力画面--> <form action = "./Blog.php" method = "get"> <label class="label" for="name">お名前(ニックネーム)</label> <center><input id="name" type="text" name="name"></center> <label class="label" for="e-mail">メール</label> <input id="e-mail" type="e-mail" name="e-mail"> <label class="label" for="category">カテゴリー</label> <input id="category" type="category" name="categoryl"> <label class="label" for="message">本文</label> <textarea name="area1" style="color:rgb(8, 8, 8); font-size:100%;" cols="50" rows="30"></textarea><br> <input type="submit" name="confiem" value="確認"> </form> CSS <meta charset="utf-8"> <?php session_start(); $mode = 'input'; if( isset($_POST['back']) && $_POST['back'] ){ //何もしない } else if( isset($_POST['confirm']) && $_POST['confirm'] ){ $_SESSION['name'] = $_POST['name']; $_SESSION['e-mail'] = $_POST['e-mail']; $_SESSION['category']= $_POST['category']; $_SESSION['message'] = $_POST['message']; $mode = 'confirm'; } else if( isset($_POST['send']) && $_POST['send'] ){ $mode = 'send'; } else { $_SESSION['name'] =""; $_SESSION['e-mail'] =""; $_SESSION['category']=""; $_SESSION['message'] =""; } ?> <!--確認画面--> <?php if( $mode == 'input' ){ ?> お名前(ニックネーム)<?php echo $_POST['name'] ?><br> Eメール<?php echo $_POST['e-mail'] ?><br> カテゴリー<?php echo $_POST['category'] ?><br> 本文<br> <?php echo nl2br($_POST['message']) ?><br> <input type="submit" name="back" value="戻る" /> <input type="submit" name="send" value="送信" /> <?php } else { ?> <!--完了画面--> <?php } ?> 上記の通りです。 全然ダメだと思います。 添削のほど、宜しくお願い申し上げます。

    • ベストアンサー
    • PHP
  • ページ表示ごとにカウントダウンをさせたい。

    こんばんわ。 こんなスクリプトを組んでみました。 phpは勉強を始めたばかりです。 <? echo "Hello world!!";?> <br> あなたのIPは <? echo $_SERVER["REMOTE_ADDR"]?> ですね? <br> ただいま<? print (date ("Y年m月d日(D) H時i分s秒"));?>です <br><br> <?php $fp = fopen ("count.txt","r+"); $count = fgets ($fp, 32); $count--; fseek($fp, 0); fputs($fp, $count); flock($fp,2); $count = sprintf("%05d", $count); fclose($fp); echo $count ?> ログファイルは初期値として、10としました。 が9までは正常に減っていくのですが、次に8にならずに 89になってしまいます。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • PHPカウンタのデータファイルのパスについて

    PHPカウンタのデータファイルをひとつ上の階層に置いて3つのページで共有したいのですが、 $fp="fopen("counter.dat"," "r+"); 上記パスを $fp="fopen("../counter.dat"," "r+"); このように記述するとエラーになってしまいます。 やり方が間違ってますでしょうか? 以下ソースです。 <?php $fp="fopen("counter.dat"," "r+"); $count=fgets($fp, 6); $count++; fseek($fp, 0); fputs($fp, $count); fclose($fp); ?><BR> <?php echo sprintf('%05d',$count); ?> 初心者の質問で申し訳ありませんが、 ご回答のほどよろしくお願い致します。

    • ベストアンサー
    • PHP
  • PHPで画像を取得、保存する方法

    以下で画像を取得、保存する事が出来ましたが、このプログラムで大丈夫でしょうか? 画像取得、保存の関数やもっと良い方法があれば教えて下さい。 <?php echo "あいうえお"; $temp=file_get_contents("http://www.google.co.jp/intl/ja_jp/images/logo.gif"); echo $temp; echo "<HR>"; $handle=fopen("test.gif","w"); fwrite($handle,"$temp"); fclose($handle); echo "<img src=\"./test.gif\">"; if(is_string($temp)) echo "STRING<BR>"; ?> 疑問点について。 上記プログラムですと、画像を入れた変数$tempが文字列として出力されますが、 1行目の、echo "あいうえお";をコメントアウトするとブラウザに画像が表示されるだけで、fopen,fwriteはきちんと処理されているのにechoの出力が無視されるのはどうしてですか?

    • ベストアンサー
    • PHP
  • 掲示板で更新処理をすると、なぜか書込みされてしまいます。

    掲示板で更新処理をすると、なぜか書込みされてしまいます。 どなたかわかる方教えて下さい、宜しくお願いします。 <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
  • Undefined index

    PHP のスクリプトで以下のようなエラーが出てしまいます。 エラーを発生させないようにする方法がわかる方がいれば教えてください。 よろしくお願いします。 Notice: Undefined index: id in C:\xampp\htdocs\super\sample.php on line 33 ※33行目は 「 echo "<p>入力値:" . $_POST["id"] . "</p>"; 」です。 ---------------------------------- <html> <head> <title>あ</title> </head> <body> <?php //invatal()関数による変換 $temp_sql = "SELECT * FROM t1 where id=%s"; $id = isset($_POST["id"]) ? intval($_POST["id"]) : ""; $result_sql_intval = sprintf($temp_sql, $id); //sprintf()関数による変換 $temp_sql = "SELECT * FROM t1 WHERE id=%d"; $id = isset($_POST["id"]) ? $_POST["id"] : ""; $result_sql_sprintf = sprintf($temp_sql, $id); ?> <form method="POST" action="<?php echo $_SERVER["PHP_SELF"] ?>"> <table> <tr> <td>ID:<input type="text" name="id" value="<?php echo isset($_POST["id"]) ? $_POST["id"]: "" ?>"> <input type="submit" value="送信" name="sub1"></td> </tr> <tr> </td> </tr> </table> </form> </body> <?php echo "<p>入力値:" . $_POST["id"] . "</p>"; echo "<p>作成されたSQL(sprintf):" . $result_sql_sprintf . "</p>"; echo "<p>作成されたSQL(intval):" . $result_sql_intval . "</p>"; ?> </html>

    • ベストアンサー
    • PHP
  • ファイル書き込みが重複する

    こんばんわです。 以下のスクリプトで 投稿データを時系列に新しい書込み順に表示させようとしているのですが、一度実行させると同じ投稿がいくつも表示されてしまうのです。ご回答お願いいたします。一部省略しています。 <?php if($name== "" or $body == ""){ echo '<font color = "#FF000">必須項目入力エラー</font><br>'; echo 'お名前と本文は必ず入力してください<br>'; echo '<a href = "javascript:history.back()">戻る</a>'; } $body = substr($body, 0, 1000); $body = str_replace("\r\n", "<br>", $body); $dt = date("y/m/d H:i:s"); $data = file("data.txt"); $file = fopen("data.txt", "w"); fwrite($file, "$name\t$mail\t$body\t$dt\n"); $i = 1; foreach ($data as $value) { if($i < 30) { fwrite($file, "$value"); $i++; } } fclose($file); } echo ' subject03-BBS <h1>subject-BBS</h1> <form method="post" action="subject03.php" > お名前 <input type="text" size="20" maxlength="40" name="NAME"> メール <input type="text" size="30" maxlength="60" name="MAIL"> <p>本文<br></p> <textarea rows="20" cols="80" wrap="soft" name="BODY"></textarea> <p><input type="submit" name="SUBMIT" value="送信"><p/> </form> '; $data = file("data.txt"); foreach($data as $value){ $view = explode("\t",$value); if($mail== ""){ echo "お名前:$name$view[3]<br>"; } else{ echo "お名前:<a href=\"mailto:$mail\">$name</a>$view[3]<br>";} echo "本文:$body<br>"; } ?>

    • ベストアンサー
    • PHP
  • 下記ソースで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

専門家に質問してみよう