PDA

View Full Version : سوال: ارسای یک مقدار و استفاده در چندین صفحه



saeid99
یک شنبه 13 اردیبهشت 1388, 08:48 صبح
سلام
من روی یک صفحه لاگین دارم کار میکنم که در رباطه با پست دادن داخل سایت هستش
چون میخوام که چند کاربره باشه چطور میتونم وقتی یه نفر با یوزرش لاگین شد از یوزرش جندین بار ودر صفحات متفاوت استفاده کنم؟؟
یعنی هنگام پست دادن از یوزرش برای ذخیره در پایگاه داده استفاده کنم؟؟
************************************************** *****
و سوال دیگه اینکه آیا میشه کد های php رو در جاوا اسکریپت نوشت و برعکس؟؟
************************************************** ********

امیـرحسین
یک شنبه 13 اردیبهشت 1388, 12:27 عصر
سلام

موقع عملیات لاگین و ساختن SESSIONها، می تونید یک SESSION رو به username کاربر اختصاص بدید و هر جا که نیاز دارید ازش استفاده کنید.

$_SESSION['username'] = $username;
البته ID کاربر هم باید SESSION باشه که دستیابی به اطلاعات کاربر راحت انجام بگیره.


جاوااسکریپت زبان Client-side هست یعنی بعد از پردازشهای سرور اجرا میشه و PHP زبان Server-side. شما می تونید جاوااسکریپت رو به عنوان کدهای صفحه چاپ کنید تا خودش اجرا شه ولی PHP رو در جاوااسکریپت نمی تونید.

saeid99
یک شنبه 13 اردیبهشت 1388, 16:05 عصر
دوست گرامی من در مورد php تازه کارم ممنون میشم توضیح بدی که SESSION چی هستند و کارشون چیه؟؟
و در نمونه کد بالا منظور از دو تا user name چیه ؟؟
واینکه حالا اومدم و یک SESSION ساختم چطور میتونم در صفحات دیگه ازشون استفاده کنم؟؟

saeid99
یک شنبه 13 اردیبهشت 1388, 16:06 عصر
ممنون میشم با مثال ساده توضیح بدید..

hidensoft
یک شنبه 13 اردیبهشت 1388, 21:10 عصر
صاولا این جور پست ها رو یا جواب نمی دم یا دادن یه لینک به منوال جم و جورش می کنم اما این بار با خواندن کلمه تازه کارم یکم به فکر فرو رفتمدوست عزیز SESSIOM_$ یک متغیر گلوبال هست مثل POST_$ و یا GET_$ شما با استفاده از این متقیر می تونید در مدت زمانی که سشن ازبین نرفته متغیر و یا اطلاعاتی رو حفظ کنید.
حالا می خواید بپرسید چطوری ؟
این طوری :

$_SESSION = 'My Value';My Value اون مقداری هست که می خواهید درون سشن ذخیره کنید. به طور معمول برنامه نویس ها برای اینکه بطونن از این متغیر حداکثر استفاده رو ببرن میان و اطلاعات رو به صورت یک آرایه به متغیر می دن

$_SESSION['MyArrayIndex'] = 'My Value';MyArrayIndex ایندکس این واحد از آرایست ، همونطور که می دونید هر واحد در آرایه یه ایندکس هم داره که اگه می تونه به صورت عددی یا رشته ای باشه. می شه اطلاعات رو جور دیگه ای هم وارد سشن کرد اما به دلیل منصوخ شدن این روش ها اینارو اینجا ذکر نمی کنم.

حالا برای اینکه بتونیم به اطلاعاتی که در سشن ذخیره کردیم دست پیدا کنیم باید چیکار کنیم ؟

کد پایین رو نگاه کن :

echo $_SESSION['MyArrayIndex'];با استفاده از متغیر SESSION_$ و بعد از اون وارد کردن ایندکس آرایه ای که اطلاعات رو دخیره کردیم SESSION['MyArrayIndex']d_$ به اطلاعاتی که ذخیره کردیم دست پیدا می کنیم. این d که آخر کلمه گذاشتم بخاطر اینه که در حالت کعمولی نمی شه تو این ادیتور های فارسی راحت انگلیسی نوشت بهش توجه نکن.

من بهت قول می دم اگه این هر کدوم از کد ها رو توی یه صفحه بزاری توی هیچ کدوم از اونها هیچی نمی بینی . بخاطر چی ؟ چون از تابع ()session_start استفاده نکردی ، پس در ابتدای هر دو صفحه از این تابع ()session_start بعد باز کردن تگ PHP استفاده کن.
حالا در صفحه اول به سشن مقدار بده ، در صفحه بعدی مقدار سشن رو به خروجی بده ، چی می بینی ؟ اطلاعات چاپ شده .
حالا بگذار یکمی از ادامه قصه رو برات تعریف کنم ، همینجوری میگذره و تو توی این کار استاد می شی و به راحتی اطلاعات زیادی رو توسط سشن ذخیره می کنی و استفاده می کنی ازشون. اما یه روز که داری کد می زنی یه هو روی خط اول می نویسه

