[ad_1]
PHP
if(isset($_POST['login'])) { $username = stripcslashes($_POST['username']); $password = $_POST['password']; if($username != "" && $password != "") { try { $query = " SELECT password FROM users WHERE username=?"; $stmt = $db->prepare($query); $stmt->bindParam('username', $username, PDO::PARAM_STR); $stmt->bindValue('password', $password, PDO::PARAM_STR); $stmt->execute(); $count = $stmt->rowCount(); $row = $stmt->fetch(PDO::FETCH_ASSOC); if($count == 1 && !empty($row)) { /******************** Your code ***********************/ //$_SESSION['sess_user_id'] = $row['uid']; $_SESSION['username'] = $row['username']; $_SESSION['name'] = $row['name']; } else { $msg = "Invalid login credentials"; } } catch (PDOException $e) { echo "Error : ".$e->getMessage(); } } else { $msg = "Both fields are required!"; } }
私が試したこと:
インターネットでいくつかの調査を試み、スクリプトの変更を試みました
解決策 1
これはあなたの問題かもしれません
PHP
$query = " SELECT password FROM users WHERE username=?";
あなたのクエリには、その中に1つのパラメータがあります ユーザー名ですが、コマンドに 2 つのパラメーターを追加しています。
PHP
$stmt->bindParam('username', $username, PDO::PARAM_STR); $stmt->bindValue('password', $password, PDO::PARAM_STR);
また…パスワードをプレーンテキストとして保存していないことを願っています。
解決策 2
これは 3 年間続きますが、後でここに出くわす人のために:
SQLステートメントを文字列にします…変数値を入れることができます。
次に、操作する値のバインドを使用してクエリをパラメーター化します。
$thingSql = sprintf(“物に挿入(
「id」
) 値 (
ID
);”);
$thingQueryObject = $this->dbConnection->prepare($thingSql);
$thingQueryObject->bindParam(‘:id’, $this->thingId, PDO::PARAM_INT);
[ad_2]
コメント