-2
私はこれを理解できません。私はそれをgoogledと答えの多くは、解決策としてblindValueを参照してください私も運がないとそれを試してみました。PHP bindParamが動作しません - blindValueは解決策ではありません
問題は、SELECTステートメントがゼロレコードを返していますが、レコードが1つ返されることです。値をSQLステートメントにハードコードすると機能しますが、パラメーターとして渡すことはできません。これで私を助けてくれる人もいますか?ありがとう。
<?php
function checklogin($email, $password){
try
{
// Connection
$conn;
include_once('connect.php');
// Build Query
$sql = 'SELECT pkUserID, Email, Password, fkUserGroupID FROM tbluser WHERE Email = :email AND Password = :password';
// $sql = 'SELECT pkUserID, Email, Password, fkUserGroupID FROM tbluser WHERE Email = "a" AND Password = "a"';
// Prepare the SQL statement.
$stmt = $conn->prepare($sql);
// Add the value to the SQL statement
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
// Execute SQL
$stmt->execute();
// Get the data in the result object
$result = $stmt->fetchAll(); // $result is NULL always...
// echo $stmt->rowCount(); // rowCount is always ZERO....
// Check that we have some data
if ($result != null)
{
// Start session
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
// Search the results
foreach($result as $row){
// Set global environment variables with the key fields required
$_SESSION['UserID'] = $row['pkUserID'];
$_SESSION['Email'] = $row['Email'];
}
echo 'yippee';
// Return empty string
return '';
}
else {
// Failed login
return 'Login unsuccessful!';
}
$conn = null;
}
catch (PDOexception $e)
{
return 'Login failed: ' . $e->getMessage();
}
}
?>
接続コードはです。
<?php
$servername = 'localhost';
$username = 'admin';
$password = 'password';
try {
// Change this line to connect to different database
// Also enable the extension in the php.ini for new database engine.
$conn = new PDO('mysql:host=localhost;dbname=database', $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// echo 'Connected successfully';
}
catch(PDOException $e)
{
echo 'Connection failed: ' . $e->getMessage();
}
?>
私はmySQLに接続しています。助けてくれてありがとう ジム
** WARNING **:自分のアクセス制御層を書くことは容易ではない、それはひどく間違って取得するための多くの機会があります。 [Laravel](http://laravel.com/)のような最新の[開発フレームワーク](http://codegeekz.com/best-php-frameworks-for-developers/)がある場合は、独自の認証システムを作成しないでください。強力な[認証システム](https://laravel.com/docs/5.2/authentication)が組み込まれています。絶対に[推奨されるセキュリティのベストプラクティス](http://www.phptherightway.com/#security)に従ってください。決してパスワードをプレーンテキストとして保存しないでください。 – tadman
@tadmanアドバイスをいただきありがとうございます。このコードは非常に早い段階にあります。私を狂わせてしまうbindParam機能に問題があります。 –
私は理解しています。だからこそ、私はさらに細心の注意を払っています。これらのことを忘れて、あなた自身のために悪夢のシナリオを作成するのは簡単です。そのため、あなたのスタイルやニーズに合ったフレームワークで歯を切断することを強くお勧めします。これは解決された問題であり、技術的な詳細ではなく実際のアプリケーションを作ることに集中できます。 – tadman