Warning: "Headers already sent"

به خودت می گی که این hidensoft که چیزی به من نگفته بود ؟ یعنی چی شده ، می یای همین جا و می پرسی که این خطا رو دارم باید چیکار کنم و طبق معمول بهت میگم یا می گن که جستجو کن ، اولین نفر نیستی !
بعد از کلی جستجو می فهمی که به دلیل اینکه از ویندوز مذخرف استفاده می کنی و احتمالا یکی از همین ادیتور های مذخرفتر مثل NOTEPAD یه کارکتر مذخرف تر در ابتدای صفحه وجود داره که به هیچ عنوان دیده نمی شه مگر در HexEditor و دو راه بیشتر نداری یا بری یه HexEditor دانلود کنی یافایلت رو از اول با یه ادیتور دیگه بنویسی یا کپی کنی.

موفق باشی.


----------------------------------------------------------------------------

حتما به سایت www.php.net برید و اسناد یا document این زبان رو دانلود و یا بخوانید .


قبل از اینکه اقدام به برنامه نویسی کنید

---------------------------------------------------------------------------

امیـرحسین
یک شنبه 13 اردیبهشت 1388, 21:28 عصر
PHP می تونه یه ارتباطی بین سرور و کاربر برقرار کنه و از طریق برخی اعتبارسنجی ها، کاربر رو به اصطلاح بشناسه. سیستم لاگین دقیقا به همین موضوع نیاز داره یعنی چیزی که وقتی کاربر لاگین کرد، تا زمان logout کردن و بستن پنجره، این کاربر همچنان توی سایت شناخته شده بمونه.
SESSIONها متغیرهایی هستند که شما می تونید برای کاربر ایجاد کنید تا تو همه صفحات برای کاربر اعتبار داشته باشه. مثلا موقع لاگین، username کاربر رو توی یک متغیر به نام un$ قرار میدید و اون رو هم توی یک SESSION ذخیره می کنید:

$_SESSION['naam_karbari'] = $un;
با اینکار تا زمانی که سرور کاربر رو به عنوان عضو login کرده، بشناسه (SESSIONها اعتبار داشته باشن)، متغیر

$_SESSION['naam_karbari']
وجود داره و مقدارش هم هست.


برای سیستم لاگین، شما باید موقعی که کاربر رو صحیح تشخیص دادید (user و passاش صحیح بود) تعدادی SESSION براش بسازید و توی صفحات چک کنید که اگر چنین اطلاعاتی موجود بود پس کاربر لاگین کرده در غیر اینصورت، باید لاگین کنه و ......

اطلاعات بیشتر:

w3schools.com :: PHP Sessions (http://www.w3schools.com/PHP/php_sessions.asp)
tizag.com :: PHP Sessions (http://www.tizag.com/phpT/phpsessions.php)
Session Handling (http://ir.php.net/manual/en/book.session.php)
SESSION_$ (http://ir.php.net/manual/en/reserved.variables.session.php)
SESSION Examples (http://ir.php.net/manual/en/session.examples.php)

yaqubian
دوشنبه 14 اردیبهشت 1388, 16:33 عصر
دوستان عزیز
لطفا به جای اینکه مطلبی رو که بارها و بارها توضیح داده شده، دوباره اون رو تکرار بفرمایید دوستان تازه واردمون رو به پست های قبل که ایجاد شده راهنمایی بفرمایید. در ضمن این فرهنگ رو جا بندازیم که قبل از ایجاد یه پست جدید، دوستان یه جستجو بفرمایند اگر به جواب نرسیدن اونوقت اقدام به ایجاد پست جدید کنن.
موفق باشید

saeid99
سه شنبه 15 اردیبهشت 1388, 21:45 عصر
حالا اومدم و از SESSION استفاده کردم هنگامی دو کاربر یا چند کاربر همزمان لاگین شدن چطور میشه؟؟
یعنی تداخلی ایجاد میشه یا نه ؟؟
چون در ابتدای هر صفحه از قسمت مدیریت اومدم گفتم که اگه سشن وجود داشت صفحه رو نشون بده در غیر اینصورت redirection بشه؟؟
اگه یه کاربر از قسمت لاگین خارج شد و دکمه خروج رو کلیک نکرد و سشن ها حذف نشد اگه یه کابر به آدرس مدیریت بره خوب معلومه که میتونه به قسمت مدیریت دسترسی پیدا کنه...
چطور میتونم این مشکل رو برطرف کنم ممنون میشم راهنماییم بفرمایید...

امیـرحسین
سه شنبه 15 اردیبهشت 1388, 22:05 عصر
تداخلی وجود نداره! یک سایت با یک میلیون(!!!) کاربر همزمان، بخوبی عمل می کنه.
با بستن پنجره یا گذشتن از زمان اعتبار، این مقادیر منقضی میشن.