前提・実現したいこと
PHPのログイン機能に関してですが
executeは実行され$_SESSIONに値が定義されているはずなのにeles判定になってしまうので、if判定に持っていきたいです。
どなたかお力を貸して頂けましたら幸いです。
login_output.blade.php
<?php session_start();?> <?php unset($_SESSION['customer']); $pdo=new PDO('mysql:host=localhost;dbname=myblog;charset=utf8','root',''); $sql=$pdo->prepare('select * from customer where email=? and password=?'); $sql->execute([$_REQUEST['email'], $_REQUEST['password']] ); //ここまでは実行確認済み(試したこと) foreach($sql->fetchAll() as $row){ $_SESSION['customer']=[ 'id'=>$row['id'], 'name'=>$row['name'], 'email'=>$row['email'],'password'=>$row['password'] ]; } if (isset($_SESSION['customer'])){ echo 'いらっしゃいませ',$_SESSION['customer'] ['name'],'さん'; header('Location: http://192.168.33.10:8000'); exit(); } else{ echo 'ログイン名またはパスワードが違います'; } ?>
customer table
mysql> select*from customer; +----+-----------+-------+----------+ | id | name | email | password | +----+-----------+-------+----------+ | 1 | test@test | test | test | | 2 | 2@2 | 2 | w | | 3 | 2@2 | 2 | 2 | +----+-----------+-------+----------+
###login.blade.php
~(省略)~ <form action="{{ url('/posts/login_output') }}" method="post"> {{ csrf_field() }} <div class="form-item"> <label for="email"></label> <input type="text" name="email" required="required" placeholder="メールアドレス"></input> </div> <div class="form-item"> <label for="password"></label> <input type="password" name="password" required="required" placeholder="password"></input> </div> <div class="button-panel"> <input type="submit" class="button" title="Sign In" value="ログイン"></input> </div> </form> ~(省略)~
試したこと
**$sql->execute([$_REQUEST['email'], $_REQUEST['password']] );**までは"ログイン成功しました。";と表示されていたので実行確認できています。
~(省略)~ $sql=$pdo->prepare('select * from customer where email=? and password=?'); if(!preg_match("/[0-9]+/",$_REQUEST["password"]) ){ echo "条件通り入力してください"; } else{ $sql->execute([$_REQUEST['email'], $_REQUEST['password']] ); echo "ログイン成功しました。"; } ~(省略)~
補足情報(FW/ツールのバージョンなど)
OS:win10
php:7.3
mysql:5.6
$_REQUESTの中身は正しいですか?
はい、$_REQUESTはそれぞれ、['email']と['password']しっかり受け取っております。
login_output.blade.phpへ送信前のページも追加させて頂きました。
はい、var_dumpで確認しましたが、それぞれ合っていました。
var_dump($_REQUEST['email']);
var_dump($_REQUEST['password']);
blade.phpってもしかしてLaravelを使用してるのではないですか?
blade内でphp構文を使用していますが、それが原因ですかね????
Laravelというフレームワークを使ってますか?それの回答しだいで全然解決方法等変わってきますので・・・
はい、使っております
すみません、タグ追加いたします。
なるほどです・・・
LaravelのコードがないのにLaravel使ってるってどういうことでしょうか。
>$_REQUEshow ST["password"]
この謎のコードで実行できるわけがないですし。
質問雑すぎません?
bladeだけのために「Laravel使ってる」とは誰も思いませんし、
このコード意味が分からないです。Laravel使わないところの基礎の基礎からやり直さないと。
前から言ってるかもしれませんが、フレームワーク使えるレベルには到底ないです。時間だけ浪費したいのでしょうか。

回答2件
あなたの回答
tips
プレビュー




