PDA

View Full Version : سوال: جلوگیری از ورود قبل از لوگین



wordnet
جمعه 28 بهمن 1390, 17:42 عصر
سلام

دوستان عزیز چطور میتونم کدی ایجاد کنم که به فرض صفحه panel.php فقط در صورتی باز بشه که کاربر از صفحه login.php بیاد و اگر فردی مستقیم ادرس پنلو زد باز نشه

ممنون

speeed
جمعه 28 بهمن 1390, 17:55 عصر
سلام

دوستان عزیز چطور میتونم کدی ایجاد کنم که به فرض صفحه panel.php فقط در صورتی باز بشه که کاربر از صفحه login.php بیاد و اگر فردی مستقیم ادرس پنلو زد باز نشه

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

lady64
جمعه 28 بهمن 1390, 17:55 عصر
میبایست user و pass رو در صفحه ی login.php در session بریزید.و در صفحه ی panel.php چک کنید که session ، ست شده یا خیر. که اگر ست نشده میشه با دستور header به صفحه ی login برگردید.

nader3
جمعه 28 بهمن 1390, 17:56 عصر
سلام دوست عزیز تو صفحه لاگین وقتی که لاگین شد یه سشن ست کن. بعد تو پنل بگو اگه سشن ست نشده اینو ری دایرکت کن به صفحه لاگین.

wordnet
جمعه 28 بهمن 1390, 18:13 عصر
از همه ممنون اما خب مبتدی هستیم دیگه چه کنیم هزار تا سوال دارم:قلب:(سرچ هم شد نتیجه خوبی نداشت)

حالا لطفا دوستان یه نمونه از یه صفحه لوگین و پنل کاربری اینجوری بزارن با کد ممنون

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


session_register("myusername");
session_register("mypassword");
header("location:member.php");


توی چکش موندم

lady64
جمعه 28 بهمن 1390, 18:35 عصر
ابتدای صفحه ی لوگین :

session_start() ;
وقتی دستور select رو برای user و pass نوشتید اگر select درست بود ، یعنی این user و pass وجود داشت :

$_SESSION['user']=$inuser;
$_SESSION['pass']=$inpass;
header("Location:panel.php");



حالا در صفحه ی panel.php :


session_start();
if(!isset($_SESSION['user']) || !isset($_SESSION['pass']))
header('Location:login.php');

wordnet
جمعه 28 بهمن 1390, 19:01 عصر
حله دمتون گرم
یه سوال اگر بخوایم سشن ایجاد شده رو پاک کنیم چیکار کنیم؟مثلا الان کاربر اومد صفحه پنل حالا میخواد خارج بشه و سشن پاک بشه

lady64
جمعه 28 بهمن 1390, 19:15 عصر
حله دمتون گرم
یه سوال اگر بخوایم سشن ایجاد شده رو پاک کنیم چیکار کنیم؟مثلا الان کاربر اومد صفحه پنل حالا میخواد خارج بشه و سشن پاک بشه

خوب باید logout بشه.یه دکمه بسازید به نام خروج.وقتی کاربر روی اون کلیک میکنه به صفحه ی مثلا logut.php میاد و این دستورات باعث پاک شدن session میشه:

