روز برنامه‌نویس مبارک 🤩🎉 از هدایای روز برنامه‌نویس جا نمونی ⌛
۰ ثانیه
۰ دقیقه
۰ ساعت
۹ مهدی
استفاده از کوکی در پروژه
جامعه پی اچ پی ایجاد شده در ۰۲ مرداد ۱۴۰۱

سلام

میشه یه مثال کوچیک از کوکی بزنید که متوجه بشیم چجوری کاربر رو لاگین نگه داریم وقتی که هنوز کوکی منقضی نشده؟

سلام دوست عزیز

شما وقتی از سشن‌ها استفاده می‌کنید این مورد سمت سرور تا یه زمان محدودی نگه داشته میشه

اما کوکی توی مرورگر ذخیره میشه و کلید و اطلاعات اون کوکی با هر بار درخواست به سرور فرستاده میشه

حالا ما میتونیم اون دیتارو دریافت کرده و هر کاری که لازم داریم انجام بدیم

مثلا برای لاگین موندن کاربر ما میتونیم یه جدول داشته باشیم با ستون‌های user_id, token و بعد یه توکن رندوم بسازیم و یذاریم توی کوکی کاربر بعد با هر بار ریکوست میتونیم توکن رو بگیریم و توی پایگاه دادمون به دنبال اون توکن بگردیم و اگر پیداش کردیم اون user_id هم پیدا میکنیم و میتونیم باهاش اطلاعات کاربری که لاگین بوده رو داشته باشیم

موفق باشید ?

محمد گازری ۰۲ مرداد ۱۴۰۱، ۰۳:۱۰

سلام مجدد

ممنون کاری که گفتید رو انجام دادم

آیا مثلا سون‌لرن هم از کوکی‌ها استفاده میکنه برای اینکه وقتی کاربر دوباره به سایت مراجعه میکنه هنوز آنلاینه؟

و اینکه آیا کوکی‌ها امنیت سایت رو پایین نمیارن؟ ممکنه کوکی دزدیده بشه! یا مثلا من میام از قسمت کوکی توکن رو سیو میکنم و توی مرورگر خودم ست میکنم

مهدی ۰۲ مرداد ۱۴۰۱، ۲۰:۱۸

۱. بله استفاده می‌کنه مانند خیلی از سایت‌ها

۲. دیتای حساس نذارید داخلش

موفق باشید ?

محمد گازری ۰۳ مرداد ۱۴۰۱، ۰۰:۱۴

دیتای حساس منظورتون چیه؟

خب قطعا پسورد کاربر توی کوکی هست!

مهدی ۰۳ مرداد ۱۴۰۱، ۰۰:۱۸

نه دیگه

گفتم که شما نباید نه آی‌دی جدول پایگاه داده رو ذخیره کنید و نه پسورد!

یه توکن بی معنی ذخیره می‌کنید

جلوتر پیش بیاید در طول دوره این مفاهیم بیشتر براتون جا میوفته!

محمد گازری ۰۳ مرداد ۱۴۰۱، ۰۰:۲۰

من کاری که گفتید رو انجام دادم

یه جدول ساختم با ستون‌های token و user_id و هر موقع که کاربر لاگین کرد یه توکن رندم توی کوکی ست میکنم و با گرفتن user_id اون توکن کاربر رو لاگین نگه میدارم، حالا کسی که توکن رو بدزده میتونه از اطلاعات کاربر استفاده کنه توی سایت

مهدی ۰۳ مرداد ۱۴۰۱، ۰۰:۲۹

بله میتونه

این یه موضوعی هست که بیشترش سمت کاربر‌ و نه ما!

کسی که توکن رو میدزده دسترسی به سیستم اون داشته یا فیزیکی یا با برنامه و افزونه مخرب

هر چند به برنامه نویس ربطی نداره این موضو باز اینجا شما میتونید ایتکار به خرج بدید و بیاید بگید هر توکن میتونه ۱ سشن آنلاین داشته باشه و ۲ دستگاه با ۱ توکن نمیتونن لاگین باشن (میتونید از ip در کشورهایی که ip static دارن و یا از نسخه مرورگر و... استفاده کنید)

محمد گازری ۰۳ مرداد ۱۴۰۱، ۰۰:۳۲

من اومدم یه ستون دیگه به جدول اضافه کردم و نسخه مرورگر کاربر رو توش ذخیره کردم و اگه نسخه کوکی که ست شده با اون یکی نباشه logout میشه

نمیدونم این کار خوبه یا بده ولی دقیقا متوجه نشدم این جمله‌ای که گفتید رو چجوری پیاده سازی کنم:

"هر توکن میتونه ۱ سشن آنلاین داشته باشه و ۲ دستگاه با ۱ توکن نمیتونن لاگین باشن"

مهدی ۰۳ مرداد ۱۴۰۱، ۰۴:۱۲

با روش‌های مختلف توکنش رو با دیتاهای دسگه مثل ip یا browser unique id چک می‌کنید

برای شناسایی مرورگر میتونید از ابزارهایی مثل ابزار زیر هم استفاده کنید

https://github.com/browscap/browscap-php

ولی همچنان مخالف این کار هستم چون دارید پیچیدگی بی معنی به برنامتون اضافه می‌کنید و به اصطلاح over engineering میکنید

به سرقت رفتن کوکی کاربر اصلا به عهده شما نیست!

اون یه موضوع دیگه است و کاربر باید پیگیرش باشه!

موفق باشید ?

بهترین پاسخ
محمد گازری ۰۳ مرداد ۱۴۰۱، ۰۴:۲۳