実現したいこと
- リスト新規ユーザー追加で、「,」の前に改行が入らないようにする
- 新規ユーザー追加のIDフォームをフォームAに入力された内容+フォームBに入力された内容、フォームBには最初、自動的に8桁の数字を入力しておくようにする
前提
PHPでログインされたら処理内容選択画面(新規ユーザー追加とpswd.json直接編集)を表示し、新規ユーザー追加ではpswd.jsonの「]」の前の行の最後に「,」を追加し、改行して半角スペースを四個追加し、「{"id": "【IDフォームの内容】", "password": "【パスワード入力フォームの内容】", "content": "HTML入力フォームの内容"}」をフォームの内容に合わせて追加する、JSON直接編集ではJSONを直接編集する、というもの。
該当のソースコード
PHP
1<?php 2session_start(); 3 4// ログアウト 5if (isset($_GET['logout'])) { 6 $_SESSION['logged_in'] = false; 7 session_destroy(); 8 header("Location: {$_SERVER['PHP_SELF']}"); 9 exit; 10} 11 12// ログイン 13if (!isset($_SESSION['logged_in']) || $_SESSION['logged_in'] !== true) { 14 if (isset($_POST['id']) && isset($_POST['password']) && $_POST['id'] === '012' && $_POST['password'] === '234') { 15 $_SESSION['logged_in'] = true; 16 header("Location: {$_SERVER['PHP_SELF']}"); 17 exit; 18 } else { 19 if (isset($_POST['id']) || isset($_POST['password'])) { 20 $error_message = "ユーザー名またはパスワードが間違っています。"; 21 } 22 ?> 23 <!DOCTYPE html> 24 <html> 25 <head> 26 <title>ログイン</title> 27 </head> 28 <body> 29 <h1>ログイン</h1> 30 <?php if (isset($error_message)) { ?> 31 <p style="color: red;"><?php echo $error_message; ?></p> 32 <?php } ?> 33 <form method="post"> 34 ID: <input type="text" name="id"><br> 35 パスワード: <input type="password" name="password"><br> 36 <input type="submit" value="ログイン"> 37 </form> 38 </body> 39 </html> 40 <?php 41 exit; 42 } 43} 44 45// 更新処理 46if (isset($_POST['json_content'])) { 47 file_put_contents('pswd.json', $_POST['json_content']); 48 $message = '更新が完了しました。'; 49} 50 51// ユーザー追加処理 52if (isset($_POST['action'])) { 53 if ($_POST['action'] === 'edit_json') { 54 ?> 55 <!DOCTYPE html> 56 <html> 57 <head> 58 <title>JSONの編集</title> 59 </head> 60 <body> 61 <h1>JSONの編集</h1> 62 <form method="post"> 63 <textarea name="json_content" rows="10" cols="50"><?php echo htmlspecialchars(file_get_contents('pswd.json')); ?></textarea><br> 64 <input type="submit" value="更新"> 65 </form> 66 </body> 67 </html> 68 <?php 69 exit; 70 } elseif ($_POST['action'] === 'add_user') { 71 ?> 72 <!DOCTYPE html> 73 <html> 74 <head> 75 <title>新規ユーザー追加</title> 76 </head> 77 <body> 78 <h1>新規ユーザー追加</h1> 79 <form method="post"> 80 ID: <input type="text" name="new_id"><br> 81 パスワード: <input type="text" name="new_password"><br> 82 HTMLコンテンツ: <input type="text" name="new_content"><br> 83 <input type="submit" value="追加"> 84 </form> 85 </body> 86 </html> 87 <?php 88 exit; 89 } 90} 91if (isset($_POST['action']) && $_POST['action'] === 'add_user') { 92 ?> 93 <!DOCTYPE html> 94 <html> 95 <head> 96 <title>新規ユーザー追加</title> 97 </head> 98 <body> 99 <h1>新規ユーザー追加</h1> 100 <form method="post"> 101 ID: <input type="text" name="new_id"><br> 102 パスワード: <input type="text" name="new_password"><br> 103 HTMLコンテンツ: <textarea name="new_content"></textarea><br> 104 <input type="submit" name="action" value="追加"> 105 </form> 106 </body> 107 </html> 108 <?php 109 exit; 110} 111 112// ユーザー追加処理(フォーム送信後) 113if (isset($_POST['new_id']) && isset($_POST['new_password']) && isset($_POST['new_content'])) { 114 $new_data = array( 115 'id' => $_POST['new_id'], 116 'password' => $_POST['new_password'], 117 'content' => $_POST['new_content'] 118 ); 119 120 // pswd.jsonの最後の行に追加 121 $json = file_get_contents('pswd.json'); 122 $json = rtrim($json, "]\n") . ", " . json_encode($new_data) . "\n]"; 123 file_put_contents('pswd.json', $json); 124 $message = '新規ユーザーが追加されました。'; 125} 126?> 127<!DOCTYPE html> 128<html> 129<head> 130 <title>処理内容選択</title> 131</head> 132<body> 133<?php if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true) { ?> 134 <p>ログイン中</p> 135 <a href="?logout=true">ログアウト</a> 136<?php } ?> 137 138<?php if (isset($message)) { ?> 139 <p><?php echo $message; ?></p> 140<?php } ?> 141 142<?php if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true) { ?> 143 <h1>処理内容を選択してください</h1> 144 <form method="post"> 145 <input type="submit" name="action" value="edit_json"> pswd.jsonの編集<br> 146 <input type="submit" name="action" value="add_user"> 新規ユーザー追加 147 </form> 148<?php } ?> 149</body> 150</html>
JSON
1[ 2 {"id": "ID-148975697", "password": "PSWD-8453427", "content": "これはHTML①です"}, 3 {"id": "ID-248975697", "password": "PSWD-4453427", "content": "これはHTML②です"}, 4 {"id": "ID-348975697", "password": "PSWD-7453427", "content": "これはHTML③です"} 5]

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。