PHPで登録ページを作成中です。
そのページはパスワードのハッシュも認証も含まれています。die関数を使うとフォームは停止され、エラーが表示されます。
そのエラーメッセージを同じページに表示したいのです。
lang
1<?php 2 3$ErrorTest =""; 4 5if(!empty($_POST)) 6{ 7 if(empty($_POST['username'])) 8 { 9 $ErrorTest = "ユーザー名を入力してください"; 10 } 11 12 if(empty($_POST['password'])) 13 { 14 $ErrorTest = "パスワードを入力してください"; 15 } 16 17 $query = "SELECT 1 FROM users WHERE username = :username"; 18 19 $params = array(':username' => $_POST['username']); 20 21 try 22 { 23 $stmt = $db->prepare($query); 24 $result = $stmt->execute($params); 25 } 26 catch(PDOException $e) 27 { 28 $ErrorTest = "エラーが発生しました" . $e->getMessage(); 29 } 30 $row = $stmt->fetch(); 31 32 if($row) 33 { 34 $ErrorTest = "その名前はすでに登録されています"; 35 } 36 37 $query = "SELECT 1 FROM user WHERE email = :email"; 38 39 $params = array(':email' => $_POST['email']); 40 41 try 42 { 43 $stmt = $db->prepare($query); 44 $result = $stmt->execute($params); 45 } 46 catch(PDOException $x) 47 { 48 $ErrorTest ="エラーが発生しました" . $e->getMessage(); 49 } 50 51 $row = $stmt->fetch(); 52 53 if($row) 54 { 55 $ErrorTest = "そのアドレスはすでに登録されています"; 56 } 57 58 $query = " 59 INSERT INTO users ( 60 username, 61 password, 62 salt 63 ) VALUES ( 64 :username, 65 :password, 66 :salt 67 ) 68 "; 69 70 $salt = time(); 71 72 $password = hash('sha256', $_POST['password'] . $salt); 73 74 $params = array( 75 ':username' => $_POST['username'], 76 ':password' => $password, 77 ':salt' => $salt 78 ); 79 80 try 81 { 82 $stmt = $db->prepare($query); 83 $result = $stmt->execute($params); 84 } 85 catch(PDOException $e) 86 { 87 $ErrorTest = "エラーが発生しました" . $e->getMessage(); 88 } 89} 90?>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。