PDA

View Full Version : حرفه ای: محدود کردن کاربر در رفرش کردن صفحه



prg_mail
چهارشنبه 24 اردیبهشت 1393, 12:03 عصر
سلام

فرض کنید یک فروشگاه داریم
با هر خرید به کاربر شماره پیگیری داده میشه و برای اون اس ام اس میفرسته
حالا بعضی کاربرا بعد از دریافت شماره پیگیری هی صفحه رو رفرش میکنن و این باعث میشه که ....

چند تا را ه به نظرم رسید اما میدونم بیراهه هستند
مثلا یک کد جاوا بزاریم کد پیگیری رو نشون داد بعد 5 ثانیه بره به ی صفحه دیگه

میشه یه راه اصولی و غیر قابل دور زدن بفرمایید.

numberone1
چهارشنبه 24 اردیبهشت 1393, 12:06 عصر
سلام
شما باید یک کد درست کنید و توی دیتابیس ثبت کنید بعد کاربر و بفرستین به یک صفحه دیگه و اون شماره ثبت شده و رو از دیتابیس فراخوانی کنید و بهش نشون بدین
1000 بار هم ریفرش کنن همون چیزی که ثبت شده رو نشون میده

prg_mail
چهارشنبه 24 اردیبهشت 1393, 12:10 عصر
سلام
شما باید یک کد درست کنید و توی دیتابیس ثبت کنید بعد کاربر و بفرستین به یک صفحه دیگه و اون شماره ثبت شده و رو از دیتابیس فراخوانی کنید و بهش نشون بدین
1000 بار هم ریفرش کنن همون چیزی که ثبت شده رو نشون میده
ساختار فایل ما اینه :
بش کد پیگیری بده
بش اس ام اس بده

این دو مرجله در یک فایله که اسم اون فالم
result
هستش و به همه همون فایل نشون داده میشه
پس هر بار result رو بزنه دو عمل ذکر شده انجام میشن

numberone1
چهارشنبه 24 اردیبهشت 1393, 12:27 عصر
ساختار فایل ما اینه :
بش کد پیگیری بده
بش اس ام اس بده

این دو مرجله در یک فایله که اسم اون فالم
result
هستش و به همه همون فایل نشون داده میشه
پس هر بار result رو بزنه دو عمل ذکر شده انجام میشن

نه شما در صفحه result.php فقط کد پیگیری رو ایجاد میکنید و در دیتابیس به همراه نام کاربری یا هر چیز دیگه که لازمه ثبت میکنید بعد کاربر و ریدایرکت میکنید به صفحه دیگه به همراه آیدی این ردیفی که الان شماره پیگیری داخلش هست در دیتابیس
مثلا
result2.php?id=1
اینجا کد پیگیری رو نمایش میدین و sms هم ارسال میکنید.
میتونید برای sms یک flagدر نظر بگیرید در دیتابیس که اگر ارسال شد flag برابر true بشه و اگر کاربر دوباره صفحه رو ریفرش کرد فقط زمانی که flag = false بود sms ارسال بشه
flag و هم بصورت پیش فرض false بزارید که حداقل یکبار ارسال بشه sms

prg_mail
چهارشنبه 24 اردیبهشت 1393, 12:30 عصر
نه شما در صفحه result.php فقط کد پیگیری رو ایجاد میکنید و در دیتابیس به همراه نام کاربری یا هر چیز دیگه که لازمه ثبت میکنید بعد کاربر و ریدایرکت میکنید به صفحه دیگه به همراه آیدی این ردیفی که الان شماره پیگیری داخلش هست در دیتابیس
مثلا
result2.php?id=1
اینجا کد پیگیری رو نمایش میدین و sms هم ارسال میکنید.
میتونید برای sms یک flagدر نظر بگیرید در دیتابیس که اگر ارسال شد flag برابر true بشه و اگر کاربر دوباره صفحه رو ریفرش کرد فقط زمانی که flag = false بود sms ارسال بشه
flag و هم بصورت پیش فرض false بزارید که حداقل یکبار ارسال بشه sms

راه ساده تری ندارید ؟

numberone1
چهارشنبه 24 اردیبهشت 1393, 12:33 عصر
راه ساده تری ندارید ؟

این تقریبا معمول ترین راهی هست که دارن استفاده میکنن
شما شارژ هم از سایت بخرین از همین روش استفاده میکنن فکر میکنم
راه های دیگه ای هم حتما هست

prg_mail
چهارشنبه 24 اردیبهشت 1393, 12:36 عصر
به عقل خودم این رسید؛
مشتاقانه منتظر نظر شما هستم در مورد این کد : آیا راه بهتری هست ؟




<?php
if ($_SESSION["check"] == '' )
{ echo 'bare avaleshe';}
else
{ echo 'REFRESH zade namard...';}
$random = "357"; // code peygiriye moshtari
$_SESSION["check"] = $random ;
?>



:متفکر:

cpuram
چهارشنبه 24 اردیبهشت 1393, 12:54 عصر
راه درست همونه که بالا گفتن.
مشتری دکمه پرداخت رو میزنه
یک کد پیگیری ایجاد و در دیتابیس ثبت میشه به همراه یک مقدار بولین state اگه صفر باشه هنوز انجام نشده.
مشتری به همراه کد پیگیری به درگاه بانک متصل میشه.
بعد از پرداخت موفق برمیگرده و state رو یک میکنه.
بعدش کد پیگیری رو نشون میده البته تو یه صفحه دیگه باشه بهتره.

mamali-mohammad
چهارشنبه 24 اردیبهشت 1393, 12:57 عصر
این کد شما باعث میشه در خرید بعدی سشن ثبت شده باشه و همون بار اول هم نشون نده !

