ポンクソフト

ファイルの書き込み - PHPでファイルの読み書き・掲示板

前ページ PHPでファイルの読み書き・掲示板 TOP 次ページ

目次

  1. PHPでファイルの読み書き・掲示板
  2. ファイルの読み込み
  3. ファイルの書き込み
  4. ファイルの読み書き(ゲストブック)
  5. 設定ファイルの読み書き
  6. CSVファイルの読み込み
  7. テキストエディタの作成
  8. アンケートシステムの作成
  9. 掲示板1(シンプル)

ファイルに文字列を書き込む

ファイルに対する書き込みは、読み込みのような多彩なバリエーションはありません。fopen でファイルをオープンし、fputs または fwrite でファイルに書き込み、fclose でファイルをクローズする、という流れが主なものとなるでしょう。

プログラムの作成

以下のソースを入力してください。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>ファイルに文字列を書き込む</title>
</head>
<body>

<?php
// ファイルを書き込み専用でオープンする
$fp = fopen('write.txt', 'w');
// ファイルに文字列を書き込む
fputs($fp, "1行目\n");
fputs($fp, "2行目\n");
fputs($fp, "3行目\n");
// ファイルをクローズする
fclose($fp);
?>

</body>
</html>
入力が終わったら「write1.php」というファイル名で保存し、サーバにアップして実行してみてください。

属性の設定

上記のプログラムを実行すると、「Permission denied」というエラーが出ると思います。これは書き込むファイルの作成が許可されていないためです。これを防ぐには以下のどちらかの解決策を取ってください。
-ファイルのあるディレクトリを属性変更して「その他」に書込許可属性を与える
-空のテキストファイル「write.txt」を作成、アップし、属性変更から「その他」に書込許可属性を与える
下の方法がセキュリティ的に安全なのでお勧めです。
その後、ふたたび「write1.php」を実行し、write.txtファイルを開いて文字列が書き込まれていることを確認します。

ソースの解説

$fp = fopen('write.txt', 'w');
fopenの第2引数に「w」を指定すると、書き込み専用でオープンします。
fputs($fp, "1行目\n");
ファイルに文字列を書き込む関数です。

フォームの内容を書き込む

今度は、固定の文字列ではなく、フォームから送信された文字列を書き込むようにプログラムを拡張してみましょう。

プログラムの作成

以下のソースを入力してください。
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>ファイルにフォームの文字列を書き込む</title>
</head>
<body>
<form method="post" action="write2.php">
<textarea name="contents" cols="40" rows="20"></textarea>
<input type="submit" value="送信">
</form>

<?php
$contents = $_POST['contents'];
if ($contents) {
  $fp = fopen('write.txt', 'w');
  fputs($fp, $contents);
  fclose($fp);
  print "書き込み完了しました。";
}
?>

</body>
</html>
入力が終わったら「write2.php」というファイル名で保存し、サーバにアップして実行してみてください。write.txtファイルを開いてフォームに書かれた文字列が書き込まれていれば成功です。

ソースの解説

<textarea name="contents" cols="40" rows="20"></textarea>
フォーム部分では、contentsという名前の複数行入力テキストフィールドを作成しています。
$contents = $_POST['contents'];
if ($contents) {
まず変数 $contents にPOST変数を代入し、それが存在するときだけ書き込み処理を行ないます。つまり、テキストフィールドに何か書いてあれば書き込み処理が行なわれます。
fputs($fp, $contents);
テキストフィールドの内容を全てファイルに書き込んでいます。
print "書き込み完了しました。";
書き込み処理があったときだけ、このメッセージが表示されます。
前ページ PHPでファイルの読み書き・掲示板 TOP 次ページ
このエントリーをはてなブックマークに追加 そっか0

このページに関するコメントをどうぞ

お名前:


カルティエ ソリテール
ブランドコピーブランドN級品専門店
史上最も激安ブランドブランドコピー-即日 配送可,100%入荷。
当店は正規品と同等品質は品質3年保証でご注文から5 日でお届け致します。
レディースとメンズ激安通販専門店!品質と本物は同様です。
全て新品、高い品質、激安 、送料は無料です( 日本全国)すべての商品は品質2年無料保証です。
ブランドコピー時計:
2017/03/24 14:04

カリマー
解りやすくて、とてもいいサイトですね!
phpは初心者ですが、最後まで到達できるよう頑張ります!
2017/03/23 04:03


ああああ
2017/03/23 00:54

オメガ ボーイズ
★2017最高等級新しい商品大量入荷!
■在庫情報随時更新!(*^-^*)
■信用第一、良い品質、低価格は。
★歓迎光臨★送料無料(日本全国)
ご注文を待ちしております
よろしくお願いいたします_(._.)_
2017/03/22 09:09


テスト
2017/03/21 14:02

ゆうた
かりんがすき
2017/03/17 14:36

saraebo
別windowsとして実装することなく、actionのphpで、コマンドとするデータベース等の更新で、その結果をクライアントに返さない(homeページの元画面は変わらない。)とする事はできるのでしょうか?
2017/03/17 12:09

ミーコ
テスト
2017/03/16 17:27

NsArk(プログラミング初心者)
非常に細かく書いていただき、大変参考になります!
ただ一点。
自身に理解力が本当に残念です・・・。
orz
2017/03/14 18:41

参考になりました
シンプルで分かりやすく、とても参考になりました。
色々なPHPシンプル掲示板のサイトを見ましたが、
ここが一番です。
ありがとうございました。
2017/03/12 20:15

残りを読む »