前提・実現したいこと
表示部分の入力フォームが入力されていない場合にissetの中に入り、入力されているときに値のチェックをし、flgが2になればheader関数で飛ばすというプログラムを作りたいです!エラーコードは発生していません。
でも、立ち上げた場合issetのelse側に行くのはいいのですが、入力して登録ボタンを押してもずっとelseに行ってしまって$_POST['botton']の値が入りません。
本当は登録ボタンを押してissetの中に入らないといけません。
※GET送信だとうまくいき、POST送信の場合のみこの現象が発生します。
該当のソースコード
処理部分(index.php)
<?php session_start(); $flg=0; $name_err=''; $age_err=''; if(isset($_POST['botton'])){ $a=1; $_SESSION['name']=$_POST['name']; $_SESSION['age']=$_POST['age']; if(empty($_SESSION['name'])){ $name_err='未入力'; }else{ $flg++; } if(empty($_SESSION['age'])){ $age_err='未入力'; }else if(strlen($_SESSION['age']) > 2){ $age_err='文字数を2文字以下にしてください'; }else{ $flg++; } }else{ $_SESSION['name']=''; $_SESSION['age']=''; $a=0; } if($flg == 2){ header('location:index1.php'); exit; } require_once 'top.php'; exit; ?>表示部分(top.php)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <form action="index.php" nethod="post"> 氏名<input type="text" name="name" value=<?php print $_SESSION['name']; ?>><br> <?php print $name_err; ?> 年齢<input type="text" name="age" value=<?php print $_SESSION['age']; ?>><br> <?php print $age_err; ?> <?php print $a; ?></form> </body> </html><input type="submit" name='botton' value='登録'>
試したこと
新しい変数($a)を加えてissetの分岐情報を見たのですが初期状態の0から全然動きません。なので$_POST['botton']に値が入っていなくはじかれていると思います。
どこか書き方間違えているのですか?
回答1件
あなたの回答
tips
プレビュー