phpファイル もしくはhtmlファイルをユーザーが編集できるようにするにはどのようにすればいいですか?
phpファイル もしくはhtmlファイルをユーザーが編集できるようにするにはどのようにすればいいですか? ユーザー(会員登録かつログイン済み)のユーザーが投稿したファイルにユーザー名を書き込みます。 投稿ファイルに書き込まれたユーザー名とsession名が同じとき「編集」(書き込んだ文章を変更できる) ようにするにはどのようにすればいいですか?
ベストアンサー
投稿した内容をテキストファイルで保存するのですかね(その内容がphpなのかhtmlなのかは、とりあえず不問として)。 >投稿ファイルに書き込まれたユーザー名とsession名が同じとき >「編集」(書き込んだ文章を変更できる) >ようにするにはどのようにすればいいですか? ファイルに書き込まれた投稿者ユーザとセッションのユーザを比較して編集可否をチェックするだけです(何がわからないのかがわかりません)。 一行目に投稿ユーザ、以降がデータ本体といった形式なら下記のような感じでいいですよね(というか自分がチェックできる形式で書き込んでおけばいいわけで・・・)。 $data = file_get_contents($filename); list($user, $text) = explode("\n", $data, 2); if (trim($user) === $_SESSION['user']) { // 編集処理 } else { // 編集不可 } (以下蛇足) 質問者さんが書かれたように「テキストファイルに投稿者を書き込んでおく」となると、実際にテキストファイルを読み込まないと判断出来ませんよね。「出来ない」というわけではありませんが、対象一覧などを表示させようと思うと無駄な読み込みで時間がかかりませんか? 一般的には「投稿」はDBに保存するので、同一レコード内に投稿ユーザなどの情報もあるのでチェックが楽なんですが(というか自分が投稿したデータしか編集対象の一覧に表示しないようにする)。 保存ファイル名を投稿ユーザのID_投稿日時 のようにしておけば、globなどで自分が投稿したファイルだけを対象にすることは可能でしょう。 <?php $saveDir = "save/"; $user = 'tmp'; $files = glob($saveDir . $user . "_*"); sort($files); echo "<ul>"; foreach ($files as $val) { $file = basename($val, ".txt"); printf('<li><a href="edit.php?file=%s">%s</a></li>', $file, substr($file, strlen($user . "_"))); } echo "</ul>";
1人がナイス!しています
他の方への返信ですが・・・ >添付画像のように「ログインユーザーと投稿ユーザーが同じだった場合」 >ユーザーが投稿した記事ないで、 添付画像はよく見えませんが、記事を表示するときには投稿ユーザもログインユーザも既知ですから [編集] ボタンを表示するくらいは簡単ですよね?
質問者からのお礼コメント
完璧とはいいがたいですが 一応できました。 ありがとうございました。
お礼日時:2021/5/8 15:16