PDA

View Full Version : سوال: یک نمونه کد ساده login و logout با session



maziyar123
سه شنبه 23 آبان 1391, 19:48 عصر
سلام خدمت دوستان عزیز میدونم چیز زیادی میخوام ازتون ولی اگه ممکنه یک نمونه لاگین و لاگ اوت خیلی ساده با همون کادر input میخواستم که توش از session هم استفاده بشه که وقتی فرد مورد نظر لاگین کرد بتونه از صفحات دیگه استفاده کنه در غیر این صورت نتونه وارد ادرس صفحه های دیگه بشه :ناراحت: یه نمونه کد با سورسش اگه ممکنه اینجا بزارید با کمی راهنمایی . یه وب طراحی کردم که از لاگگین استفاده شده همه چیش میزونه کدهاشم با php نوشتم فقط در مورد session اگه ممکنه یک نمونه کد کوچیک بهم بدین واسه اینکه نگین همه چیزو آماده میخوام خودم صفحه لاگین رو طراحی کردم کدش رو اینجا میزارم اگه ممکنه در مورد session و اینکه چجوری باید تو تمامی صفحه هام قرار بدم راهنمایی کنین و یک نمونه کد بهم بدید پیشاپیش خدا خیرتون بده :قلب:

این html :


<html>
<head>
<title>
login
</title>
</head>


<body>

<form method="POST" action="form.php">
<p> username : <input type="text" size="20" name="username"></p>
<p> password : <input type="password" size="20" name="password"></p>
<p><input type="submit" value="Login" name="loginbtn"></p>
</form>




</body>
</html>

و این هم کد php که لاگین میکنیم توش و میریم به صفحه ی user.php به اسم form.php :


<?php

session_start();

$user=$_POST[username];
$pass=$_POST[password];

if($user=='maziyar' and $pass=='mmt')
{$_SESSION['logedin']=true; echo "welcome <br> goto user page : <a href='user.php'>USER Page </a> ";}
else { echo "sorry you can not loged in please <a href='index.htm'>back </a> to main page ";}

?>


میخوام تا وقتی که فرد مورد نظر لاگین نکرده نتونه وارد صفحه ی user.php بشه اگه ممکنه یه نمونه با همینایی که دادم بهم بدید ممنون میشم :قلب:

$ M 3 H R D A D $
سه شنبه 23 آبان 1391, 20:40 عصر
ببین چی دست گیرت میشه داداش / خواهر


<?php ob_start(null, 4096);
session_start(); ?>
<?php
if(!isset($_SESSION['admin_logined']))
header('location:login.php');
?>

<?php
if(!defined('ROOT')) {
define('ROOT', preg_replace('#\\\\#', '/', dirname(dirname(__FILE__))));
}
?>

<?php
$panel = "index";
$task = 'login';
if(isset($_GET['task']))
{
$task = $_GET['task'];
$task = strtolower($task);
if($task=='exit')
{
@session_destroy();
@session_unregister('admin_logined');
@session_unset();
header('location:login.php');
}
}

///body code

$output = ob_get_contents();
ob_end_flush();
?>

maziyar123
چهارشنبه 24 آبان 1391, 13:32 عصر
سلام من داداش هستم :لبخند:

مهراد جان دست گلت درد نکنه راستشو بخوای چیزی دستگیرم نشد :ناراحت:
این کد رو باید تو تمام صفحاتم بزارم ؟ فکر نمیکردم تا این اندازه کدش طولانی بشه :متعجب:

hidensoft
چهارشنبه 24 آبان 1391, 15:46 عصر
ببینید logout چیزی جز برگرداندن تنظیمات کوکی و سشن به حالت اول نیست. حالا می مونه login. این هم خیلی سادست. مهم نیست که شما چطوری می خوای از کاربر یوزر نیم و پسورد بگیری. کافیه یه مقدار رو توی سشن ست کنی. مثلا :

if ($_POST['username'] == 'admin'){
$_SESSION['admin'] = true;
}
حالا کافیه برای چک کردن این که کاربر وارد سایت شده یا خیر از این دستور استفاده کنیم


if ($_SESSION['admin'] != true){
// redirect user to login page
}

HCSH90
چهارشنبه 24 آبان 1391, 18:45 عصر
اگر قصد یادگیری داری , فیلم های مهندس کیانیان رو دانلود کن. قسمت login رو خوب توضیح داده.من خودم از اونجا یاد گرفتم.

maziyar123
چهارشنبه 24 آبان 1391, 21:36 عصر
ببینید logout چیزی جز برگرداندن تنظیمات کوکی و سشن به حالت اول نیست. حالا می مونه login. این هم خیلی سادست. مهم نیست که شما چطوری می خوای از کاربر یوزر نیم و پسورد بگیری. کافیه یه مقدار رو توی سشن ست کنی. مثلا :

if ($_POST['username'] == 'admin'){
$_SESSION['admin'] = true;
}
حالا کافیه برای چک کردن این که کاربر وارد سایت شده یا خیر از این دستور استفاده کنیم


if ($_SESSION['admin'] != true){
// redirect user to login page
}

سلام دست گلت درد نکنه خدا خیرت بده دقیق متوجه شدم مرسییییی ....

بعد یه سوال : چجوری میتونم همین کسی که با نام admin وارد شده رو تو صفحات بعدی بخونمش و با echo نشونش بدم ؟

eshpilen
پنج شنبه 25 آبان 1391, 01:31 صبح
<?phpif(!isset($_SESSION['admin_logined']))header('location:login.php');?>

if ($_SESSION['admin'] != true){ // redirect user to login page}
بیپ بیپ!! حفرهء امنیتی جدی!
الان بهتون نشون میدم.
فرض کنید کد صفحهء admin.php ما اینه:

<?php

session_start();

if ($_SESSION['admin'] != true){
header('location:login.php');
}

echo '<h1 style="color: red">اطلاعات محرمانه اي که فقط ادمين بايد ببيند</h1>';

?>

خب حالا هکر میاد این کد PHP رو مینویسه و اجرا میکنه (روی لوکالش هم میشه):

<?php

header('Content-Type: text/html; charset=utf-8');

error_reporting(E_ALL);

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);

$target_host='localhost';

$result = socket_connect($socket, $target_host, 80);

$in = "GET /admin.php HTTP/1.1\r\n";
$in .= "Host: $target_host\r\n";
$in .= "Connection: Close\r\n\r\n";
$out = '';

socket_write($socket, $in, strlen($in));

while ($out = socket_read($socket, 2048)) {
echo $out;
}

?>
نتیجه رو خودتون میتونید مشاهده کنید! تمام اطلاعات موجود در صفحهء ادمین رو نمایش میده!!

تازه اگر عملیاتی هم در اون صفحه انجام بدید، انجام میشه، چه ادمین لاگین باشه و چه نباشه، چه هکر طرف دیگه باشه و چه یک کاربر عادی با مرورگر خودش باشه.
مثلا:

<?php

session_start();

if ($_SESSION['admin'] != true){
header('location:login.php');
}

touch('file.txt');

?>
الان آدرس صفحه رو که بزنید، در هر صورت فرمان ایجاد فایل اجرا میشه و میبینید که فایلی بنام file.txt در دایرکتوری محل برنامه ایجاد میشه.

خب راه حل چیست؟
خیلی ساده بید:

<?php

session_start();

if ($_SESSION['admin'] != true){
header('location:login.php');
exit;
}

touch('file.txt');

?>
اضافه کردن یک دستور exit.