現在、アプリの作成に取り組んでいます。
sqlに保存したデータを使ってログインしたいのですが目的のページにログインすることができません。
アプリの流れとしましては、
①new_log.php→新規登録者の情報を入力
➁find.php→新規登録者の情報を確認し、mysqlに保存
③ok.phpに遷移し、ok.php内のリンクタグからlogin.phpに入る。
④login.php→新規登録者の情報を呼び出しログインを行い、check.phpへ遷移
となります。
mysqlに登録者の情報は保存されているのは確認できています。
私なりにログインができない原因として考えているのは
・登録車情報の呼び出し方に問題がある
・格納した変数をまちがった処理で記述していいる
の2点です。
ログインができない原因と解決策を教えてください。よろしくお願いします。
===new_log.php=== <?php //sessionで情報を持ってくる session_start(); require('../conect.php'); // nameとpasswordが空か調べる if($_POST){ if($_POST['name']===''){ $error['name']='blank'; } if(strlen($_POST['password'])<4){ $error['password']='length'; } if($_POST['password']===''){ $error['password']='blank'; } // パスワードに被りが無いかチェックする if(empty($error)){ $member=$db->prepare('SELECT COUNT(*)AS cnt FROM member WHERE password=?'); $member->execute(array($_POST['password'])); $record=$member->fetch(); if($record['cnt']>0){ $error['password']='duplicate'; } } //エラーが空ならfind.phpに遷移する if(empty($error)){ //$_POSTを$_SESSIONに代入 $_SESSION['join']=$_POST; header('Location:find.php'); exit(); } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="../styl.css"/> <title>絶対!禁煙‼</title> </head> <body> <div class="all"> <!--====header===---> <header> <div class="header"> <div class="title"> <h1> <img src="../image_folder/No_Smoking.png" alt="絶対!禁煙!!"> </h1> </div> <p class="use-to"> <a href="useto.php">使い方はこちら</a> </p> </div> </header> <h2>新規登録</h2> <div class="sign_up"> <form action="" method="POST"> <!-- $_POSTで名前とパスワードを読み込む --> <p>お名前:</p> <input type="text" name="name" value="<?php print(htmlspecialchars($_POST['name'],ENT_QUOTES));?>"> <?php if($error['name']==='blank'):?> <p class="error">名前を入力してください</p> <?php endif;?> <p>パスワード:</p> <input type="text" name="password" value="<?php print(htmlspecialchars($_POST['password'],ENT_QUOTES));?>"> <?php if($error['password']==='length'):?> <p class="error">パスワードは4文字以上で入力してください</p> <?php endif ;?> <?php if($error['password']==='blank'):?> <P class="error">パスワードを入力してください</P> <?php endif;?> <?php if($error['password']==='duplicate'):?> <p class="error">指定されたpasswordは既に使用されいます</p> <?php endif?> <br> <input type="submit" value="入力内容を確認する"> </form> </div> </div> </body> </html>
===find.php=== <?php //sessionで情報を持ってくる session_start(); require('../conect.php'); //session['join']がセットされていなければnew_log.phpに戻る if(!isset($_SESSION['join'])){ header('Location:new_log.php'); exit(); } //formのpostが送信された時にnameとpasswordを保存する if(!empty($_POST)){ $statement=$db->prepare('INSERT INTO member SET name=?,password=?'); $statement->execute(array( $_SESSION['join']['name'],$_SESSION['join']['password'] )); //session['join']をクリアしてok.phpに遷移する unset($_SESSION['join']); header('Location:ok.php'); exit(); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="../styl.css"/> <title>絶対!禁煙‼</title> </head> <body> <div class="all"> <!--====header===---> <header> <div class="header"> <div class="title"> <h1> <img src="../image_folder/No_Smoking.png" alt="絶対!禁煙!!"> </h1> </div> <p class="use-to"> <a href="useto.php">使い方はこちら</a> </p> </div> </header> <h2>登録情報はこちらで間違いないですか?</h2> <form action="" method="POST"> <input type="hidden" name="action" value="submit"/> <!--$_SESSIONでnameとpassswordを出力する--> <div class="confirm"> <P>名前:</P> <?php print(htmlspecialchars($_SESSION['join']['name'],ENT_QUOTES));?> <br> <P>パスワード:</P> <?php print(htmlspecialchars($_SESSION['join']['password'],ENT_QUOTES));?> </div> <P>入力した内容に間違いがなければ登録するをクリックしてください</P> <div class="decision"> <a href="new_log.php?action=rewrite">書き直す</a> <input type="submit" value="登録する"> </div> </form> </div> </body> </html>
===login.php=== <?php //sessionで情報を持ってくる session_start(); require('conect.php'); if(!empty($_POST)){ //$_POSTが空じゃなかった時の処理 if($_POST['name'] !==''&&$_POST['password'] !==''){ $login=$db->prepare('SELECT * FROM member WHERE name=? AND password=?'); $login->execute(array( $_POST['name'], $_POST['password'] )); $member=$login->fetch(); if($member){ $_SESSION['id']=$member['id']; $_SESSION['time']=time(); //cookieにログイン情報を3日間保存する if($_POST['save']==='on'){ setcookie('password',$_POST['password'],time()+60*60*24*3); } header('Location:check.php'); exit(); }else{ $error['login']='failed'; } //$_POSTが空だった時の処理 }else{ $error['login']='blank'; } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <link rel="stylesheet" href="styl.css"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>絶対!禁煙!!</title> </head> <body> <div class="all"> <header> <!--===header===--> <div class="header"> <div class="title"> <h1><img src="image_folder/No_Smoking.png" alt="絶対!禁煙!!"></h1> </div> <div class="new"> <p> <a href="join/new_log.php">新規登録はこちら</a> </p> </div> </div> </header> <!-- center --> <h2> 『禁煙』で人生を大きく変えましょう </h2> <P class="challenge"> 30日禁煙チャレンジ </P> <div> <!--actionは空にしてphpで入力情報を真偽する --> <form action="" method="POST"> <div class="form"> <p class="name">お名前:</p> <input type="text" name="name" value="<?php echo(htmlspecialchars($_POST['name'])) ;?>"><br> <?php if($_POST['name']==='blank'):?> <p class="error">正しい名前とパスワードを入れてください</p> <?php endif;?> <p class="password">パスワード:</p> <input type="password" name="passwoed" value="<?php echo(htmlspecialchars($_POST['password']));?>"><br><br> <?php if($error['login']==='failed'):?> <p class="error">ログインに失敗しました</p> <?php endif;?> </div> <br> <br> <input type="submit" value="ログイン" name=""> </form> </div> </div> </body> </html>
回答1件
あなたの回答
tips
プレビュー