View Full Version : سوال: یک نمونه کد ساده login  و logout   با session
  
maziyar123
سه شنبه 23 آبان 1391, 20: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, 21: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, 14:32 عصر
سلام  من داداش هستم  :لبخند:
مهراد  جان دست گلت درد نکنه    راستشو بخوای چیزی دستگیرم نشد  :ناراحت:
 این کد رو باید تو تمام صفحاتم بزارم ؟  فکر نمیکردم  تا این اندازه کدش طولانی بشه  :متعجب:
hidensoft
چهارشنبه 24 آبان 1391, 16:46 عصر
ببینید logout چیزی جز برگرداندن تنظیمات کوکی و سشن به حالت اول نیست. حالا می مونه login. این هم خیلی سادست. مهم نیست که شما چطوری می خوای از کاربر یوزر نیم و پسورد بگیری. کافیه یه مقدار رو توی سشن ست کنی. مثلا :
if ($_POST['username'] == 'admin'){
        $_SESSION['admin'] = true;
}
حالا کافیه برای چک کردن این که کاربر وارد سایت شده یا خیر از این دستور استفاده کنیم
if ($_SESSION['admin'] != true){
        // redirect user to login page
}
HCSH90
چهارشنبه 24 آبان 1391, 19:45 عصر
اگر قصد یادگیری داری , فیلم های مهندس کیانیان رو دانلود کن. قسمت login رو خوب توضیح داده.من خودم از اونجا یاد گرفتم.
maziyar123
چهارشنبه 24 آبان 1391, 22:36 عصر
ببینید logout چیزی جز برگرداندن تنظیمات کوکی و سشن به حالت اول نیست. حالا می مونه login. این هم خیلی سادست. مهم نیست که شما چطوری می خوای از کاربر یوزر نیم و پسورد بگیری. کافیه یه مقدار رو توی سشن ست کنی. مثلا :
if ($_POST['username'] == 'admin'){
        $_SESSION['admin'] = true;
}
حالا کافیه برای چک کردن این که کاربر وارد سایت شده یا خیر از این دستور استفاده کنیم
if ($_SESSION['admin'] != true){
        // redirect user to login page
}
 
سلام  دست گلت درد نکنه  خدا خیرت بده   دقیق متوجه شدم  مرسییییی ....
بعد یه سوال :  چجوری میتونم  همین کسی که با نام  admin وارد شده رو   تو صفحات بعدی  بخونمش و  با echo  نشونش بدم ؟
eshpilen
پنج شنبه 25 آبان 1391, 02: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.
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.