PDA

View Full Version : سوال: من برای رفرش کپچا اینطور عمل کردم. کافیه؟



farhadfery
شنبه 09 مهر 1390, 20:39 عصر
با سلام.
برای captcha از کلاس php-captcha.inc استفاده می کنم. یه دکمه رفرش کپچا خودم اضافه کردم و با jquery عکس جدید را برای src تصویر می گذارم:


$("#refresh_captcha").click(function() {
$("#img_captcha").attr("src","visual-captcha.php?r=" + Math.random());
});
اما در این صفحه که این لینکش ه (http://stackoverflow.com/questions/3491535/use-jquerys-ajax-call-to-refresh-a-captcha)ست. یک نفر اینگونه پاسخ داده:

$.ajax({
url: "captcha.php?generateNew",
success: function(result) {
$("#captcha").attr("src","captcha.php?foo="+Math.random());
}
});



inside your php-file

if(isset($_GET['generateNew']){
$_SESSION['captchaString'] = generateCaptchaString();
}else{
dumpCaptchaImage();
}


می خواستم بدونم دلیل اینکارش چیه؟ اگر مساله کش هست که من دارم اینطوری visual-captcha.php?r=" + Math.random() عمل می کنم

farhadfery
یک شنبه 10 مهر 1390, 13:59 عصر
کسی جواب نمی ده! binya کجاییی؟ تو ما را دریاب:تشویق:

nadi_1368
یک شنبه 10 مهر 1390, 14:32 عصر
سلام
ببخشید من تا حالا کپچا ننوشتم
و از کپجاهای آماده استفاده میکنم و نمیتونم نظر بدم
اما چرا شما از کپچا های آماده استفاده نمیکنید؟؟؟؟؟؟؟

farhadfery
یک شنبه 10 مهر 1390, 14:56 عصر
شما درست می فرمایید. کپچر هم آماده هست. قسمت رفرش را خودم به آون اضافه کردم. هدفم هم یادگیری هست.

nadi_1368
یک شنبه 10 مهر 1390, 16:02 عصر
اکی
موفق باشید

blackmak
یک شنبه 10 مهر 1390, 21:45 عصر
تو دکمه refresh اینو بنویس. captcha نام اون img هست که تو صفحه گذاشتی
من که کپچای خودمو اینطوری نوشتم


onClick="document ['captcha'].src = document['captcha'].src + '#';"

farhadfery
یک شنبه 10 مهر 1390, 22:22 عصر
نه من که تو رفرش مشکل ندارم. جواب می ده. من می گم علت خاصی داشته که تو اون لینک بالا یکی گفته به شکل زیر عمل کن:

if(isset($_GET['generateNew']){
$_SESSION['captchaString'] = generateCaptchaString();
}else{
dumpCaptchaImage();
}

blackmak
یک شنبه 10 مهر 1390, 23:39 عصر
فکر نمی کنم دلیل خاصی داشته باشه . کد ما صفحه php رو reload میکنه . کد اونم یه request میفرسته به اون صفحه با شرطی که generateNew ست شده باشه یا نه . اگه آره که session تولید میشه اگه نه هم dumpCaptchaImage() که اینجا معلوم نیست یه کاری میکنه.
من تنها تفاوتو این میبینم که کد من و شما به هر حال و در هر صورت Session تولید میکنه ولی ماله اون شخص نه در هر صورتی ولی اینکه چرا بازم فکر نمی کنم دلیل خاصی داشته باشه. شاید واسه اینه که طرف نتونه مستقیم به فایل captcha.php دسترسی داشته باشه که البته بازم با خوندن source و تغییر آدرس به این شکل captcha.php?generateNew سشن پر میشه و صفحه respond داره . در کل من که نمیدونم دلیلش و فرقش چیه و فرقی یا دلیلی نمیبینم امیدوارم دوستانی که میدونن بگن که منم یاد بگیرم.

در کنار این موضوع فوق من فکر میکنم برای reload بهتره از jquery استفاده نکنید چون js اش سادس و دیگه احتیاج نیست کل library جی کوئری لود بشه البته اگه صفحتون جای دیگه ای jquery ننوشتید.

موفق باشید

farhadfery
دوشنبه 11 مهر 1390, 11:07 صبح
ممنون از شما جناب backmak. سایر دوستان و اساتید هم اگر نظری دارند بفرمایند.

binyaft
دوشنبه 11 مهر 1390, 23:45 عصر
دلیل خاصی نداره ، فقط وقتی درخواست میره به سرور اول یه سشن ست میشه با مقدار همون رشته ای که تو کپچا هست و بعد مقدار attr - src یک عکس جدید تعیین میشه ...

بازم اگه میخوای دلیلش رو بدونی ازش بپرس :)