خرید بک لینک

سلام.

این جدولم ( ستون user_role مشخص کننده نوع کاربر هست)

اینم فرم ورودم:

<form action="includes/login.php" method="post">
<div class="form-group">
<input name="useame" type="text" class="form-control" placeholder="نام کاربری">
</div>
<div class="form-group">
<input name="password" type="password" class="form-control" placeholder="رمز عبور">
</div>
<div class="form-group">
<button name="login" class="btn btn-success" type="submit">ورود</button>
</div>

</form>

وقتی فرم بالا submit میشه میره صفحه ی login.php که کل کدهاش اینه:

include "db.php";
session_start();

if(isset($_POST['login'])){
$useame = $_POST['useame'];
$password = $_POST['password'];

$useame = mysqli_real_escape_string($coection, $useame);
$password = mysqli_real_escape_string($coection, $password);

$query = "SELECT * FROM users WHERE user_name = '{$useame}' ";
$select_user_query = mysqli_query($coection, $query);

if(!$select_user_query) {
die("QUERY FAILED , " . mysqli_error($coection));
}

while($row = mysqli_fetch_array($select_user_query)){
$db_user_id = $row['user_id'];
$db_user_name = $row['user_name'];
$db_user_password = $row['user_password'];
$db_user_firstname = $row['user_firstname'];
$db_user_lastname= $row['user_lastname'];
$db_user_role = $row['user_role'];

}

if($useame !== $db_user_name && $password !== $db_user_password){
header("Location: ../index.php");

} else if($useame == $db_user_name && $password == $db_user_password) {
$_SESSION['useame'] = $db_user_name;
$_SESSION['firstname'] = $db_user_firstname;
$_SESSION['lastname'] = $db_user_lastname;
$_SESSION['user_role'] = $db_user_role;

header("Location: ../admin2");

} else {
header("Location: ../index.php");

}

}

اینجا از دیتابیس اطلاعات رو چک میکنه و همچنین user_role ادمین باشه بره به پانل مدیریت و اگر کاربر معمولی باشه بره به صفحه اول سایت
خب تا اینجا حله و مشکلی نیس
خب، حالا اگر یوزر ali یا hasan میزنم چون user_role ادمین نیس ریدایرکت میشه به index سایت ولی abbas بزنم میره پنل مدیریت و با استفاده از کد زیر:

echo $_SESSION['useame'];

پیام زیر ظاهر میشه:

حالا وقتی خروج رو که میزنیم بر میگرده به صفحه اول سایت با کد صفحه ی زیر:

کدهای logout.php

session_start();

$_SESSION['useame'] = null;
$_SESSION['firstname'] = null;
$_SESSION['lastname'] = null;
$_SESSION['user_role'] = null;

header("Location: ../../index.php");

حالا وقتی لاگین نکنی و دستی آدرس پوشه ادمین رو وارد کنی:

میره داخل پانل ادمینو اینجوری نشون میده:

اینجا مشکل اینه که اصلا نباید بره داخل ادمین چون ما خروج رو زدیم!!!!!

این کدها رو هم در صفحه admin_header.php زدم که چک کنه اگر user_role ادمین باشه بره مدیریت و اگه ادمین نباشه بره صفحه اول

ob_start();
session_start();

if(isset($_SESSION['user_role'])){
if($_SESSION['user_role'] !== 'admin'){
header("location: ../index.php");

}
}

این کد بالا مشکل داره؟
اصلا وقتی خروج رو زدم نباید وارد پوشه ادمین بشه! ولی میشه!

- - , .

برچسب: نویسنده: محمد رضا جوادیان تاريخ: جمعه 14 اسفند 1394 ساعت: 2:47

صفحه بندی