以下のphpを実行すると
if($_REQUEST['action']=='rewrite'){
$_POST = $_SESSION['join'];
$error['rewrite']=true;
}
の部分に対して
Notice: Undefined index: action in /home/ubuntu/public_html/indexSample.php on line 38
というエラーが出ます。
actionについては下のコードのhtmlに書いてあるform actionのことだと思うのですが、form action=""として空文字として指定しているのになぜこのエラーが出るのか分かりません。
ご回答よろしくお願いします。
<?php session_start(); if(!empty($_POST)){ //エラー項目の確認 if($_POST['name']==''){ $error['name']='blank'; } if($_POST['email']==''){ $error['email']='blank'; } if(strlen($_POST['password'])<4){ $error['password']='length'; } if($_POST['password']==''){ $error['password']='blank'; } $fileName=$_FILES['image']['name']; if(!empty($fileName)){ $ext=substr($fileName, -3); if($ext !='jpg' && $ext !='gif'){ $error['image']='type'; } } if(empty('$error')){ //画像をアップロードする $image=date('YmdHis') . $_FILES['image']['name']; move_uploaded_file($_FIlES['image']['tmp_name'],'../member_picture' . $image); $_SESSION['join']=$_POST; $_SESSION['join']['image']=$image; header('Location: check.php'); exit(); } } //書き直し if($_REQUEST['action']=='rewrite'){ $_POST = $_SESSION['join']; $error['rewrite']=true; } ?> <?php // ↓の name テキストボックスの value に入る値を $name に設定する。 // $_POST['name'] が無ければ ""(空文字)が設定される。 $name = ""; if (isset($_POST['name'])) { $name = $_POST['name']; } $email = ""; if (isset($_POST['email'])) { $email = $_POST['email']; } $password = ""; if (isset($_POST['password'])) { $password = $_POST['password']; } ?> <!doctype html> <main> <p>次のフォームに必要事項をご記入ください。</p> <form action="" method="post" enctype="multipart/form-data"> <dl> <dt>ニックネーム<span class="required">必須</span></dt> <dd> <!-- value に↑で定義した$name を設定 --> <input type="text" name="name" size="35" maxlength="255" value="<?php echo htmlspecialchars($name, ENT_QUOTES);?>"> <?php if(isset($error, $error['name']) && $error['name']=='blank'): ?> <p class="error">*ニックネームを入力してください</p> <?php endif; ?> </dd> <dt>メールアドレス<span class="required">必須</span></dt> <dd> <input type="text" name="email" size="35" maxlength="255" value="<?php echo htmlspecialchars($email, ENT_QUOTES);?>"> <?php if(isset($error, $error['email']) && $error['email']=='blank'): ?> <p class="error">*メールアドレスを入力してください</p> <?php endif; ?> </dd> <dt>パスワード<span class="required">必須</span></dt> <dd> <input type="password" name="password" size="10" maxlength="20" value="<?php echo htmlspecialchars($password, ENT_QUOTES);?>"> <?php if(isset($error, $error['password']) && $error['password']=='blank'): ?> <p class="error">*パスワードを入力してください</p> <?php endif; ?> <?php $error = ['password' => '']; if($error['password']=='length'): ?> <p class="error">*パスワードは4文字以上で入力してください</p> <?php endif; ?> </dd> <dt>写真など</dt> <dd> <input type="file" name="image" size="35"> <?php $error = ['image' => '']; if($error['image'] == 'type'): ?> <p class="error">*写真などは「.gif」または「.jpg」の画像を指定してください</p> <?php endif; ?> <?php if(!empty($error)):?> <p class="error">*恐れ入りますが、画像を改めて指定してください</p> <?php endif; ?> </dd> </dl> <div><input type="submit" value="入力内容を確認する"></div> </form> </main>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。