質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

918閲覧

php login機能について

rumichan

総合スコア6

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2021/10/06 13:49

編集2021/10/06 23:04
$err_msg = ""; session_start(); if(empty($_POST["username"]) || empty($_POST["password"])) { header("Location: login.php?err=1"); exit(); } require_once("dbconnect.php"); $sql = "SELECT * FROM users WHERE username=:username AND password=:password"; $stmt = $pdo->prepare($sql); $stmt->bindValue(":username", $_POST["username"], PDO::PARAM_STR); $stmt->bindValue(":password", $_POST["password"], PDO::PARAM_STR); $stmt->execute(); //実行結果取得 $row = $stmt->fetch(PDO::FETCH_ASSOC); //usernameがDB内に登録されているか確認 if(empty($row["user"])) { header("Location: login.php?err=2"); exit(); } else { $err_msg = "失敗"; } ?> コード
<html lang="ja"> <head> <meta charset="utf-8"> <title>ログインページ</title> <link rel="stylesheet" href="css/style.css"> <meta name="viewport" content="width=device-width"> </head> <body> <form class="box" action="auth.php" method="post"> <h1>LOGIN</h1> <input type="text" name="u_id" placeholder="ID"> <input type="password" name="pass" placeholder="password"> <input type="submit" name="login" value="login"> <a href="signin.php">新規登録</a> </form> </body> </html> コード
入力したusernameとpasswordがデータベースに登録されているユーザネームとパスワードに一致していれば、ログインさせる処理を作りたいです。 sql文は合ってると思うのですが、どこが間違っているかわかりません。。 dbに登録されている値で入力をしたら、err=1が出てくるので、、最初のif文の if(empty($_POST["username"]) || empty($_POST["password"])) { header("Location: login.php?err=1"); exit(); が処理されているのかなと思います。 dbconnect.phpのデータベース接続情報はしっかり確認したので、間違ってないと思います。 教えて頂きたいです。 データベース名はmydb テーブル名 users karamu id username password の3つです 入力情報は、英数字で入力しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/10/06 21:15

usersテーブルのテーブル定義と、そこにどのようなデータが登録されているのか、と何を入力したのかを提示してください。 また、その入力した情報をもってバインド済みSQLを直にMySQLに対して実行して想定の結果が得られるか確認してください。 今のコードなら SELECT * FROM users WHERE username='$_POST["username"]' AND password='$_POST["password"]' もう1つ 入力フォームのコードも提示してください。
rumichan

2021/10/06 23:06

直に実行してみましたが、返り値が空でした。。
m.ts10806

2021/10/06 23:24

こちらの書き方悪かったので間違ったやり方してるかもしれませんが、 $_POSTのところは実際の入力値に置き換えてますよね? できれば$_POSTをvar_dumpで確認していただきたく。
guest

回答1

0

ベストアンサー

$_POSTに入ってくるのは入力フォームの各name属性の属性値です。
$_POSTをvar_dumpで確認するとどういうキーにどういう値が来ているか確認できます。
PHPマニュアルのフォームの処理は確認を。

あと、何度か言及してますがプログラムからDB扱うならエラーハンドリングは必須ですし、セキュリティ考えたら平文でパスワードを保存するのは悪手です。

投稿2021/10/06 23:28

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問