tools下
まずはindex.phpからです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
//セッションを使うことを宣言 session_start(); //セッション中でかつクッキーが有効ならば、そのまま次の画面に if (isset($_SESSION["login_id"]) && isset($_COOKIE["login_id"])) { session_regenerate_id(TRUE); header("Location: success.php"); exit(); } //postされて来なかったとき if (count($_POST) == 0) { $message = ""; } else { if(empty($_POST["uname"]) || empty($_POST["pass"])) { $message = "ユーザー名とパスワードを入力してください"; }else{ //"ユーザー名とパスワードを取得 require('../h_tools/un_pw.php'); if ($_POST['uname'] != $username || $_POST['pass'] != $passwd) { $message="ユーザー名かパスワードが違います"; }else{//正しい時 session_regenerate_id(TRUE); //セッションidを再発行 $_SESSION["login_id"] = $_POST['uname']; //セッションにログイン情報を登録 setcookie("login_id", $_SESSION["login_id"] , time()+3600); header("Location: success.php"); //ログイン後のページにリダイレクト exit(); } } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ログインページ</title> <link href="style.css" rel="stylesheet" type="text/css"> </head> <body> <h1>ログインページ</h1> <div class="message"><?php echo $message;?></div> <div class="loginform"> <form action="index.php" method="post"> <ul> <li>ユーザー名:<input name="uname" type="text"></li> <li>パスワード:<input name="pass" type="password"></li> <li><input name="送信" type="submit"></li> </ul> </form> </div> </body> </html> |
セッションを使用するので、少しわかりにくいところがあるかと思いますが、こちらは先ほど紹介したページに譲りたいと思います。ただ、ユーザ名とパスワードにmySQLを使用していないので、その分だけ簡単になっています。使用しなかった理由は下記を前提としたからです。
- おひとりの方がHPを変更
- そのおひとりの方のみがパスワードを管理する
実際にmySQLを使用し、かつパスワードをエンクリプションすることもできますが、ここではご容赦願いたいと思います。
つづいて、success.phpです。こちらは先頭にsessconf.phpがありますが、これは最後に説明します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php //セッションの処理 require('./sessconf.php'); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ログインページ</title> <link href="style.css" rel="stylesheet" type="text/css"> </head> <body> <h1>ログインページ</h1> <h2>HP訂正へは以下から進んでください</h2> <a href="./action.php?textfile=text1.txt">HP訂正1へ進む</a><br> <a href="./action.php?textfile=text2.txt">HP訂正2へ進む</a> <h2>ログアウトは以下から進んでください</h2> <a href="logout.php">ログアウト</a> </body> </html> |
ここは特に難しいところはありません。ひとつだけ、action.phpをhrefで呼び出していて、そのあとに?がありますが、これはaction.phpに変数$_GET[‘textfile’]として、text1.txtあるいはtext2.txtを渡す手段となっています。
つづけて、logout.phpです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
<?php //セッションを使うことを宣言 session_start(); //ログインされていない場合は強制的にログインページにリダイレクト if (!isset($_SESSION["login_id"])) { header("Location: index.php"); exit(); } //セッション変数をクリア $_SESSION = array(); //クッキーに登録されているセッションidの情報を削除 if (ini_get("session.use_cookies")) { setcookie(session_name(), '', time() - 42000, '/'); } //セッションを破棄 session_destroy(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>ログアウトページ</title> <link href="style.css" rel="stylesheet" type="text/css"> </head> <body> <h1>ログアウトページ</h1> <div class="message">ログアウトしました</div> <a href="index.php">ログインページへ</a> </body> </html> |
ここはお手本通りとなっております。
さて、ここまででログインからログアウトまでできたことになります。
ちょっと一息、、、。
さて、今度は文字の入力用のaction.phpです。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
<?php //セッションの処理 require('./sessconf.php'); //テキストを読み取って変数に入れる $filename = "./". $_GET['textfile']; if($fp = fopen($filename, 'r')){ $message=""; while (!feof($fp)) { $message .= fgets($fp); } fclose($fp); } else { exit("ファイルがオープンできませんでした"); } $actcmd = "./action1.php" . "?textfile=" . $_GET['textfile']; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>sample</title> <link href="style.css" rel="stylesheet" type="text/css"> </head> <body> <h1>HP書き換え</h1> <form action=<?php echo $actcmd; ?> method="POST"> <p>以下修正してください<br> <textarea name="message" rows="10" cols="80" maxlength="1000"><?php echo $message ?></textarea> </p> <p>以下特殊文字は使えません。<, >, ', ", &<br> <p><input type="submit" value="確認"></p> </form> </body> </html> |
ひとつだけヒントです。
<?php echo $message ?>
の部分ですが、これは現在記載されているメッセージをそのまま表示させて、編集できる形にしたかったからです。なので、先に $messageをtext1.txtあるいはtext2.txtから読み込むPHPを記載しております。
こんどは、記載内容確認用のaction1.phpとなります。こちらは特段説明は不要かと思います。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php //セッションの処理 require('./sessconf.php'); if (isset($_POST['message']) && is_string($_POST['message'])) { $nokosumessage = $_POST['message']; } else { $nokosumessage = ""; } $actcmd = "./action2.php" . "?textfile=" . $_GET['textfile']; ?> <meta charset="UTF-8"> <title>sample</title> <link href="style.css" rel="stylesheet" type="text/css"> </head> <body> <?php echo nl2br($nokosumessage); ?> <hr> <br>よければ確定してください。<br> 修正する場合は、ブラウザーの戻るボタンで戻ってください。<br> <form action=<?php echo $actcmd; ?> method="POST"> <input id="prodId" name="context" type="hidden" value="<?php echo $nokosumessage; ?>"> <p><input type="submit" value="確定"></p> </form> </body> </html> |
最後に、書き込み終了確認用のaction2.phpとなります。こちらも特段の説明は不要かと思います。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php //セッションの処理 require('./sessconf.php'); if (isset($_POST['context']) && is_string($_POST['context'])) { $filename = './' . $_GET['textfile']; if($kf = @fopen($filename,'w')){ fwrite($kf,$_POST['context']); fclose($kf); } else { exit("ファイルがオープンできませんでした"); } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>記録実施</title> <link href="style.css" rel="stylesheet" type="text/css"> </head> <body> <p>記載内容を更新しました<p> <a href="./success.php">ログインページへ</a> </body> </html> |
後回しにしてしまいましたが、login後のPHPで使用(require)する共通のPHPとなります。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php //セッションをスタート session_start(); //ログインされていない場合、クッキーが切れている場合は強制的にログインページにリダイレクト if (!isset($_SESSION["login_id"]) || !isset($_COOKIE["login_id"])) { header("Location: ./index.php"); exit(); } //クッキーを再度セット setcookie("login_id", $_SESSION["login_id"] , time()+3600); header('Content-Type: text/html; charset=UTF-8'); ?> |
ログインされていない場合は、強制的にindex.phpに飛ぶようになっています。
h_tools下
ユーザ名とパスワードはこのフォルダーのun_pw.phpに入れてあります。これはパーミッションの「その他」をすべて外したかったためです。

