2017-07-30 16 views
-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

+1

あなたのプレースホルダです':username'と':password' –

+0

もうMD5ハッシュを使うべきではありません。 http://php.net/manual/en/ref.password.php – chris85

+0

@u_mulder私のプレースホルダーの意味は ':username'と':password'ですか? –

答えて

0

の\ login.phpは、いくつかのスクリプトを探して停止し、真の解決策を見つけた:Zubrag.com

関連する問題