0
私はデータベースを持っています。私は4つのテーブルを持っています。プライベートユーザー用に2つ、ビジネスユーザー用に2つです。何らかの理由で私はビジネスユーザーの電子メールを使用してログインしようとすると動作しますが、ユーザー名は機能し、プライベートテーブルでは動作しますが、ここで私のコードは正しく説明しません。それが再び1つのデータベースが動作し、2番目にdoesnt
$password = $_POST['password'];
$emailuser = $_POST['unameemail'];
$password = mysqli_real_escape_string($sql , $password);
$emailuser = mysqli_real_escape_string($sql , $emailuser);
$pwcheck = "
SELECT * FROM private AS p
INNER JOIN user_private_data
AS c ON p.id = c.id
WHERE username='$emailuser' OR email='$emailuser'"; // part that works fine
$resultcheck = mysqli_query($sql , $pwcheck); // part that works fine
$rowcheck = mysqli_fetch_array($resultcheck , MYSQLI_ASSOC); // part that works fine
$hash = $rowcheck['password']; // part that works fine
$hash_pwd = password_verify($password , $hash);
if ($hash_pwd != 0) {
$_SESSION['username'] = $rowcheck['username']; // part that works fine
$_SESSION['logged'] = true; // part that works fine
header("refresh:0;url=../blablabla.php"); // part that works fine
} else {
$privateuser = "
SELECT * FROM business AS d
INNER JOIN user_business_data
AS j ON d.id = j.id
WHERE username='$emailuser' OR email='$emailuser'"; // doesn't work
$resultprivate = mysqli_query($sql , $privateuser); // doesn't work
$rowprivate = mysqli_fetch_array($resultprivate , MYSQLI_ASSOC);
$hashprivate = $rowprivate['password'];
$hash_private = password_verify($password , $hashprivate);
if ($hash_private != 0) {
$_SESSION['username'] = $rowprivate['username'];
$_SESSION['logged'] = true;
$_SESSION['business'] = $rowprivate['bname'];
$_SESSION['type'] = 'business';
}
解析する前に、あなたの入力値をサニタイズしてくださいあなたの接続で定義されていると仮定し を取得する前に結果を持っているかどうかを確認する必要がありますあなたの質問に。このスクリプトはSQLインジェクションに対して非常に脆弱です。 – Akintunde007
あなたのスクリプトは[SQLインジェクション攻撃]の危険にさらされています(http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) [リトルボビーテーブル](http://bobby-tables.com/)でも [入力をエスケープしている場合、その安全ではありません!](http://stackoverflow.com/questions/5741187/sql-injection-that-gets -around-mysql-real-escape-string) [準備されたパラメータ化された文](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) – RiggsFolly
これは登録ではなくログインページですページ – moran