session_start();
unset($_SESSION['user']);
unset($_SESSION['pass']);
header('Location:login.php);

البته به این روش هم میشه تمام session ها رو پاک کرد :

session_start();
$_SESSION=array();
if(isset($_COOKIE[session_name()]))
{setcookie(session_name(),'',time()-10);
session_destroy();
header('Loction:login.php');}

wordnet
جمعه 28 بهمن 1390, 19:26 عصر
اقا نشد الان من صفحه پنلم اینطوره


<!doctype html>
<head>
<title>Database DEMO</title>
<meta charset="utf-8"/>
</head>
<body>
<?php
session_start();
if(!isset($_SESSION['user']) || !isset($_SESSION['pass']))
header('Location:login.php');
require "class/config.php";
$sql = mysql_query('SELECT * FROM `user` ORDER BY `id`');
if($sql && mysql_num_rows($sql) > 0) {
echo '<table border="1px">'.PHP_EOL;
while($item = mysql_fetch_assoc($sql)) {
echo '<tr>'.PHP_EOL;
echo '<td>'.$item['id'].'</td>'.PHP_EOL;
echo '<td>'.$item['na'].'</td>'.PHP_EOL;
echo '<td>'.$item['user'].'</td>'.PHP_EOL;
echo '<td>'.$item['mail'].'</td>'.PHP_EOL;
echo '</tr>'.PHP_EOL;
}
mysql_free_result($sql);
echo '</table>'.PHP_EOL;
}
else {
echo '<p>Data not found.</p>'.PHP_EOL;
echo '<p>'.mysql_error().'</p>'.PHP_EOL;
}
?>

<p><a href="Login.php"> خروج</a></p>
</body>
</html>


بعد فایل logut.php هم اینه


<?
session_start();
unset($_SESSION['user']);
unset($_SESSION['pass']);
header('Location:login.php);
?>


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

lady64
جمعه 28 بهمن 1390, 19:55 عصر
در صفحه ای که session رو دارید ست میکنید ، چون دستور session_start();رو ابتدای صفحه ننوشتید ، اصلا سشن ست نشده.این دستور رو ابتدای صفحه و قبل از هر کد دیگه ای داخل کد php بنویسید.
قبل از header و [session_start(); نباید خروجی html باشه ، حتی یک فاصله.
برای رفع مشکل header هم که در بین کدهای html مینویسید میتونید دستور ob_start() رو ابتدای صفحه بنویسید.
پس صفحه ی اصلیتون رو بدین صورت درست کنید.در ابتدای صفحهو قبل از کدهای html:



ob_start();
session_start();
if(!isset($_SESSION['user']) || !isset($_SESSION['pass']))
header('Location:login.php');

wordnet
جمعه 28 بهمن 1390, 19:58 عصر
جسارتا پس لینک خروجو کجا بزارم اگر میشه درستشو توی کدم قرار بدید شرمنده شرمنده/ممنون

wordnet
جمعه 28 بهمن 1390, 21:28 عصر
؟.........

lady64
جمعه 28 بهمن 1390, 21:36 عصر
آدرس لینک خروجتون چرا login.php هست؟ میبایست صفحه ی logut که درست کردید و کد نوشتید به اون صفحه ارجاع بدید.(کدهای پاک شدن session) محل نوشتن لینکتون درسته اما href رو درست کنید.

<a href="logut.php">exite</a>
یه صفحه ی logut درست کنید و تمام کدهای html اونو حذف کرده و کدهای پاک کردن session که گفتمو بزارید.

wordnet
جمعه 28 بهمن 1390, 21:50 عصر
سلام

بسیار ممنون اما موفق نشدم چون نفهمیدم دقیق باید کدومهارو کجا بزارم فایلهارو زیپ کردم ضمیمه هست اگر میشه بزگواری کنید اینو اصلاح کنید

بسیار شرمنده/ممنون

lady64
شنبه 29 بهمن 1390, 07:44 صبح
خب فایلmember.php و logut.php باید بدین صورت اصلاح بشه :
در فایل member.php:


<?php session_start();
if(!isset($_SESSION['user']) || !isset($_SESSION['pass']))
header('Location:login.php'); ?>
<!doctype html>
<head>
<title>Database DEMO</title>
<meta charset="utf-8"/>
</head>
<body>
<?php
require "class/config.php";
$sql = mysql_query('SELECT * FROM `user` ORDER BY `id`');
if($sql && mysql_num_rows($sql) > 0) {
echo '<table border="1px">'.PHP_EOL;
while($item = mysql_fetch_assoc($sql)) {
echo '<tr>'.PHP_EOL;
echo '<td>'.$item['id'].'</td>'.PHP_EOL;
echo '<td>'.$item['na'].'</td>'.PHP_EOL;
echo '<td>'.$item['user'].'</td>'.PHP_EOL;
echo '<td>'.$item['mail'].'</td>'.PHP_EOL;
echo '</tr>'.PHP_EOL;
}
mysql_free_result($sql);
echo '</table>'.PHP_EOL;
}
else {
echo '<p>Data not found.</p>'.PHP_EOL;
echo '<p>'.mysql_error().'</p>'.PHP_EOL;
}
?>
<p><a href="Logout.php"> خروج</a></p>
</body>
</html>


و در فایل logut.php:


<?php
session_start();
unset($_SESSION['user']);
unset($_SESSION['pass']);
header('Location:login.php);
?>