私はセキュリティに詳しくないので、インターネットで見つけた情報に頼っています。彼が何をしていて、彼の方法がどのように機能するかを少し説明している誰かのサイトを見つけました。人々はそれをコピーして貼り付けて物事を楽にするかもしれません. 私はかなり多くのことを理解していますが、自分で思いつくことができませんでした (私は PHP/XHTML などにかなり慣れていません)。
Web サイト: How to store safe with PHP and MySQL
彼はチュートリアルで PDO を使用しています。そして、データベースに情報を保存できます。しかし、彼が実際にログインするためのコードを提供するスクリプトを使用しようとすると、エラーが含まれているようです。
私はすべてを解決し、すべて正常に動作しますが、ハッシュ化されたパスワードと挿入されたパスワード (ハッシュなど) との比較は正しく機能しません。
ここで何が起こっているのですか?
前もって感謝します!
編集
人々はコードを求めてきたので、ここにあります:
session_start();
require('config.php');
// Setting up a connection
$MyConnection = new PDO('mysql:host=*;dbname=*', $dbuser, $pass);
// Retrieving information from form.
$username = $_POST['username'];
$password = $_POST['password'];
$sth = $MyConnection->prepare("SELECT * FROM AMP_Users WHERE Username = :username LIMIT 1");
$sth->bindParam(':username', $username);
$sth->execute();
$user = $sth->fetch(PDO::FETCH_OBJ);
// Hashing the password with its hash as the salt returns the same hash
if (crypt($password, $user->hash) == $user->hash) {
echo 'You are now logged in. If we actually used sessions this time.';
}
コードが機能し始めたら、$_SESSION['name'] = $username を追加します。これまでは、うまくいったかどうかをエコーするだけでした。そして、何も表示されないため、機能しません。
2回目の編集
簡単な更新として、私が提供するスクリプトは WHOLE スクリプトです。何も出さない。(データベースの名前などを除く)したがって、パスワードをデータベースに保存するハッシュスクリプトを使用していないことが問題なのだろうか。入れても反応しません。私はまだ何か間違ったことをしていますか?