これで、このフォルダ内ファイルは外部から直接アクセスできません。un_pw.phpはlogin.phpを通してのみ見ることができるということになります。以下が記載内容です。ユーザ名とパスワードは変更してから使用してくださいね。
|
1 2 3 4 5 |
<?php //以下はサンプルなので、適宜変更願います $username = "abcde"; $passwd = "Tb8ua2zr"; ?> |
ここまでで、text1.txt、text2.txtがWEB上で変更可能となりました。実際にindex.phpを起動して実施してみてください。テキストファイルが更新されていれば成功です。ご武運を祈ります。
HP本体
やっとここまで来ました。本体です。ソース自体はDLなどすれば見られるかと思いますので、ここではポイントのみ記載します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
<?php //ファイルの読み出し $text1_msg=readtextfile("./tools/text1.txt"); $text2_msg=readtextfile("./tools/text2.txt"); function readtextfile($filename){ if($fp = fopen($filename, 'r')){ $message=""; while (!feof($fp)) { $message .= fgets($fp); } fclose($fp); } else { exit("ファイルがオープンできませんでした"); } return ($message); } ?> <中略> <h2 id="goannai">ご案内</h2> <p><font color="red">下記の赤枠のテキストのイベント内容を「HP訂正1」から変更可能</font><p> <div class="navibox"> <p class="gray_line"><?php echo nl2br($text1_msg); ?></p> </div> <中略> <h2 id="goannai">お知らせ</h2> <p><font color="red">こちらは「HP訂正2」から変更可能</font><p> <div class="sidenavibox"> <p><?php echo nl2br($text2_msg); ?></p> </div> <以下略> |
すごく簡単なのではないかと思います。まず、テキストファイルを読んで変数に入れる。それを
<?php echo nl2br($text1_msg); ?>
という形で呼び出しているだけです。なお、nl2br()関数は 改行 を <br> に変更してくれる関数で、PHPのHTML埋め込みようですね。
最後に
長~い説明となりましたが、ここまで読んでいただいてありがとうございました!日々のHPの更新が楽にできようになるるといいですね!


