###実現したいこと
よくわかるPHPの教科書で掲示板を作成しています。index.phpで会員登録をした際に登録した内容を確認するため、check.phpにページを移行したいです。
###困っていること
本通りにコードを書いたら、index.phpで入力内容を確認するボタンを押した際に、いきなり登録完了画面(thanks.php)へと遷移してしまいます。おそらく、check.phpの11行目からのif文によってthanks.phpに移動しているのだと思うのですが、こういう仕様なのでしょうか?
またどうすれば登録完了画面に移動することができるのでしょうか?
index.php
php
1<?php 2require_once('../dbconnect.php'); 3ini_set('display_errors', 1); 4ini_set('error_reporting', E_ALL); 5 6session_start(); 7 8 9if(!empty($_POST)){ 10 if(isset($_POST['name'])&&$_POST['name']===""){ 11 $error['name']='blank'; 12 } 13 if(isset($_POST['email'])&&$_POST['email']===""){ 14 $error['email']='blank'; 15 } 16 if(isset($_POST['password'])&&$_POST['password']===""){ 17 $error['password']='blank'; 18 } 19 if(isset($_POST['password'])&&strlen($_POST['password'])<4){ 20 $error['length']='length'; 21 } 22 $fileName=$_FILES['image']['name']; 23 if(!empty($fileName)){ 24 $ext=substr($fileName,-3); 25 if($ext!='jpg'&&$ext!='gif'){ 26 $error['image']='type'; 27 } 28 } 29 30 31if(isset($_REQUEST['action'])&&$_REQUEST['action']==='rewrite'){ 32 $_POST=$_SESSION['join']; 33 $error["rewrite"]="true"; 34 35} 36if(isset($_POST['email'])&&empty($error)){ 37 $member=$db->prepare('SELECT COUNT(*) as cnt FROM members WHERE email=?'); 38 $member->execute(array($_POST['email'])); 39 $record=$member->fetch(); 40 if($record['cnt']>0){ 41 $error['email']='duplication'; 42 } 43} 44 45if(empty($error)){ 46 $image=date('YmdHis').$_FILES['image']['name']; 47 move_uploaded_file($_FILES['image']['tmp_name'],'../member_picture/'.$image); 48 49 $_SESSION['join']=$_POST; 50 $_SESSION['join']['image']=$image; 51 header('Location:check.php'); 52 exit(); 53 } 54} 55?> 56<!DOCTYPE html> 57<html> 58<head> 59<link rel="stylesheet" href="../css/style.css"> 60<meta charest="UTF-8"> 61<title>簡易版ツイッター会員登録ページ<?php if(isset($ext)){echo $ext;} ?></title> 62</head> 63<body class="index"> 64<header> 65<h1>会員登録</h1> 66</header> 67<main> 68<p>次のフォームに必要事項をご記入ください</p> 69<form action="" method="POST" enctype="multipart/form-data"> 70 71 <dl> 72 <dt>ニックネーム<span class="required">必須</span></dt> 73 <dd><input type="text" name="name" size="35" value="<?php echo isset($_POST['name'])? htmlspecialchars($_POST['name']): "" ?>"> 74 <?php if(isset($error['name'])&&$error['name']==='blank'):?> 75 <p class="error">*ニックネームを入力してください</p> 76 <?php endif ?> 77 </dd> 78 <dt>メールアドレス<span class="required">必須</span></dt> 79 <dd><input type="text" name="email" size="35" value="<?php echo isset($_POST['email'])? htmlspecialchars($_POST['email']):""?>"> 80 <?php if(isset($error['email'])&&$error['email']==='blank'):?> 81 <p class="error">*メールアドレスを入力してください</p> 82 <?php endif ?> 83 <?php if(isset($error['email'])&&$error['email']==='duplication'):?> 84 <p class="error">*このメールアドレスはもう使われています</p> 85 <?php endif ?> 86 87 </dd> 88 <dt>パスワード<span class="required">必須</span></dt> 89 <dd><input type="password" name="password" size="20" maxlength="20" value=""> 90 <?php if(isset($error['password'])&&$error['password']==='blank'):?> 91 <p class="error">*パスワードを入力してください</p> 92 <?php endif ?> 93 <?php if(isset($error['password'])&&$error['password']==='length'):?> 94 <p class="error">*パスワードは4文字以上で入力してください</p> 95 <?php endif ?> 96 </dd> 97 98 <dt>写真など</dt> 99 <dd> <input type="file" name="image" /> 100 <?php if(isset($error['image'])&&$error['image']=='type'):?> 101 <p class="error">*画像は「.jpg」か「.gif」のものにしてください</p> 102 <?php endif ;?> 103 <?php if(!empty($error)):?> 104 <p class="error">*恐れ入りますがもう一度画像を指定してください</p> 105 <?php endif ?> 106 </dd> 107 108 </dl> 109 <input type="submit" value="入力内容を確認する"> 110 111</form> 112 113</main> 114</body> 115</html> 116
check.php
php
1<?php 2require_once('../dbconnect.php'); 3ini_set('display_errors', 1); 4ini_set('error_reporting', E_ALL); 5session_start() ; 6if(!isset($_SESSION['join'])){ 7 header('Location:index.php'); 8 exit(); 9 } 10 11 if(!empty($_SESSION['join'])){ 12 $statement=$db->prepare("INSERT INTO members SET name=?,email=?,passward=?,picture=?,created=NOW()"); 13 echo $ret=$statement->execute(array( 14 $_SESSION['join']['name'], 15 $_SESSION['join']['email'], 16 sha1($_SESSION['join']['password']), 17 $_SESSION['join']['image'] 18 )); 19 unset($_SESSION['join']); 20 21 header('Location:thanks.php'); 22 exit(); 23 } 24 25?> 26<!DOCTYPE html> 27<html> 28<head> 29<link rel="stylesheet" href="../css/style.css"> 30<meta charest="UTF-8"> 31<title>簡易版ツイッター会員登録ページ</title> 32</head> 33<body class="index"> 34<header> 35<h1>会員登録</h1> 36</header> 37<main> 38<p>入力事項の確認をしてください</p> 39<form action="" method="POST" enctype="multiple/form-data"> 40<input type="hidden" name="action" value="submit"> 41 <dl> 42 <dt>ニックネーム</dt> 43 <dd><?php echo htmlspecialchars($_SESSION['join']['name']) ?></dd> 44 <dt>メールアドレス</dt> 45 <dd><?php echo htmlspecialchars($_SESSION['join']['name'])?></dd> 46 <dt>パスワード</dt> 47 <dd>パスワードは表示されません</dd> 48 <dt>写真など</dt> 49 <dd><img src="../member_picture/<?php if(isset($_SESSION['image'])){echo htmlspecialchars($_SESSION['join']['image']);}?>" 50 width=100 height=100 alt=""> 51 52 </dd> 53 </dl> 54 <div><a href="index.php?action=rewrite">書き直す</a></div>| 55 <input type="submit" value="登録する"> 56 57 58</form> 59</main> 60</body> 61</html>
thanks.php
php
1 2 3<!DOCTYPE html> 4 5<html> 6<head> 7<link rel="stylesheet" href="../css/style.css"> 8<meta charest="UTF-8"> 9<title>簡易版ツイッター会員登録ページ</title> 10</head> 11<body class="index"> 12<header> 13<h1>会員登録</h1> 14</header> 15<main> 16<p>ユーザー登録が完了しました</p> 17<p><a href="">ログインする</a></p> 18</main> 19</body> 20</html> 21
dbconnect.php
php
1<?php 2try{$db=new PDO('mysql:dbname=twitter;host=localhost:3306',"root","root"); 3}catch(PDOException $e){ 4 echo "データベースに接続できませんでした:".$e->getMessage(); 5}
回答2件
あなたの回答
tips
プレビュー