ポンクソフト

ファイルの書き込み - 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

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

お名前:


paywinlv
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 18:04

anklebitcw
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 11:35

butterfxa
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/24 03:37

nhadeptronmr
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/23 20:39

nhadeptronlv
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/23 15:24

sinforve
すべての
calltrackingsource.com 13s.info nhadeptrongoi.com kashinvestment.com csgo-butterfly.com anklebitergaming.com
csfire.pro envelopesstore.com ginastarmusic.com mp3-teca.com csgoodstakes.com
went.black 2pay4win.com appliancerepairsnearme.com oferta-netflix.com
techitax.com csprey.com lightshadowspace.com csboom.pro
投稿者
2017/01/23 12:46

calltrackju
すべての
cbbnews24.com
csgobooms.com
csgojoybets.com
incareersjobs.com
stcmidtenn.org
thewill.in
sakirkaratas.com
apexturnkey.in
medray.in
applevalleymarket.com
b8b90.com
danhhotgay.com
cstopstake.com
nsm.org.in
vov-fc.com
csgohugepots.com
eaglesapparelshop.com
mymobileappmobiappssub2016.com
sbppl.org
gracedental.in
kehulin.com
cheappricetoyou2015.com
vamortgageloantexas.com
doitacdoanhnghiep.com
techimanage.com
elmi.co
upea.in
esncordoba.org
goal888cash.com
fullebookz.com
2winde222.com
投稿者
2017/01/23 09:37

calltrackxm
すべての
cbbnews24.com
csgobooms.com
csgojoybets.com
incareersjobs.com
stcmidtenn.org
thewill.in
sakirkaratas.com
apexturnkey.in
medray.in
applevalleymarket.com
b8b90.com
danhhotgay.com
cstopstake.com
nsm.org.in
vov-fc.com
csgohugepots.com
eaglesapparelshop.com
mymobileappmobiappssub2016.com
sbppl.org
gracedental.in
kehulin.com
cheappricetoyou2015.com
vamortgageloantexas.com
doitacdoanhnghiep.com
techimanage.com
elmi.co
upea.in
esncordoba.org
goal888cash.com
fullebookz.com
2winde222.com
投稿者
2017/01/22 23:55

techitaxxe
すべての techitax.com csprey.com lightshadowspace.com csboom.pro cbbnews24.com csgobooms.com csgojoybets.com incareersjobs.com stcmidtenn.org thewill.in sakirkaratas.com apexturnkey.in 投稿者
2017/01/22 20:37

test
testです
2017/01/22 16:39

残りを読む »