「よくわかるPHPの教科書」の参考書を利用して勉強しています。表示はされるのですが、
会員登録画面のニックネームのテキスト欄にエラーが出ています。この本はエラーだらけで
苦労していますが、勉強になりました。ネットでだいぶ怒られましたが、よろしくお願いいたします。
内容的は「<br /><b>Notice</b>: Undefined index: name in <b>C:\xampp\htdocs\php_sample\part5_2_sample\join\step5\index.php</b> on line <b>93</b><br />」
となっており、Undefined index:についてはだいぶ勉強したつもりなんですが、
ニックネームのコードのなかの<input type="text" name="name" size="35" maxlength="255"
value="<?php echo htmlspecialchars($_POST['name'],
ENT_QUOTES, 'UTF-8'); ?>" />を<input type="text" name="name" size="35" maxlength="255"
value="<?php echo htmlspecialchars(isset($_POST['name']),
ENT_QUOTES, 'UTF-8'); ?>" />
とすると、エラーは消えるのですが、書き換えの時にissetの戻り値がニックネームのテキスト欄に「1」と表示されます。これは当然なんですが、、これを最初に打ち込んだニックネームを表示するにはどのようにしたらいいでしょうか。
PHP
1<?php 2 require('../dbconnect.php'); 3 4 session_start(); 5 6 if (!empty($_POST)) { 7 8 // エラー項目の確認 9 if ($_POST['name'] == '') { 10 $error['name'] = 'blank'; 11 } 12 if ($_POST['email'] == '') { 13 $error['email'] = 'blank'; 14 } 15 if (strlen($_POST['password']) < 4) { 16 $error['password'] = 'length'; 17 } 18 if ($_POST['password'] == '') { 19 $error['password'] = 'blank'; 20 } 21 22 $fileName = $_FILES['image']['name']; 23 24 if (!empty($fileName)) { 25 26 $ext = substr($fileName, -3); 27 28 if ($ext != 'jpg' && $ext != 'gif') { 29 $error['image'] = 'type'; 30 } 31 } 32 33 // 重複アカウントのチェック 34 if (empty($error)) { 35 $sql = sprintf('SELECT COUNT(*) AS cnt FROM members WHERE email="%s"', 36 mysqli_real_escape_string($db, $_POST['email']) 37 ); 38 $record = mysqli_query($db, $sql) or die(mysqli_error($db)); 39 40 $table = mysqli_fetch_assoc($record); 41 42 if ($table['cnt'] > 0) { 43 $error['email'] = 'duplicate'; 44 } 45 } 46 47 if (empty($error)) { 48 49 // 画像をアップロードする 50 $image = date('YmdHis') . $_FILES['image']['name']; 51 52 move_uploaded_file($_FILES['image']['tmp_name'], '../member_picture/' . $image); 53 54 $_SESSION['join'] = $_POST; 55 56 $_SESSION['join']['image'] = $image; 57 58 header('Location: check.php'); 59 exit(); 60 } 61 } 62 63 // 書き直し 64 if (isset($_REQUEST['action']) && $_REQUEST['action'] == 'rewrite'){ 65 $_POST = $_SESSION['join']; 66 $error['rewrite'] = true; 67 } 68?> 69 70<!DOCTYPE> 71<html> 72<head> 73 <meta charset="UTF-8" /> 74 <link rel="stylesheet" type="text/css" href="../style.css" /> 75 <title>会員登録</title> 76</head> 77 78<body> 79<div id="wrap"> 80 <div id="head"> 81 <h1>会員登録</h1> 82 </div> 83 84 <div id="content"> 85 86 <p>次のフォームに必要事項をご記入ください。</p> 87 88 <form action="" method="post" enctype="multipart/form-data"> 89 <dl> 90 <dt>ニックネーム<span class="required">必須</span></dt> 91 <dd> 92 <input type="text" name="name" size="35" maxlength="255" 93 value="<?php echo htmlspecialchars($_POST['name'], 94 ENT_QUOTES, 'UTF-8'); ?>" /> 95 <?php if (isset($error['name']) && $error['name'] == 'blank'): ?> 96 <p class="error">* ニックネームを入力してください</p> 97 <?php endif; ?> 98 </dd> 99 100 <dt>メールアドレス<span class="required">必須</span></dt> 101 <dd> 102 <input type="text" name="email" size="35" maxlength="255" 103 value="<?php echo htmlspecialchars($_POST['email'], 104 ENT_QUOTES, 'UTF-8'); ?>" /> 105 <?php if (isset($error['email']) && $error['email'] == 'blank'): ?> 106 <p class="error">* メールアドレスを入力してください</p> 107 <?php endif; ?> 108 109 <?php if (isset($error['email']) && $error['email'] == 'duplicate'): ?> 110 <p class="error">* 指定されたメールアドレスはすでに登録されています</p> 111 <?php endif; ?> 112 </dd> 113 114 <dt>パスワード<span class="required">必須</span></dt> 115 <dd> 116 <input type="password" name="password" size="10" maxlength="20" 117 value="<?php echo htmlspecialchars($_POST['password'], 118 ENT_QUOTES, 'UTF-8'); ?>" /> 119 <?php if (isset($error['password']) && $error['password'] == 'blank'): ?> 120 <p class="error">* パスワードを入力してください</p> 121 <?php endif; ?> 122 123 <?php if (isset($error['password']) && $error['password'] == 'length'): ?> 124 <p class="error">* パスワードは4文字以上で入力してください</p> 125 <?php endif; ?> 126 </dd> 127 128 <dt>写真など</dt> 129 <dd> 130 <input type="file" name="image" size="35" value="test" /> 131 132 <?php if (isset($error['image']) && $error['image'] == 'type'):?> 133 <p class="error">* 写真などは「.gif」または「.jpg」の画像を指定してください</p> 134 <?php endif; ?> 135 136 <?php if (!empty($error)): ?> 137 <p class="error">* 恐れ入りますが、画像を改めて指定してください</p> 138 <?php endif; ?> 139 </dd> 140 </dl> 141 <div><input type="submit" value="入力内容を確認する" /></div> 142 </form> 143 </div> 144 145 <div id="foot"> 146 <p><img src="../images/txt_copyright.png" width="136" height="15" alt="(C) H2O SPACE, Mynavi" /></p> 147 </div> 148 149</div> 150</body> 151</html> 152
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/12/31 04:38
2019/12/31 04:44 編集
2019/12/31 04:46
退会済みユーザー
2019/12/31 05:28
退会済みユーザー
2019/12/31 05:30