1
私はPDOを使い始めましたが、データを取得しようとしていますが、私の登録は完璧ですが、ログインの詳細を入力するときに間違った詳細が表示されます。私はここにコードをつけています。あなたがテストする前store_result()
を実行しない限り、doLoginへ 接続ファイル私はpdo sqlsrvを使ってログインを作成しようとしています
class Database {
private $host = "*****";
private $dbname = "*****";
private $username = "*****";
private $password = "*****";
public $conn;
public function dbConnection() {
$this->conn = null;
try {
$this->conn = new PDO("sqlsrv:Server=" . $this->host . ";Database=" . $this->dbname, $this->username, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $exception) {
echo "Connection error: " . $exception->getMessage();
}
return $this->conn;
}
}
私のクラス
require_once('dbconfig.php');
class USER {
private $conn;
public function __construct() {
$database = new Database();
$db = $database->dbConnection();
$this->conn = $db;
}
public function doLogin($uname,$umail,$upass) {
try {
$stmt = $this->conn->prepare("SELECT user_id, user_name, user_email, user_pass FROM cust WHERE user_name=:uname OR user_email=:umail ");
$stmt->execute(array(':uname'=>$uname, ':umail'=>$umail));
$userRow=$stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount() == 1) {
if(password_verify($upass, $userRow['user_pass'])) {
$_SESSION['user_session'] = $userRow['user_id'];
return true;
} else {
return false;
}
}
} catch(PDOException $e) {
echo $e->getMessage();
}
}
}
コール()
<?php
session_start();
require_once("class.user.php");
$login = new USER();
if($login->is_loggedin()!="")
{
$login->redirect('services.php');
}
if(isset($_POST['btn-login']))
{
$uname = strip_tags($_POST['txt_uname_email']);
$umail = strip_tags($_POST['txt_uname_email']);
$upass = strip_tags($_POST['txt_password']);
if($login->doLogin($uname,$umail,$upass))
{
$login->redirect('services.php');
}
else
{
$error = "Wrong Details !";
}
}
?>
は、どのようにパスワードを保存しているんだろうか?あなたは 'password_hash()'を使っていますか? –
なぜ、あなたはユーザークラスでdb接続の新しいオブジェクトを作っていますか?ユーザークラスでdbクラスを拡張する方が簡単です。 – SuperDJ
どこでも 'doLogin()'が呼び出されることはありません。それはまた役に立つと思うかもしれない – RiggsFolly