PDA

View Full Version : خروج از ادمین وب سایت



p30online
جمعه 04 بهمن 1392, 16:53 عصر
دوستان سورس مربوط به خروج از مدیریت سایت را چه طور می نویسند؟

SlowCode
جمعه 04 بهمن 1392, 17:10 عصر
چیز خاصی لازم نیست!
شما اول بررسی میکنه که آیا سشن مربوط به ادمین هست یا نه، بعد با session_destroy (http://ir2.php.net/session_destroy) سشن رو از بین می بری.

danial.saeedi
جمعه 04 بهمن 1392, 18:16 عصر
سلام چیز خاصی لازم نیست می تونی از تابع session_destory استفاده کنی یا از unset.

unset($_session["session_name"])
یا اگه از کوکی استفاده می کنید باید زمان کوکی رو صفر کنی:

setcookie("user", "", time()-3600);

p30online
جمعه 04 بهمن 1392, 18:25 عصر
من یه باتون بگذارم این خاصیت ها را بگذارم درسته؟

hamedarian2009
جمعه 04 بهمن 1392, 18:51 عصر
من یه باتون بگذارم این خاصیت ها را بگذارم درسته؟
کنار نام کاربری مدیر که لاگین کرده یک لینک به نام خروج بزار (مثل همین سایت برنامه نویس در بالای صفحه سمت چپ) و href این لینک یه صفحه باشه که تو اون صفحه کافیه همون یک خط کد بهمراه دستور header استفاده کنی تا کاربر بعد خروج بره به صفحه اصلی

unset($_session["session_name"]);
header('location:index.php');

p30online
شنبه 05 بهمن 1392, 03:28 صبح
من این شرط را گذاشتم مثلاَ:
که اگر اشتباه بود برود صفحه دیگر


if(!($_SESSION['x']=='1'))
{
header('location:index.php');
exit();
}


بعد من خروج را این طور نوشتم چرا کار نمی کند و سشن را از بین نمی برد؟



<?php unset($_SESSION["x"]); echo "<a href=http://www.p30online.ir>"; echo "خروج"; echo "</a>"; ?>

h_a_m_i_d
شنبه 05 بهمن 1392, 04:13 صبح
سلام
<?php
session_start();
if(isset($_GET['action'])){
$action=$_GET['action'];
if($action=="logout"){
unset($_SESSION['x']);
echo "LogOut Successfull.";
}
if($action=="login"){
$_SESSION['x']="hamid";
echo "Hello ".$_SESSION['x']." Wellcome.";
}



}

if(isset($_SESSION['x'])){
echo "<h1>Logined In Web Site .</h1>";
}



?>
توسط ?action=login وارد میشوی
توسط ?action=logout خارج میشوی
در پایان هم بررسی میشه اگه session وجود داشت میزنه شما وارد شدید .

p30online
شنبه 05 بهمن 1392, 09:30 صبح
مقدار action را کجا مقداردهی باید کرد؟و چه طور مقداردهی کرد؟
اونجا که می خواد ارسال بشه من باید مقدار action را برابر login قرار بدم یعنی؟

SlowCode
شنبه 05 بهمن 1392, 09:55 صبح
مقدار action را کجا مقداردهی باید کرد؟و چه طور مقداردهی کرد؟
اونجا که می خواد ارسال بشه من باید مقدار action را برابر login قرار بدم یعنی؟
برای مثال:
http://site.com/index.php?action=logout

afee1990
شنبه 05 بهمن 1392, 10:01 صبح
مقدار action را کجا مقداردهی باید کرد؟و چه طور مقداردهی کرد؟
اونجا که می خواد ارسال بشه من باید مقدار action را برابر login قرار بدم یعنی؟
عزیز شما برنامه نویسی بلدی؟
بچه ها دارن سر راست جواب میدن دیگه. میگن شما یه صفحه ایجاد کن، مثلن به اسم logout.php بعد یکی از کدهای بالارو با توجه به Session یا کوکی که تعریف کردی واسه خودت بهینه سازی میکنی و میذاری توش. بعد از هر صفحه دیگه میتونی یه لینک بدی به این صفحه که وقتی کار هدایت شد به اینجا عملیات logout انجام میشه

p30online
شنبه 05 بهمن 1392, 10:18 صبح
دستورات سشن را بک کار می برم باز هم از بین نمی رود!

session_destroy();

session_unset();

و...

اگر من منتقل بشوم به صفحه logout و نوشته باشم


session_destroy();
مگر نباید دیگه از بین برود همه سشن ها ؟

foreach
شنبه 05 بهمن 1392, 10:46 صبح
دستورات سشن را بک کار می برم باز هم از بین نمی رود!

session_destroy();

session_unset();

و...

اگر من منتقل بشوم به صفحه logout و نوشته باشم


session_destroy();
مگر نباید دیگه از بین برود همه سشن ها ؟
قبلش باید session_start() رو بزارید

p30online
شنبه 05 بهمن 1392, 10:49 صبح
گذاشتم اصلا کار نمی کنه

foreach
شنبه 05 بهمن 1392, 11:14 صبح
گذاشتم اصلا کار نمی کنه

کد های قسمت خروج رو بزارید برسی کنیم

p30online
شنبه 05 بهمن 1392, 11:17 صبح
دوست عزیز اصلا من ساده نوشتم نمی دونم چرا اصلا کار نمی کنه هیچ کدومشون؟




<?php
session_start();

session_destroy();

header('location:http://www.p30online.ir');


?>

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

foreach
شنبه 05 بهمن 1392, 11:27 صبح
دوست عزیز اصلا من ساده نوشتم نمی دونم چرا اصلا کار نمی کنه هیچ کدومشون؟




<?php
session_start();

session_destroy();

header('location:http://www.p30online.ir');


?>

چه کار کنم که اصلا همشون از بین بروند
تا حالا به همچین مشکلی بر نخوردم
حالا شما هم اینطوری تست کن ببین حل میشه


session_start();
unset($_SESSION['login']);
session_destroy();
session_unset();

p30online
شنبه 05 بهمن 1392, 11:43 صبح
یعنی خودمم موندما ا ا ا اا ا ا ا ا کار نمی کنه :افسرده::اشتباه:

SA_Developer
شنبه 05 بهمن 1392, 11:47 صبح
گذاشتم اصلا کار نمی کنه
از کجا فهمیدی کار نمیکنه؟ چطور چک کردی؟
session_destroy() کل داده های مربوط به کاربر رو از روی دیسک پاک میکنه.
اگر فکر میکنی خروجی این کد باید خطا باشه اشتباه میکنی:


<?php
session_start();
$_SESSION['foo']='foo ';
$_SESSION['bar']='bar';
session_destroy();
echo $_SESSION['foo'];
echo $_SESSION['bar'];

خروجی:


foo bar

علت اینه که داده های شما بصور کامل از روی دیسک پاک شده اما متغیر SESSION_$ هنور اون داده ها رو داره پس نمایشش میده.
پس اگر موجود بودن بودن سشن رو به این روش چک میکنی اشتباهه.
برای حذف یک داده سشن از روی دیسک و حذف اون از توی متغیر SESSION_$ به این شکل عمل کن:


<?php
session_start();
$_SESSION['foo']='foo ';
$_SESSION['bar']='bar';

unset($_SESSION['bar']);

echo $_SESSION['foo'];
echo $_SESSION['bar'];

خروجی:


foo
Notice: Undefined index: bar in C:\local\htdocs\b.php on line 9


برای اینکه ببینی سشنت کجا ذخیره میشه از این تابع استفاده کن:


echo session_save_path();

بعد از اینکه از تابع session_destroy(); استفاده کردی عملا میتونی ببینی که فایلش از روی دیسک پاک میشه.

این هم تابعی برای پاک کردن سشن بصورت کامل:


function deep_sess_clean(){

// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!
// Clear browser cookies
if (ini_get("session.use_cookies")) {
$params = session_get_cookie_params();
setcookie(session_name(), '', 1,
$params["path"], $params["domain"],
$params["secure"], $params["httponly"]
);
}

// Finally, destroy the session file.
session_destroy();
}

p30online
شنبه 05 بهمن 1392, 11:59 صبح
اینو نشون میده که کجا ذخیره شده :



/tmp