私はこれと5時間戦ってきましたが、ログインスクリプトは何も返さなくなりました。最初は、間違った情報を持つ人々がログインすることを許可していました。いくつかの変更を加えたところ、正しいログイン情報を持つユーザーであっても、すべてのユーザーが拒否され始めました。パスワード条件を削除したところ、ユーザーが正しく取得されました。また、ユーザー名条件を再度削除してパスワード条件に置き換え、同じパスワードを持つすべてのユーザーを取得しましたが、両方の条件があるとnull
、間違った、または正しい資格情報が返されます...
<?php
include( '../config.php' );
session_start();
if( isset( $_POST['login'] ) ) {
$username = $_POST['username'];
$password = mysql_real_escape_string(stripslashes($_POST['password']));
$salt = "ghvhgcfchgvbhvgkhbh";
echo $username.'<br>';
try{
$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "SELECT * FROM users WHERE username = :username And password = :password LIMIT 1";
$stmt = $con->prepare( $sql );
$stmt->bindValue( "username", $username, PDO::PARAM_STR );
$stmt->bindValue( "password", hash("sha256", $password . $salt), PDO::PARAM_STR );
$stmt->execute();
$valid = $stmt->fetch();
echo '<br> it fetches'.$valid['username'];
print_r($valid);
$con = null;
if( $valid ) {
echo '<br> its valid';
print_r($valid);
$_SESSION['user'][0] = $valid['username'];
if (isset( $_SESSION['errors'] )){unset($_SESSION['errors']);}
//if(!empty($_SESSION['LogUrl'])){header("Location: ../{$_SESSION['LogUrl']}");}
else{header("Location: ../index.php"); }
} else {
$_SESSION['errors'] = 'AuthLogin';
header("Location: AuthPage.php");
}
}
catch (PDOException $e) {
echo "chian ".$e->getMessage();
}
} else {
echo 'Oops SeEye went blind!!!';
}
?>
これは、パスワードが変更された場合に備えて、私も気付いていない登録スクリプトです...
<?php
include( '../config.php' );
//Include The Database Connection File
if( (isset( $_POST['register'] )) && empty($_SESSION['user']))//If a username has been submitted
{
$username = $_POST['usernam'];//Some clean up :)
$password = $_POST['password'];//Some clean up :)
$salt = "ghvhgcfchgvbhvgkhbh";
try{
$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "SELECT * FROM users WHERE username='.$username.'";
$stmt = $con->prepare( $sql );
$stmt->execute();
$row = $stmt-> fetch();
$con = null;
if( !$row) {
try {
$con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
$con->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
$sql = "INSERT INTO users(username, password, Date_Joined)
VALUES(:username, :password, :Date_Joined)";
$stmt = $con->prepare( $sql );
$stmt->bindValue( "username", $username, PDO::PARAM_STR );
$stmt->bindValue( "password", hash("sha256", $password . $salt), PDO::PARAM_STR );
$stmt->bindValue( "Date_Joined", date("Y-m-d"), PDO::PARAM_STR );
$stmt->execute();
$con = null;
session_start();
$_SESSION['user'][0] = $_POST['usernam'];
if (isset( $_SESSION['errors'] )){unset($_SESSION['errors']);}
if(!empty($_SESSION['LogUrl'])){header("Location: {$_SESSION['LogUrl']}");}
else{header("Location: ../index.php"); }
}catch( PDOException $e ) {
echo $e->getMessage();
}
}
else
{
echo '0ops something went wrong';//No Record Found - Username is available
}
}catch (PDOException $e) {
echo $e->getMessage();
}
} else {
echo 'Oops SeEye went blind!!!';
}
?>
よろしくお願いします