私は、ユーザー名とハッシュパスワードをテーブルに格納しているサイトを持っています。私はこの情報(ユーザー名とハッシュパスワード)と、ログインサイトから渡されたログイン情報とを比較しようとしています。残念ながら、これはクラッシュし続けます。もし私が間違っていることについて誰かが正しい方向に向けることができたら、私はそれを感謝するでしょう。以下は、私がログインを確認するために使用しているコードです。私はまだかなりphpに新しいですので、それは非常に単純なものかもしれません。ハッシュの原因となる問題の比較
<?php
$myServer = "server.domain.com";
$myUser = "readaccess";
$myPass = "password";
$myDB = "database";
$dbhandle = mssql_connect($myServer, $myUser, $myPass)
or die("Couldn't connect to SQL Server on $myServer");
$selected = mssql_select_db($myDB, $dbhandle)
or die("Couldn't open database $myDB");
// username and password sent from form
$myusername=$_POST['myusername'];
$mypassword=$_POST['mypassword'];
//declare the SQL statement that will query the database
$query = "SELECT password, salt ";
$query. = "FROM dbo.members ";
$query. = "WHERE username = '$myusername' ";
$result = mssql_query($query)
or die('A error occured: ' . mssql_get_last_message());
// SQL_num_row is counting table row
$count=mssql_num_rows($result);
if($count) < 1) //no such user exists
{
header('Location: main_login.php');
}
$userData = mssql_fetch_array($result, MSSQL_ASSOC);
$hash = hash('sha256', $userData['salt'] . hash('sha256', $mypassword));
if($hash != $userData['password']) //incorrect password
{
header('Location: main_login.php');
}
else {
header('Location: index.php');
}
?>
FYI、あなたはSQLインジェクションを広く受け入れています。この問題を完全に回避するには、PDOで準備済みのクエリを実行する方法を学ぶ必要があります。 – Brad
"残念ながら、これはクラッシュし続けます。" - これについて詳しく説明できますか?クラッシュは何ですか?どのようなメッセージで? – eis
これは私がApacheのログに表示されるエラーです。ブラウザでは、私は500エラーが発生します。 PHP解析エラー:構文エラー。予期しない '=' /var/www/itinfo/checklogin.php、referer:http://web.domain.com/itinfo/main_login.php – klcant