🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

Q&A

1回答

5686閲覧

php 簡易掲示板の編集機能にパスワードをつける

pompompo

総合スコア5

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

パスワード

パスワードは主に情報にアクセスする際に扱われます。主に、アクセス可能なユーザーを限定する手段として使われます。

0グッド

0クリップ

投稿2019/10/18 19:44

php 簡易掲示板 パスワードと投稿番号が一致した際に投稿を編集する機能

phpで簡易掲示板を作成しています。

1 あ あいうえお
2 い かきくけこ
3 う さしすせそ

という投稿があった際に、
編集したい投稿の投稿番号と設定したパスワードを編集フォームに入力する

新規投稿フォームに同内容の投稿が再び表示される

そのまま新規投稿フォームにて編集し、送信すると編集される

このようなシステムを作りたいです。
以下のコードを入力して実行すると、
Parse error: syntax error, unexpected ')' in /public_html/mission_3-5.php on line 76
というエラーが表示されてしまいます。
エラーの原因と解決法を教えていただきたいです。

php<html>

1<head> 2 <meta charaset="UTF-8"> 3</head> 4<body> 5 6 <?php 7 $filename = "mission_3-5.txt"; 8 9 //投稿機能 10 11 //フォーム内が空でない場合に以下を実行する 12 if (!empty($_POST['name']) && !empty($_POST['comment'])) { 13 14 //入力データの受け取りを変数に代入 15 $name = $_POST['name']; 16 $comment = $_POST['comment']; 17 $pass=$_POST['pass']; 18 19 20 //日付データを取得して変数に代入 21 $postedAt = date("Y年m月d日 H:i:s"); 22 23 //編集フォームに入力がない場合は新規投稿、ある場合は編集 ここで判断 24 if (empty($_POST['editNO'])) { 25 // 以下、新規投稿機能 26 //ファイルの存在がある場合は投稿番号+1、なかったら1を指定する 27 if (file_exists($filename)) { 28 $num = count(file($filename)) + 1; 29 } else { 30 $num = 1; 31 } 32 33 //書き込む文字列を組み合わせた変数 34 $newdata = $num . "<>" . $name . "<>" . $comment . "<>" . $postedAt."<>" .$pass."<>"."\n"; 35 36 37 38 39 //ファイルを追記保存モードでオープンする 40 $fp = fopen($filename, "a"); 41 42 //入力データのファイル書き込み 43 fwrite($fp, $newdata ); 44 fclose($fp); 45 } 46 47} 48 49 //編集選択 50 51 //編集フォームの送信の有無で処理を分岐 52 if(!empty($_POST['editNO'])){ //もし、編集フォームに入力されたら 53 54 55 // 以下編集機能 56 //入力データの受け取りを変数に代入 57 $editNO = $_POST['editNO']; 58 $editpass=$_POST['editpass']; 59 60 61 //読み込んだファイルの中身を配列に格納する 62 $ret_array = file($filename); 63 foreach ($ret_array as $line) {//配列の数だけループさせる 64 65 $data = explode("<>", $line); //explode関数でそれぞれの値を取得 66 if ($data[0] == $editNO && $data[4] == $editpass){ 67 68 //ファイルを書き込みモードでオープン+中身を空に 69 $fp = fopen($filename, "w"); 70 71 //編集のフォームから送信された値と差し替えて上書き 72 fwrite($fp, $editNO . "<>" . $name . "<>" . $comment . "<>" . $postedAt . ); 73 } else { 74 //一致しなかったところはそのまま書き込む 75 fwrite($fp, $line); 76 } 77 } 78 fclose($fp); 79 } 80 } 81 82 83 //編集フォームの送信の有無で処理を分岐 84 if (!empty($_POST['editID'])) { 85 86 //入力データの受け取りを変数に代入 87 $ID = $_POST['editID']; 88 89 //読み込んだファイルの中身を配列に格納する 90 $editCon = file($filename); 91 92 //配列の数だけループさせる 93 foreach ($editCon as $line) { 94 95 //explode関数でそれぞれの値を取得 96 $editdata = explode("<>",$line); 97 98 //投稿番号と編集対象番号が一致したらその投稿の「名前」と「コメント」を取得 99 if ($editID == $editdata[0] && $editpass == $editdata[4]) { 100 101 //投稿のそれぞれの値を取得し変数に代入 102 $editnumber = $editdata[0]; 103 $editname = $editdata[1]; 104 $editcomment = $editdata[2]; 105 106 //既存の投稿フォームに、上記で取得した「名前」と「コメント」の内容が既に入っている状態で表示させる 107 //formのvalue属性で対応 108 } 109 } 110 } 111 112 113 114 <form action="mission_3-5.php" method="post"> 115 <input type="text" name="name" placeholder="名前""><br> 116 <input type="text" name="comment" placeholder="コメント"><br> 117 <input type="text" name="editNO" value="<?php if(isset($edit)) {echo $editnumber;} ?>"> 118 119 120 <input type="text" name="pass" placeholder="パスワード" > 121 <input type="submit" name="submit" value="送信"> 122 </form> 123 124 <form action="mission_3-5.php" method="post"> 125 <input type="text" name="dnum" placeholder="削除対象番号" ></br> 126 <input type="text" name="delpass" placeholder="パスワード" > 127 <input type="submit" name="delete" value="削除"> 128 </form> 129 130 <form action="mission_3-5.php" method="post"> 131 <input type="text" name="edit" placeholder="編集対象番号"></br> 132 <input type="text" name="editpass" placeholder="パスワード"> 133 <input type="submit"name="send_edit" value="編集"> 134 </form> 135 136 137 138 139 140 141 142 143 144 <?php 145 $filename="mission_3-5.txt"; 146 $texts_export=file($filename); 147 foreach((array)$texts_export as $text_export){ 148 149 $keys_export=explode("<>",$text_export); 150 $keys_export_num=count($keys_export); 151 foreach($keys_export as $key_export=>$val_export){ 152 if($key_export!==$keys_export_num-2){ 153 echo $val_export." "; 154 } 155 } 156 echo "<br>"; 157 } 158 159 ?> 160 161 162 </body> 163</html> 164 165 166コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/10/18 22:51

これ、どこかの教材だと思うのですが、出典を明らかにしてもらえますか?
guest

回答1

0

fwrite($fp, $editNO . "<>" . $name . "<>" . $comment . "<>" . $postedAt . );

表示通り、シンタックスのエラーなので76行目の最後のドットが不要?な気がします

投稿2019/10/18 19:55

編集2019/10/18 19:55
unhappychoice

総合スコア1531

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/10/18 21:47

自信持ってください。構文的にしっかり不要です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問