PDA

View Full Version : عدم انتقال به index.php



persianboy1993
شنبه 20 دی 1393, 19:30 عصر
سلام
من نمیدونم چرا وقتی user , password رو داخل inputbox میزنم کاربر به صفحه index.php واقع در پوشه admin انتقال پیدا نمی کنه ! از صحت دیتابیس و فیلد ها هم مطمئنم ضمنا نام کاربری رو توی جدول users توی phpMyAdmin با Admin مقداردهی کردم و پسورد رو هم یه پسورد hash شده گذاشتم.هرچی مقدار admin برای فیلد user و مقدار password رو برای فیلد password میزنم redirect صورت نمیگیره.
این هم سورس :
<?php

session_start();


include_once('../includes/connection.php');


if (isset($_session['logged_in'])){


}else{
if (isset($_POST['username'], $_POST['password'])){
$username = $_POST['username'];
$password = md5($_POST['password']);


if(empty($username) or empty ($password)) {
$error = "All fields are requireds.";
}else{
$query = $pdo->prepare("SELECT * FROM users WHERE user_name = ? AND user_password = ?");


$query->bindvalue(1 , $username);
$query->bindvalue(2 , $password);


$query->execute();

$num = $query->rowCount();


if ($num == 1){
//user entered correct
$_session['logged_in'] = true;
header('location:index.php');
exit();
}else{
//user enterd uncorrect
$error = "incorrect detailes";
}
}
}
?>


<html>
<head>
<title>Cms Tutorial</title>
<link rel="stylesheet" type="text/css" href="assets/style.css">
</head>
<body>


<div class="container">


<a href="index.php" id="logo">CMS</a>

<br /> <br />


<?php if(isset($error)) { ?>
<small style="color:#aa0000;"><?php echo $error; ?></small>
<?php }?>


<form action="index.php" method="post">
<input type="text" name="username" autocomplete="off">
<input type="password" name="password" autocomplete="off">
<input type="submit" value="Login" / >



</form>

</div>
</body>
</html>


<?php
}


?>

nasirb
شنبه 20 دی 1393, 21:57 عصر
فکر می کنم باید به صورت زیر بنویسید :

header('location:admin/index.php');
اگر این هم نشد سعی کنید به صورت کامل آدرس فایل index رو به تابع header بدید یعنی
localhost/yourproject/admin/index.php

در ضمن یک echo $num هم بعد اجرای rowCount بنویسید و ببنید خروجی می ده یا نه ؟

meysam1366
شنبه 20 دی 1393, 22:27 عصر
سلام دوست عزیز

شما حتما باید به این صورت بنویسید


header('Location: index.php');

حرف L باید بزرگ نوشته بشه

persianboy1993
شنبه 20 دی 1393, 23:11 عصر
فکر می کنم باید به صورت زیر بنویسید :

header('location:admin/index.php');
اگر این هم نشد سعی کنید به صورت کامل آدرس فایل index رو به تابع header بدید یعنی
localhost/yourproject/admin/index.php

متاسفانه افاقه نکرد

در ضمن یک echo $num هم بعد اجرای rowCount بنویسید و ببنید خروجی می ده یا نه ؟
مقدار 0 چاپ شد.

persianboy1993
شنبه 20 دی 1393, 23:14 عصر
سلام دوست عزیز

شما حتما باید به این صورت بنویسید


header('Location: index.php');


حرف L باید بزرگ نوشته بشه
فرمایش شما هم تاثیری نداشت خودم هم واقعا گیج شدم الان 2 ساعته وقتم رو گرفته دقیقا نمیدونم مشکل از کجاست

nasirb
شنبه 20 دی 1393, 23:46 عصر
مقدار 0 چاپ شد.

دوست عزیز فکر می کنم مشکل پیدا شد . شما اول کد زیر را بعد از execute اجرا کنید و بعد rowCount بگیرید :

$res = $query->fetch();
و بعد سعی کنید rowCount بگیرید مثل زیر

$num = $res->rowCount();

به احتمال زیاد این کار انجام خواهد شد . اما نشد سعی کنید تمام متغیر ها رو مثل username و pass و حتی خود sql هم echo کنید تا مشکل رو پیدا کنید !

persianboy1993
یک شنبه 21 دی 1393, 00:07 صبح
دوست عزیز حالا با این error روبرو شدم

nasirb
یک شنبه 21 دی 1393, 00:32 صبح
ببخشید این کارم انجام بدید


$query->execute();
$query->fetch();
$num= $query->rowCount();