0 レビュー
1 回答
MYSQLデータベースを使用したPHPでのプリペアドステートメント
現在SQLインジェクションに関するプロジェクトを行っており、対策を講じる必要があります。私は、準備されたステートメントを対策として使用しようとしています。しかし、現在、数時間試した後、それを行うことができません。別のページにリダイレクトしたり、メッセージを表示したりするために、ページに真っ白な画面が表示され続けます。
ここにコードがあります doLoginページ:
<?php
session_start();
require('dbFunction.php');
$username = $_POST['form-username'];
$password = SHA1($_POST['form-password']);
$msg = "";
$stmt = $link -> prepare("SELECT * FROM User WHERE Email = ? AND Password = ?");
$stmt -> bind_param('ss', $username, $password);
$stmt -> execute();
if($stmt -> get_result() -> num_rows > 0) {
$row = $stmt-> get_result() ->fetch_assoc();
$_SESSION['email'] = $row['Email'];
$_SESSION['userId'] = $row['UserId'];
$_SESSION['role'] = $row['role'];
$_SESSION['First_name'] = $row['First_name'];
header("location:index.php");
}
else{
$msg .= "Wrong user combination.";
}
$stmt -> close();
$link -> close();
include "navbar.php";
echo $msg;
echo error_get_last();
?>
データベース接続のコードは次のとおりです:
<?php
$db_host = "localhost";
$db_username = "root";
$db_password = "[email protected]$\$w0rd";
$db_name = "mydb";
$link = mysqli_connect($db_host,$db_username,$db_password,$db_name);
if(!$link){
die(mysqli_error($link));
}
わからない
0
レビュー
答え :
解決策:
これを使用してみてください:
<?php
$db_host = "localhost";
$db_username = "root";
$db_password = "[email protected]$\$w0rd";
$db_name = "mydb";
$link = new mysqli($db_host,$db_username,$db_password,$db_name);
if ($link->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。