前提・実現したいこと
PHPで会員登録ページを作っているのですが、passwordを8文字以上で入力してもらいたいので太字の部分で定義出来ていると思ったのですが8文字以下でもスルーされて次の画面に行ってしまいます。
初歩的なことだとは思うのですがご教授頂けたら嬉しいです。
発生している問題・エラーメッセージ
エラーメッセージは出ないですがif文が効いていません。
該当のソースコード
php
1// もし$_POSTに文字があるならフォームに返すための記述 2<?php 3if(isset($_POST['name'])){ 4 $name = $_POST['name']; 5}else{ 6 $name = ""; 7} 8if(isset($_POST['email'])){ 9 $email = $_POST['email']; 10}else{ 11 $email = ""; 12} 13if(isset($_POST['password'])){ 14 $password = $_POST['password']; 15}else{ 16 $password = ""; 17} 18 19 20if (empty($_POST['name'])) { 21 $error['name'] = 'none'; 22} elseif (isset($_POST['name'])) { 23 $error['name'] = 'ok'; 24} 25if (empty($_POST['email'])) { 26 $error['email'] = 'none'; 27} elseif (isset($_POST['email'])) { 28 $error['email'] = 'ok'; 29} 30 31**if (strlen($_POST['password']) < 8) { 32 $error['password'] = 'length'; 33}** 34if (empty($_POST['password'])) { 35 $error['password'] = 'none'; 36 } elseif (isset($_POST['password'])) { 37 $error['password'] = 'ok'; 38 } 39 40 41if(!empty($_POST["name"]&&$_POST["email"]&&$_POST["password"])){ 42 header("Location: check.php"); 43 exit(); 44} 45 46 47?> 48 49 50<!DOCTYPE html> 51<html lang="ja"> 52 53<head> 54 <meta charset="UTF-8"> 55 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 56 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 57 <title>会員登録</title> 58 59 <link rel="stylesheet" href="../style.css" /> 60</head> 61 62<body> 63 <div id="wrap"> 64 <div id="head"> 65 <h1>会員登録</h1> 66 </div> 67 68 <div id="content"> 69 <p>次のフォームに必要事項をご記入ください。</p> 70 <form action="" method="post" enctype="multipart/form-data"> 71 <dl> 72 <dt>ニックネーム<span class="required">必須</span></dt> 73 <dd> 74 <input type="text" name="name" size="35" maxlength="255" value="<?php echo(htmlspecialchars($name,ENT_QUOTES)); ?>" /> 75 <?php if ($error['name'] === 'none') : ?> 76 <p class="error">ニックネームを入力してください。</p> 77 <?php endif; ?> 78 <?php if ($error['name'] === 'ok') : ?> 79 <p class="nothing">空いている項目を入力してください</p> 80 <?php endif; ?> 81 </dd> 82 <dt>メールアドレス<span class="required">必須</span></dt> 83 <dd> 84 <input type="text" name="email" size="35" maxlength="255" value="<?php echo(htmlspecialchars($email,ENT_QUOTES)); ?>" /> 85 <?php if ($error['email'] === 'none') : ?> 86 <p class="error">メールアドレスを入力してください。</p> 87 <?php elseif ($error['email'] === 'ok') : ?> 88 <p class="nothing">空いている項目の入力してください</p> 89 <?php endif; ?> 90 </dd> 91 <dt>パスワード<span class="required">必須</span></dt> 92 <dd> 93 <input type="password" name="password" size="10" maxlength="20" value="<?php echo(htmlspecialchars($password,ENT_QUOTES)); ?>" /> 94 **<?php if ($error['password'] === 'length') : ?> 95 <p class="error">パスワードは8文字以上で入力してください。</p>** 96 <?php endif; ?> 97 <?php if ($error['password'] === 'none') : ?> 98 <p class="error">パスワードを入力してください。</p> 99 <?php elseif ($error['password'] === 'ok') : ?> 100 <p class="nothing">空いている項目を入力してください</p> 101 <?php endif; ?> 102 </dd> 103 104 <dt>写真など</dt> 105 <dd> 106 <input type="file" name="image" size="35" value="test" /> 107 </dd> 108 </dl> 109 <div><input type="submit" value="入力内容を確認する" /></div> 110 </form> 111 </div> 112</body> 113 114</html> 115
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー