• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چگونگی شناسایی کاربران
#1
سلام خدمت دوستان

فرض کنید یه کاربر قبلا عضو سایت شده و حالا با پر کردن فرم لاگین وارد سایت میشه و اطلاعاتش توی دیتابیس ذخیره میشه (session و cookie)

حالا فرض کنید که میخوایم یه ماژول بنویسیم با یک باتن که وقتی کاربر اون رو کلیک کرد, یه سری اطلاعات در جدول دیگه ای برای اون کاربر ذخیره بشه و وقتی خارج شد, اطلاعات جدول تغییر بکنه.

اما اینکه چطوری بفهمیم اون کاربری که روی باتن کلیک کرده کدوم یکی از کاربران وارد شده هست رو نمیدونم.
تمام مشکل من همین کدی هست که این شناسایی رو انجام میده.(شاید با استفاده از کوکی و اطلاعات داخل جدول session هست ولی کد اون رو نمیدونم).

ممنون میشم دوستان راهنمایی کنن
با تشکر
کار من این است که کاریم نیست,عاشقم از عشق تو عاریم نیست
تا که مرا شیر غمت صید کرد,جز که همین شیر شکاریم نیست
باده ات از کوه سکونت بَرَد,عیب مکن زان که وقاریم نیست
مولانا جلال الدین محمد
  پاسخ
تشکر شده توسط :
#2
ببینید شما باید وقتی یه کاربر لاگین میکنه، آیدی اون کاربر رو تو یه سشن ذخیره کنید که این جور جاها ازش استفاده کنید

وقتی کاربر روی باتن کلیک کرد، آیدی کاربر از سشن گرفته میشه و به فانکشن ارسال میشه، به همین راحتی Rolleyes
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : molana_rumy
#3
ممنون

بله, ولی وقتی چند کاربر وارد سایت شده باشن, از کجا بدونیم کدومشون رو باتن کلیک کرده تا اطلاعات رو برای اون کاربر تغییر بدیم؟؟

با تشکر
کار من این است که کاریم نیست,عاشقم از عشق تو عاریم نیست
تا که مرا شیر غمت صید کرد,جز که همین شیر شکاریم نیست
باده ات از کوه سکونت بَرَد,عیب مکن زان که وقاریم نیست
مولانا جلال الدین محمد
  پاسخ
تشکر شده توسط :
#4
ببینید سشن یعنی همین

هر کاربری وقتی روی باتن کلیک کنه، سشن خودش ارسال میشه به تابع Wink
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : molana_rumy
#5
ببین تو وقتی لاگین میکنی یه همچین چیزی رو استفاده میکنه حالا من شبه کدش رو برات مینویسم
کد:
if($login=="ok"){
$_SESSION['u_id']=$user->id;
}
برای زمانی هم که میخوای اطلاعاتت رو چک کنی اینطوری الان مثلا من مثال زدم که میخوای وارد بانک کنی
کد:
if(isset($_POST['button'])){
    $user_id=$_SESSION['u_id'];
    $sql="INSERT INTO 'table' WHERE id='".$user_id."';";
    
}
تونل ها مي گويند : راه هست؛ حتي در دل سنگ ها.Wink
استفاده از دکمه تشکر(Heart) نشان شخصیت شماست;
درگاه پرداخت 724
  پاسخ
تشکر شده توسط : molana_rumy hamid_80386 miladr24
#6
ممنون از راهنماییتون

من میخوام این ماژول رو برای جوملا بنویسم. یه خرده گیج شدم, یعنی وقتی یه باتن بزاریم و کاربر روش کلیک کنه بطور خودکار session اون کاربر ارسال میشه به تابعی که برای رخداد کلیک در فرم قرار دادیم؟ یا باید کدی برای اینکار بنویسیم؟ اگه بله اون کد چیه؟
این کدی که شما فرمودید یک کد مستقل هست یا اینکه user قبلا تعریف شده؟

کد پی‌اچ‌پی:
$_SESSION['u_id']=$user->id
میشه id کاربر رو در کوکی ذخیره کنیم و با کلیک بفرستیم تا با id موجود در دیتابیس مقایسه بشه و برای اون کاربر تغییرات رو اعمال کنیم؟

البته تا مقدار زیادی متوجه شدم چی شد. ممنون از دوستان

با تشکر
کار من این است که کاریم نیست,عاشقم از عشق تو عاریم نیست
تا که مرا شیر غمت صید کرد,جز که همین شیر شکاریم نیست
باده ات از کوه سکونت بَرَد,عیب مکن زان که وقاریم نیست
مولانا جلال الدین محمد
  پاسخ
تشکر شده توسط :
#7
ببینید شما باید سشن آیدی رو بعنوان متغیر به تابع ارسال کنید
خود تابع متوجه نمیشه...
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط : molana_rumy
#8
ببین session ها cookie ها روی مرورگر کاربر سیو میشن
و تو میتونی هر وقت توی برنامه نیاز داشتی استفادشون کنی سشن ها تا زمانی که مرورگر بسته نشده یا اینکه تا اون زمانی که براشون تعریف میکنی معتبر هستن ولی کوکی ها روی سیستم کاربر ذخیره میشن و حتی اگر مرورگر رو هم ببندن تا زمانی که براشون تعریف کردی باز هستن
در ضمن جوملا برای استفاده از سشن ها ساختار خواص خودش رو داره
این رو اول میزاری
کد پی‌اچ‌پی:
$session =& JFactory::getSession(); 
برای ست کردن
کد پی‌اچ‌پی:
//$session->set('نام سشن',"مقدار سشن","فلگ","زمان به میلی ثانیه");
$session->set('msgjson',$msgjson); 
برای دریافت مقدار
کد پی‌اچ‌پی:
//$msgjson = $session->get('نام سشن');
$msgjson $session->get('msgjson'); 
برای پاک کردن
کد پی‌اچ‌پی:
//$session->clear('نام سشتن');
$session->clear('msgjson'); 
تونل ها مي گويند : راه هست؛ حتي در دل سنگ ها.Wink
استفاده از دکمه تشکر(Heart) نشان شخصیت شماست;
درگاه پرداخت 724
  پاسخ
تشکر شده توسط : molana_rumy Reza
#9
از راهنماییتون ممنونم
من تونستم ورود یا عدم ورود کاربر رو تشخیص بدم و پیغام مناسب رو بهش بدم ولی الان چند تا مشکل دیگه دارم.

1- وقتی کد زیر رو در helper.php برای دریافت sessionId مینویسم
کد پی‌اچ‌پی:
$userid $session->get('userid');
return 
$userid
بهم خطای زیر رو میده.

Notice: Undefined variable: session in ...\helper.php

Fatal error: Call to a member function get() on a non-object in ...\helper.php
من دارم کد رو اشتباه مینویسم یا این کد پیش زمینه ای داره که من ننوشتم؟

2- وقتی کد زیر رو برای خواندن از دیتابیس مینویسم, خروجی "array" بهم میده.
کد پی‌اچ‌پی:
$db = &JFactory::getDBO();
$query "SELECT `userid` FROM `joom`.`jos_session` WHERE `username`='admin'";
$db->setQuery($query);
$items = ($items $db->loadObjectList())?$items:array();
return 
$items
وقتی هم که اون رو مثلا به شکل
کد پی‌اچ‌پی:
$items[0
مینویسم خطای زیر ایجاد میشه.
Catchable fatal error: Object of class stdClass could not be converted to string
]

3- مشکل آخر اینه که من در فایل default.php وقتی میخوام فرم ایجاد کنم, داده ها رو باید به کدام آدرس بفرستم و کجا پردازش کنم؟ خود جوملا بصورت index.php آدرس میده ولی من نمیدونم اطلاعات فرم کجا پردازش میشه!!
کد پی‌اچ‌پی:
<form action="index.php" method="post" name="form" id="form-b"
اگه من آدرس رو بصورت زیر بنویسم (از لحاظ امنیتی یا هر چیز دیگه) مشکل داره؟
کد پی‌اچ‌پی:
<form action="modules/mod_name/filename.php" method="post" name="form" id="form-b"

با تشکر فراوان
کار من این است که کاریم نیست,عاشقم از عشق تو عاریم نیست
تا که مرا شیر غمت صید کرد,جز که همین شیر شکاریم نیست
باده ات از کوه سکونت بَرَد,عیب مکن زان که وقاریم نیست
مولانا جلال الدین محمد
  پاسخ
تشکر شده توسط :
#10
من راهنماییتون میکنم به داکیومنت های خود جوملا:دی
http://docs.joomla.org/JSession
تونل ها مي گويند : راه هست؛ حتي در دل سنگ ها.Wink
استفاده از دکمه تشکر(Heart) نشان شخصیت شماست;
درگاه پرداخت 724
  پاسخ
تشکر شده توسط : Reza molana_rumy


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان