PHPで簡易掲示板を作成しています。削除する時にパスワードの入力を要求し、空または間違っていたら警告を出して再入力をさせるようにしています。現在、削除画面に遷移した時点で最初から「*パスワードが間違っています。正しく入力してください。」と表示されてしまいます。SESSIONを使おうとしましたが使い方がよくわからずで四苦八苦しています。
どのようにすれば、入力チェックしてから警告を表示するよになるのか助言いただきたいです。
よろしくお願いします!
php
1delete.php(削除画面) 2 3<?php 4require_once('function.php'); 5require('dbconnect.php'); 6 7 $id = $_POST['id']; 8 $stmt = $db->prepare("select * from table WHERE id = :id"); 9 $stmt->execute(array(':id' => $_POST['id'])); 10 $result = $stmt->fetch(PDO::FETCH_ASSOC); 11 12 if(!empty($_POST)){ 13 if ($_POST['password'] === '') { 14 $error['password'] = 'blank'; 15 } 16 if ($_POST['password'] !== $result['password']){ 17 $error['password'] = 'miss'; 18 } 19 if(empty($error)){ 20 $stmt = $db->prepare("update table set deleted_at = cast(now() as datetime) WHERE id = $id"); 21 $stmt->execute(); 22 header('Location: index.php'); 23 exit(); 24 } 25 } 26?> 27<!DOCTYPE html> 28<html lang="ja"> 29<head> 30 <meta charset="UTF-8"> 31 <title>削除</title> 32</head> 33<body> 34 <h3>以下の内容を削除します。</h3> 35 <div class=""> 36 ID<?php echo $result['id']; ?> 37 </div> 38 <form action="" method="post"> 39 <div> 40 <input type="hidden" name="id" value="<?php print(h($result['id'])); ?>"> 41 </div><br> 42 <div>件名: 43 <?php print(h($result['subject']))?> 44 </div><br> 45 <div>本文: 46 <?php print(h($result['body']))?> 47 </div><br> 48 <div>パスワード: 49 <input type="password" name="password" required> 50 <?php if ($error["password"] === "blank") : ?> 51 <p class="error">*パスワードを入力してください</p> 52 <?php endif; ?> 53 <?php if ($error["password"] === "miss") : ?> 54 <p class="error">*パスワードが間違っています。正しく入力してください。</p> 55 <?php endif; ?> 56 </div><br> 57 <input type="submit" value="削除する" onclick="return check()"> 58 </form> 59 </div> 60 <p> 61 <a href="index.php">投稿一覧へ</a> 62 </p> 63 <p> 64 <a href="create.php">新規投稿へ</a> 65 </p> 66 67 <script type="text/javascript"> 68 function check(){ 69 if(window.confirm('本当に削除しますか?')){ 70 return true; 71 var elements = document.getElementsByName('id') ; 72 if(elements == true){ 73 location.href = "delete.php"; 74 }else{ 75 window.alert('キャンセルされました'); 76 return false; 77 } 78 } 79 } 80 </script> 81</body> 82</html> 83
下記の[削除]を押してPOSTでdelete.phpへ遷移しています。
$pはIDで以下の画像だと1657に当たります。
php
1foreach ($tree as $p => $t) { 2 $data = $this->data[$p]; 3 echo "<table>"; 4 if($data['parent_id']===null){ 5 echo <<<EOT 6 <tr> 7 <td>{$p}</td> 8 <td><a href="edit.php?id={$p}">{$data['subject']}</a></td> 9 <td>{$data['post_user']}</td> 10 <td>{$data['created_at']}</td> 11 <form action="child_create.php" method="GET"> 12 <td><button name="id" value="{$p}">[コメント]</button></td> 13 </form> 14 <form action="delete.php" method="POST"> 15 <td><button name="id" value="{$p}">[削除]</button></td> 16 </form> 17 </tr> 18 EOT;
回答2件
あなたの回答
tips
プレビュー