prg_mail
چهارشنبه 24 اردیبهشت 1393, 13:56 عصر
راه درست همونه که بالا گفتن.
مشتری دکمه پرداخت رو میزنه
یک کد پیگیری ایجاد و در دیتابیس ثبت میشه به همراه یک مقدار بولین state اگه صفر باشه هنوز انجام نشده.
مشتری به همراه کد پیگیری به درگاه بانک متصل میشه.
بعد از پرداخت موفق برمیگرده و state رو یک میکنه.
بعدش کد پیگیری رو نشون میده البته تو یه صفحه دیگه باشه بهتره.
نمیشه این کد رو بهینه کرد ؟ چون این راحت تره تا بحث ثبت کد در بانک و ...

prg_mail
چهارشنبه 24 اردیبهشت 1393, 15:45 عصر
این کد شما باعث میشه در خرید بعدی سشن ثبت شده باشه و همون بار اول هم نشون نده !

خدمت شما :




$random = $_GET[id]; // code peygiriye moshtari

if (isset($_SESSION['number'.$random])) {

echo 'REFRESH zade namard...';

}else{

echo 'Baba bande khoda bare avaleshe';

$_SESSION['number'.$random] = "ok";

}

prg_mail
چهارشنبه 24 اردیبهشت 1393, 17:04 عصر
:شیطان: نبود ؟

mamali-mohammad
چهارشنبه 24 اردیبهشت 1393, 17:06 عصر
این درست کار میکنه و به نظرم منطقیه

prg_mail
چهارشنبه 24 اردیبهشت 1393, 17:09 عصر
این درست کار میکنه و به نظرم منطقیه
البته با راهنمایی های شما
الان کل سایتهایی که یه دیتابیس گذاشته بودن کنار واسه این راه (طبق گفته دوستان در پست های قبل) میتونن از روش من استفاده کنند تا phpmyadmin تو ایران، یه نفسی بکشه :متعجب:

numberone1
چهارشنبه 24 اردیبهشت 1393, 17:32 عصر
الان کل سایتهایی که یه دیتابیس گذاشته بودن کنار واسه این راه (طبق گفته دوستان در پست های قبل) میتونن از روش من استفاده کنند تا phpmyadmin تو ایران، یه نفسی بکشه

دوست عزیز استفاده از سشن برای تائید پرداخت و از این دست کار های مهم اصلا خوب نیست!
سشن در دسترس هست و پوزر میتونه تو محتوای سشن دست ببره اونها رو به نفع خودش تغییر بده.
اگر هم سشن و تو دیتابیس ذخیره کنید که دیگه با روشی که من گفتم فرقی نمیکنه
phpmyadmin یک ابزار برای کار با mysql هست. برای اینکه بزارید phpmyadmin بقول خودتون نفس بکشه میتونید از نرم افزار های دیگه مثل mysql work bench استفاده کنید.
بعد هم یک دیتابیس برای یک پرداخت کسی کنار نذاشته! کل پرداخت از اول تا آخر در یک تیبل ذخیره میشه.

cpuram
چهارشنبه 24 اردیبهشت 1393, 17:45 عصر
دوست عزیز استفاده از سشن برای تائید پرداخت و از این دست کار های مهم اصلا خوب نیست!
سشن در دسترس هست و پوزر میتونه تو محتوای سشن دست ببره اونها رو به نفع خودش تغییر بده.
اگر هم سشن و تو دیتابیس ذخیره کنید که دیگه با روشی که من گفتم فرقی نمیکنه
phpmyadmin یک ابزار برای کار با mysql هست. برای اینکه بزارید phpmyadmin بقول خودتون نفس بکشه میتونید از نرم افزار های دیگه مثل mysql work bench استفاده کنید.
بعد هم یک دیتابیس برای یک پرداخت کسی کنار نذاشته! کل پرداخت از اول تا آخر در یک تیبل ذخیره میشه.

خیر کسی نمیتونه به سشن دست ببره چون سمت سرور ذخیره میشه.
در کل منم این روش رو قبول ندارم روش های تست شده بهترن حداقل با مسائل مالی شوخی نمیکنم.
روش بالا هم ایراد داره تولید ارور میکنه.
این همه وقت که واسه روش جایگزین گذاشتین از روش موجود استفاده میکردین الان سایت ساخته شده بود .

numberone1
چهارشنبه 24 اردیبهشت 1393, 17:48 عصر
خیر کسی نمیتونه به سشن دست ببره چون سمت سرور ذخیره میشه.

یه نگاهی بندازین فکر کنم بد نباشه :چشمک:
https://www.google.com/search?q=session+hijacking&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a&channel=sb#channel=sb&q=session+hijacking+php&rls=org.mozilla:en-US:official

prg_mail
چهارشنبه 24 اردیبهشت 1393, 18:01 عصر
آقا ترو دینتون یک بار دیگه عنوان تاپیک رو بخونید
ما جایی از تراکنش بانکی، یا اطلاعات مهم حرف زدیم ؟ نه زدیم ؟ جان من زدیم ؟ حالا هی بگو زدیم

cpuram
چهارشنبه 24 اردیبهشت 1393, 18:54 عصر
میشه تفاوت تراکنش بانکی و خرید رو بگید؟

prg_mail
چهارشنبه 24 اردیبهشت 1393, 19:31 عصر
فرقشنو من نمیدونم چراکه من دنبال کد جلوگیری از رفرش صفحه بودم که بهش رسیدم.حالا تراکنش بانکی این وسط چی میخاد ....