人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPでの質問です。

data.datというファイルにデータを記録する初歩的なものを作成しました。

index.html
<form method="POST" action="regist.php">
<input type=text name="other" value="abc">
<input type=submit value=" 書き込み ">
</form>

regist.php
$data = $_POST["other"];

$filename = "./data.dat";
$file = fopen($filename,"w");
fputs($file,$data);
fclose($file);

としているのですがdata.datには何も記録されません。
var_dumpで出力すると$dataにデータが入っているのは確認できます。
試しに$_POSTの部分を直接"abc"とするとdata.datに記録されています。

恐らく初歩的な事と思いますが、なぜdata.datにabcと記述されないのか原因があればアドバイスいただければと思います。


●質問者: quocard
●カテゴリ:インターネット ウェブ制作
✍キーワード:ABC dat HTML INDEX PHP
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● KeyKey
●27ポイント

エラーはでていないですか?

error_reporting("E_ALL");

を書いて実行してみてください。

「failed to open stream」といったエラーが出ているならパーミッションの設定に問題があると思います。

例えばディレクトリは「0777」ファイルは「0666」となります。

(環境により異なります)

また、fopenによってファイルが作成された場合、パーミッション「0644」などで作成され、以降同じプログラムを実行してもファイルが更新できない恐れがあります。

ファイルが存在しないときはfcloseの後に

chmod($filename, 0666);

を実行して書き込めるパーミッションに変更するようにしてみてください。

◎質問者からの返答

早速の回答ありがとうございます。

エラーは特に出ていないようです。

<input type=text name="other" value="abc">

上記を複数加えたところdata.datには改行だけが追加されておりました。

文字列とみなされていないとも考えられますが、要素とabcを比較しても同一であることから

原因がよくわかりません。


2 ● lets_skeptic
●27ポイント

regist.phpに以下の記述が抜けていますが、その他プログラム&HTML自体に問題はありません(ここに添付したものと全く同一のものならば)。

<?php

?>

こちらでも実行しましたが、パーミッションの設定さえきちんと行っていれば、ファイルへの書き込みは行われます。

そうすると、次に考えられるのは文字コードの問題です。HTMLファイルとphpファイルの文字コードを確認し、想定のものになっているか確認するのがいいかと思います(ASCIIなので問題が起こることは考えにくいんですけれども…)。

◎質問者からの返答

回答ありがとうございます。

原因については改行コードが問題のようでした。

ちゃんとした改行コードに訂正したところ修正されました。


3 ● shintabo
●26ポイント

<?php

var_dump($_POST);

$data = $_POST['other'];

$filename = "./data.dat";

if ($file = fopen($filename,"w")) {

fputs($file,$data);

fclose($file);

} else {

echo "error";

}

?>

/* これだとOKなので、var_dumpを出力した結果と、完全なソースを教えてください */

/* 余談ですが、エラーは必ずフックした方がいいと思います < if ($file = fopen みたいな */

◎質問者からの返答

回答ありがとうございます。

問題は改行コード部分に問題がありました。

文字コードは問題なかったのですが、改行コードがSJISのものになっていたようです。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