現在掲示板にパスワード機能をつけたいと考えています。
ファイルはphpファイルのindex.php、掲示板で出力するデータを格納するreceave.txt,で構成しています。
やりたいことは
消去機能の部分で、入力された番号とパスワードが格納されているものと一致している場合消去し、消去しましたと表示させることです。
現在消去はできるのですが、パスワードに関係なく消えてしまう状況です。
また消えた後に<>が残ってしまうのですがいい表示方法はないでしょうか?
調べた結果、explodeがうまく動作していないということがわかりました。
うまく配列になっておらず、〔0〕はうまく動くのですが、{4〕が認識されていません。
しかし、どう編集すればいいのか分からず、いろいろと試しましたがうまくいかず行き詰っています。
そうすればうまく動くのかわかる方いましたら教えていただきたいです。
回答よろしくお願いします。
php
1 2 3<?php 4 5 6 7$file="receive.txt"; 8if (file_exists($file)) { 9 $count = count(file($file))+1; 10} else { 11 $count = 1; 12 } 13$err_msg1 = ""; 14$err_msg2 = ""; 15$err_msg7= ""; 16$message =""; 17$passmessage=""; 18$edfile = file('receive.txt'); 19$name=( isset( $_POST["name"] ) === true ) ?$_POST["name"]: ""; 20$text=( isset( $_POST["text"] ) === true ) ?$_POST["text"]: ""; 21$password=( isset( $_POST["password"] ) === true ) ?$_POST["password"]: ""; 22$data=($count."<>".$name."<>".$text."<>" .date('H:i:s')."<>".$password."\n"); 23 24if ( isset($_POST["posting"] ) === true ) { 25 26 if ( $name === "" ) $err_msg1 = "名前を入力してください"; 27 28 if ( $text === "" ) $err_msg2 = "コメントを入力してください"; 29 30 if ( $password === "" ) $err_msg7 = "パスワードを入力してください"; 31 32 33 if( $err_msg1 === "" && $err_msg2 ==="" && $err_msg7 ===""){ 34 $fp = fopen( "receive.txt" ,"a" ); 35 fwrite( $fp , $data); 36 $message ="投稿に成功しました。"; 37 38 } 39 fclose($fp); 40 } 41 42 43 44 45 46 47// 編集フォーム 48 49$err_msg3 = ""; 50$err_msg4 = ""; 51$err_msg5 = ""; 52$err_msg9 = ""; 53$message2 =""; 54$edfile = file('receive.txt'); 55$renum=( isset( $_POST["renum"] ) === true ) ?$_POST["renum"]: ""; 56$rename=( isset( $_POST["rename"] ) === true ) ?$_POST["rename"]: ""; 57$retext=( isset( $_POST["retext"] ) === true ) ?$_POST["retext"]: ""; 58$pass2ed=( isset( $_POST["pass2ed"] ) === true ) ?$_POST["pass2ed"]: ""; 59$redata=($renum."<>".$rename."<>".$retext."<>" .date('H:i:s')."<>".$pass2ed."\n"); 60 61 62 63if ( isset($_POST["edit"] ) === true ) { 64 65 if ( $renum === "" ) $err_msg3 = "番号を入力してください"; 66 67 if ( $rename === "" ) $err_msg4 = "名前を入力してください"; 68 69 if ( $retext === "" ) $err_msg5 = "コメントを入力してください"; 70 71 if ( $pass2ed === "" ) $err_msg9 = "パスワードを入力してください"; 72 73 74 if( $err_msg3 === "" && $err_msg4 === "" && $err_msg5 === "" && $err_msg9 === ""){ 75 $fp = fopen("receive.txt", "w"); 76 for ($i = 0; $i < count($edfile); $i++) { 77 $editraw = explode("<>", $edfile[$i]); 78 if ($editraw[0] !== $renum && $editraw[4] !== $pass2ed) { 79 fwrite($fp, $edfile[$i]); 80 } 81 else{ 82 fwrite($fp, $redata); 83 $message2 ="編集に成功しました。"; 84 } 85 } 86 } 87 } 88 89 // 消去フォーム 90 $err_msg6 = ""; 91 $err_msg8 = ""; 92 $delfile = file('receive.txt'); 93 $delete=( isset( $_POST["delete"] ) === true ) ?$_POST["delete"]: ""; 94 $pass3del=( isset( $_POST["pass3del"] ) === true ) ?$_POST["pass3del"]: ""; 95 96 97 if ( isset($_POST["delete"] ) === true ) { 98 99 if ( $delete === "" ) $err_msg6 = "番号を入力してください"; 100 101 if ( $pass3del === "" ) $err_msg8 = "パスワードを入力してください"; 102 103 if( $err_msg6 === "" && $err_msg8 === ""){ 104 $fp = fopen("receive.txt", "w"); 105 for ($i = 0; $i < count($delfile); $i++) { 106 $deldata = explode("<>", $delfile[$i]); 107 if ($deldata[0] !== $delete && $deldata[4] !== $pass3del ) { 108 fwrite($fp, $delfile[$i]); 109 } else { 110 fwrite($fp, "消去しました。\n"); 111 } 112 } 113 } 114 fclose($fp); 115 } 116 117 118 119?> 120 121<!DOCTYPE html> 122<html lang="ja"> 123<head> 124<meta charset="UTF-8"> 125<title>掲示板</title> 126 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 127 <link rel="stylesheet" href="./styles.css" type="text/css"> 128</head> 129<body> 130<h1>掲示板</h1> 131<section> 132 <h2>新規投稿</h2> 133 <form action="index.php" method="post"> 134 名前 : <input type="text" name="name" > <?php echo $err_msg1; ?><br> 135 コメント: <input type="text" name="text" > <?php echo $err_msg2; ?><br> 136 パスワードを設定 <input type="text" name="password" > <?php echo $err_msg7; ?> 137 <input type="submit" value="投稿" name="posting"><br> 138 <?php echo $message; ?> 139 </form> 140 141 142 <h2>投稿編集</h2> 143 <form action="index.php" method="post"> 144 編集番号 <input type="number" name="renum"> <?php echo $err_msg3; ?><br> 145 名前: <input type="text" name="rename" ><?php echo $err_msg4; ?><br> 146 コメント: <input type="text" name="retext" > <?php echo $err_msg5; ?><br> 147 パスワードを入力 <input type="text" name="pass2ed" ><?php echo $err_msg9; ?><br> 148 <input type="submit" value="編集" name="edit"><br> 149 <?php echo $message2; ?> 150 </form> 151 152 153 154 155 <h2>消去</h2> 156 <form action="index.php" method="post"> 157 消去番号 <input type="number" name="delete"> <?php echo $err_msg6; ?><br> 158 パスワードを入力 <input type="text" name="pass3del" > <?php echo $err_msg8; ?><br> 159 <input type="submit" value="消去"> <br> 160 </form> 161 162</section> 163<section> 164 <h2>投稿一覧</h2> 165</section> 166 167<?php 168// 読み込むファイル名の指定 169$file_name = "receive.txt"; 170// ファイルを全て配列に入れる 171$ret_array = file( $file_name ); 172 173// 取得したファイルデータ(配列)を全て表示する 174for( $i = 0; $i < count($ret_array); ++$i ) { 175 $echo_array = explode("<>", $edfile[$i]); 176 177// // 配列を順番に表示する 178 echo ( $echo_array[0]."<>".$echo_array[1]."<>".$echo_array[2]."<>".$echo_array[3]."<br />\n" ); 179} 180 181 ?> 182 183 184</body> 185</html> 186
回答1件
あなたの回答
tips
プレビュー