提示コードの///コメント部内部のコードですが提示画像のphpMyAdmin
画面のパスワードと入力してhash化したパスワードとIDが一致した物を返すsql
コマンドを作成したいのですがどうやってもif
文がfalse
になってしまいコードが//アカウントのパスワード、IDが間違えている時
部移動しています。どうやら一致しているものがないせいで$sql->fetchAll() as $row
部のforeach
が走っていないのですが
どうやってコマンドを作成すればいいのでしょうか?
<!DOCTYPE html> <html> <head> <title> ログイン </title> <link rel="stylesheet" href="Style.css"> <meta charset="UTF-8"> </head> <body> <?php session_start(); ini_set( 'display_errors', 1 ); ini_set( 'error_reporting', E_ALL ); ?> <?php $password = password_hash($_REQUEST['password'],PASSWORD_DEFAULT); echo $password; //$password = $_REQUEST['password']; $id = $_REQUEST['id']; $name = ""; ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// $pdo = new PDO('mysql:host=localhost;dbname=Bulletin_Board;charset=utf8','root','〇〇◯'); $sql = $pdo->prepare('select * from Account where id=? and password=?'); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// if($sql->execute([$id,$password]) == true) { foreach($sql->fetchAll() as $row) { $_SESSION['account']= [ 'id'=>$row['id'], ]; } //アカウントがある時 if(isset($_SESSION['account']) == true) { echo '<center>'; echo "<h1> ログインしました。 </h1>"; echo "</br>"; echo '<p> ID </p>'.$id; echo "</br>"; echo '<p> 名前 </p>'.$name; echo '<form action="Top.php" method="post"> <button type="submit" name="add">トップページ</button> </form>'; echo '</center>'; } else { //アカウントのパスワード、IDが間違えている時 echo '<center>'; echo "<h1> IDまたはパスワードが間違えています。 </h1>"; echo '<input type="button" onclick="history.back()" value="戻る" style="background-color:red; size:15;width:150px;height:30px">'; echo '</center>'; } } else { echo 'SQLエラー</br>'; print_r($sql -> errorInfo()); } ?> </body> </html>
回答2件
あなたの回答
tips
プレビュー