-1
既存の資格情報データベースを使用してユーザーがフォームに認証されるのを助けるPHPスクリプトを見つけるのに問題がありましたが、いくつかのスクリプトを試しましたが、誰もが同じコード$sth->execute(array("uname" => $_POST["username"], "upass" => $encryptedpassword));
にこだわっているようです。レコードのために、私たちは既に別のWebアプリケーションのために使用されていた既存の資格証明データベースをテスト目的で持っています。次にプレーンテキストユーザーの資格情報を持つダミーデータベースを作成しました。PHP SQL SERVERログイン資格スクリプト
<?php
$encryptedpassword = md5($_POST['password']);
$db_myHost = "SERVERNAME";
$db_myUser= "sa";
$db_myPassword = "PASWORD";
$db_myDatabase = "DATABASE"
$dbconn = new PDO("sqlsrv:server=$db_myHost;Database=$db_myDatabase",$db_myUser,$db_myPassword);
try
{
$dbPDO = new PDO('sqlsrv:server='.$db_myHost.';Database='.$db_myDatabase, $db_myUser, $db_myPassword);
$dbPDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e)
{
echo "Error!: " . $e->getMessage() . "
";
die();
}
//Check user credentials
$sth = $dbconn->prepare("SELECT * FROM wblgntst WHERE uname = :username AND upass = :password");
//CODE CAUSING ISSUE
$sth->execute(array("uname" => $_POST["username"], "upass" => $encryptedpassword));
while ($row = $sth->fetch(PDO::FETCH_ASSOC)) {
session_start();
$_SESSION['userName'] = $row['uname'];
header("Location: list.php");
}
?>
ERROR
PHP警告:をPDOStatement ::実行():SQLSTATE [HY093]:無効 パラメータ番号:パラメータは Cで定義されていませんでした:\ INETPUB \ wwwrootの\ salesportal \ PHPライン28
あなたのプレースホルダです':username'と':password' –
もうMD5ハッシュを使うべきではありません。 http://php.net/manual/en/ref.password.php – chris85
@u_mulder私のプレースホルダーの意味は ':username'と':password'ですか? –