最近、私のアプリケーションを保護するためにプリペアドステートメントを使用するようにPHPコードを変更しました。私はログインページに苦労しています。私はログイン時にユーザーの "userlevel"をチェックしてから、ユーザーの適切なページにリダイレクトします。リダイレクトが多すぎます。プリペアドステートメントに変更した後でSESSIONの問題が発生しました。
Login.php
<?php
session_start();
if(isset($_SESSION['usr_id'])!="" && $_SESSION['userlevel']=="1") {
header("Location: v1/ued/");
} else
if(isset($_SESSION['usr_id'])!="" && $_SESSION['userlevel']=="2") {
header("Location: v1/ced/");
}
include_once 'includes/database.php';
//Login
if (isset($_POST['login'])) {
$email = mysqli_real_escape_string($con, $_POST['user-name']);
$password = mysqli_real_escape_string($con, $_POST['user-password']);
$result = mysqli_query($con, "SELECT * FROM users WHERE idnumber = '" . $email. "' and password = '" . md5($password) . "'");
if ($row = mysqli_fetch_array($result)) {
$_SESSION['usr_id'] = $row['id'];
$_SESSION['userlevel'] = $row['userlevel'];
$_SESSION['idnumber'] = $row['idnumber'];
if ($_SESSION['userlevel']=="1"){
$_SESSION['firstnames'] = $row['firstnames'];
$_SESSION['surname'] = $row['surname'];
header("Location: v1/level1/index.php");
}
else
if ($_SESSION['userlevel']=="2"){
header("Location: v1/level2/index.php");
}
} else {
$errormsg = "Incorrect Email or Password!!!";
}
}
?>
と私のレベル1/index.phpをに:私は私のLogin.phpを変更した
それは私の古いログインページにうまく働きました準備された文を次のように使用してください:
<?php
session_start();
if(isset($_SESSION['usr_id'])!="" && $_SESSION['userlevel']=="1") {
header("Location: v1/ued/");
} else
if(isset($_SESSION['usr_id'])!="" && $_SESSION['userlevel']=="2") {
header("Location: v1/ced/");
}
include_once 'includes/database.php';
if (isset($_POST['login'])) {
$password = md5($_POST['user-password']);
$email = $_POST['user-name'];
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $mysqli->prepare("SELECT * FROM users WHERE idnumber = ? and password = ?");
$stmt->bind_param('ss', $email, $password);
$stmt->execute();
$result = $stmt->get_result();
if ($row = $result->fetch_array())
{
$_SESSION['usr_id'] = $row['id'];
$_SESSION['userlevel'] = $row['userlevel'];
$_SESSION['idnumber'] = $row['idnumber'];
$_SESSION['firstnames'] = $row['firstnames'];
$_SESSION['surname'] = $row['surname'];
if ($_SESSION['userlevel']=="1"){
header("Location: v1/ued/");
}
else
if ($_SESSION['userlevel']=="2"){
header("Location: v1/ced/");
}
}
}
?>
今、ChromeでエラーERR_TOO_MANY_REDIRECTS
が表示されます。私は問題が何であるか把握していないようです。私が得ることができるすべての助けに感謝します。
する必要があります常にリダイレクトされることはありません。そして、あなたのデータベースクエリが予想されるデータを返すかどうか、それが期待されるブランチなどに入るかどうかを確認してください。 – CBroe