سلام ، آیا این بازدید اول شماست ؟ یا
صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 , از مجموع 13

موضوع: مانع شدن نوشتن حروف فارسی در موقع ثبت نام در نام کاربری جوملا2.5 در لوکال

  1. #1

    تاریخ عضویت
    Sep 2012
    نوشته ها
    62
    تشکر
    2
    تشکر شده 1 بار در 1 ارسال

    مانع شدن نوشتن حروف فارسی در موقع ثبت نام در نام کاربری جوملا2.5 در لوکال

    چطوری میشه در هنگام ثبت نام در جوملا 2.5 در بخش نام کاربری ،کاربر را محدود کنیم که مثلا فقط انگلیسی و عدد(حداکثر 10 کاراکتر) وارد کند و از حروف فارسی در نام کاربری جلوگیری کرد؟؟

    جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.


  2. # ADS
    تبلیغات در جوملا فارسی
    تاریخ عضویت
    Always
    نوشته ها
    Many
     

  3. #2

    تاریخ عضویت
    Apr 2007
    نوشته ها
    70
    تشکر
    0
    تشکر شده 38 بار در 32 ارسال
    کد اعتبار سنجی(Validation) فرم ثبت نام جوملا اینجاست :
    کد:
    /media/system/js/validate.js
    خوب حالا عبارت username رو سرچ می کنی، می رسی به یه همچین چیزی :

    کد:
    this.setHandler("username",function(a){regex=/[<|>|"|'|%|;|(|)|&]/i;return!regex.test(a)});
    اون قطعه از کد که مشخص شده جواب شماست، این یه [مهمان/کاربر گرامی برای دیدن لینک ها ابتدا باید عضو سایت شوید و لاگین کنید برای ثبت نام اینجا کلیک کنید]([مهمان/کاربر گرامی برای دیدن لینک ها ابتدا باید عضو سایت شوید و لاگین کنید برای ثبت نام اینجا کلیک کنید]) رو تعریف کرده برای مقدار معتبر فیلد username، که حالا می تونی هرجور خواستی محدودش کنی...
    مثلا این :

    کد:
    this.setHandler("username",function(a){regex=/^[a-zA-Z0-9];return!regex.test(a)});
    یا هرچی دیگه...
    ویرایش توسط samir : 11-12-2012 در ساعت 02:21 AM

    جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.


  4. 2 کاربر زیر از samir عزیز به خاطر این پست مفید تشکر کرده اند.


  5. #3

    تاریخ عضویت
    Sep 2012
    نوشته ها
    62
    تشکر
    2
    تشکر شده 1 بار در 1 ارسال
    با تشکر
    حالا حروف و عدد رو گفتی !@#$%^&*()_+= این کاراکتر ها هم میخوام به اونا اضافه کنم چظوری بزارم؟؟ بینشون ویرگول بزارم یا چیز دیگه نمی دونم دستور کامل که همه چی رو داشته باشه برام بزار.

    جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.


  6. #4

    تاریخ عضویت
    Sep 2012
    نوشته ها
    62
    تشکر
    2
    تشکر شده 1 بار در 1 ارسال
    اون کدی بالا گذاشتی رو معتبر میدونه یا خیر منظورم این کده

    this.setHandler("username",function(a){regex=/^[a-zA-Z0-9];return!regex.test(a)}); الان توی این کد از حروف انگلسیی و اعداد مجاز هست یا غیرمجاز، من میخوام فقط حروف فارسی رو نگذارم کاربر وارد کنه...

    جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.


  7. #5

    تاریخ عضویت
    Apr 2007
    نوشته ها
    70
    تشکر
    0
    تشکر شده 38 بار در 32 ارسال
    خوب تو همون کد یه نگا بندازی متوجه می شی :
    کد:
    initialize : function () { this.handlers = {}; this.custom = {}; this.setHandler("username", function (a) { regex = /[<|>|"|'|%|;|(|)|&]/i; return !regex.test(a) }); this.setHandler("password", function (a) { regex = /^\S[\S ]{2,98}\S$/; return regex.test(a) }); this.setHandler("numeric", function (a) { regex = /^(\d|-)?(\d|,)*\.?\d*$/; return regex.test(a) }); this.setHandler("email", function (a) { regex = /^[a-zA-Z0-9._-]+(\+[a-zA-Z0-9._-]+)*@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/; return regex.test(a) }); $$("form.form-validate").each(function (a) { this.attachToForm(a) }
    مثلا برای فیلد ایمیل :


    یک الگوی نسبتا ساده برای بررسی آدرس ایمیل

    ۱- این یعنی آغاز خط و بلافاصله بعد از اون الگوی ۲ قرار گرفته باشه.
    ۲- در الگوی ۲ یک گروه کاراکتری متشکل از a تا z کوچک و بزرگ، صفر تا نُه، نقطه، زیرخط و علامت منها قرار گرفته. بلافاصله بعد از این گروه، یک علامت بعلاوه هست که یعنی از این گروه کاراکتری دست کم یکی و دست بالا! هر چند تا که باشه درسته. به عبارتی این میشه آدرس ایمیل قبل از @ مثلا در [مهمان/کاربر گرامی برای دیدن لینک ها ابتدا باید عضو سایت شوید و لاگین کنید برای ثبت نام اینجا کلیک کنید] میشه someone .
    ۳- علامت @ معنی خاصی نداره و میشه خودش. تا به اینجا شد، ابتدای خط، بلافاصله بعدش یک تا هر چند تا کاراکتر (الگوی ۲) و بعد بلافاصله یک علامت @.
    ۴- بعد یه گروه کاراکتری دیگه.اینبار یه کم تفاوت داره با الگوی اسم. چون این مربوط میشه به اسم دومین. توی [مهمان/کاربر گرامی برای دیدن لینک ها ابتدا باید عضو سایت شوید و لاگین کنید برای ثبت نام اینجا کلیک کنید] این میشه قسمت example یعنی بعد از @ و قبل از نقطه. اینبار دیگه نقطه و زیرخط نیستن چون این دو تا کاراکتر توی اسم مجازن، اما تو اسم دومین نه. بلافاصله بعدش هم یه علامت + (بعلاوه) اومده که یعنی الگوی کاراکتری یک یا هر چند بار میتونه تکرار بشه.
    ۵- اما نقطه، چون نقطه توی عبارت باقاعده معنی داره،*ولی ما اینجا منظورمون دقیقا خود نقطه هست نه معنیش، بالاجبار باید قبلش یه بک اسلش \ بگذاریم که نقطه تعبیر نشه به هر کاراکتری، و معنی فقط نقطه اعمال بشه.
    ۶-بعد از نقطه پسوند میاد مثلا کام (com) یا آی آر (ir) یا گاهی کو دات آی آر (co.ir) کوتاهترین پسوند دو حرفیه مثل ir و بلندترین پنج حرفی مثل co.ir ، به همین دلیل نوشته شده {2,5} .تشکیل هم شده از حروف انگلیسی و نقطه. که اگه دقت کنید نقطه ای که داخل گروه کاراکتری قرار گرفته بک اسلش نداره، چون اونجا دیگه معنی همه کاراکترها رو نمیده و معنی خودش رو میده.(بعضی کاراکترها داخل گروه کاراکتری معنیشون فرق میکنه مثل همین نقطه یا ^ )
    ۷- بعدشم که آخر خط. یعنی بعد از این الگوها باید برسیم به آخر خط و ادامه نداشته باشه.
    منبعش هم [مهمان/کاربر گرامی برای دیدن لینک ها ابتدا باید عضو سایت شوید و لاگین کنید برای ثبت نام اینجا کلیک کنید] که می تونی بیشتر مطالعه کنی...

    جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.


  8. #6

    تاریخ عضویت
    Sep 2012
    نوشته ها
    62
    تشکر
    2
    تشکر شده 1 بار در 1 ارسال

    با سلام

    با سلام خسته نباشید واقعا دمت گرم
    ولی من ازت یک خط کد میخوام من از این کدها سر در نمیارم من فقط یک خط کد میخوام که اونجا جابجا کنم، دستت درد نکنه جامع توضیح دادی، ولی یک خط کد به من بده که کاربر حداکثر10 حرف همه چی بتونه وارد کنه بجز حروف فارسی.. دستت دردنکنه

    جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.


  9. #7

    تاریخ عضویت
    Apr 2007
    نوشته ها
    70
    تشکر
    0
    تشکر شده 38 بار در 32 ارسال
    اگه یه خطی می خوای بیا :
    می ری اینجا :
    کد:
    JOOMLA\libraries\joomla\database\table\user.php
    می گردی دنبال این :
    کد:
    Line 197: if (preg_match("#[<>\"'%;()&]#i", $this->username) || strlen(utf8_decode($this->username)) < 2)
    تغییرش می دی به این:
    کد:
    if (!preg_match("[a-zA-Z0-9]", $this->username) || strlen(utf8_decode($this->username)) < 2 || strlen(utf8_decode($this->username)) > 11 )
    بعدم دیگه می ری به سلامت...

    جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.


  10. #8

    تاریخ عضویت
    Sep 2012
    نوشته ها
    62
    تشکر
    2
    تشکر شده 1 بار در 1 ارسال
    با سلام
    1-من میخوام کاربر در نام کاربری حروف انگلیسی،عدد و -_. مجاز باشه وارد کنه.
    2-حروف فارسی ، و بقیه کاراکترها مثله !@#$%^&*)(=+ نتونه وارد کنه پیغام بده حروف غیر مجاز. تا اینجا با من اوکی هستی.
    نکته : نکته اصلی اینه که شما اون رو در نظر نگرفتی، اینه که وقتی شما میگی a-z وارد کن وقتی کاربر alt+shift رو زد و فارسی تایپ کرد، چون در بازه ی a-z هست بازم میتونه فارسی وارد کنه متوجه ای.
    بقیه کجا هستن مدیران عزیز کمک کنن.

    جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.


  11. #9

    تاریخ عضویت
    Apr 2007
    نوشته ها
    70
    تشکر
    0
    تشکر شده 38 بار در 32 ارسال

    تغییر محدودیت های فرم ثبت نام جوملا...

    این بحث، بحث مفیدیه... گفتم کاملش کنم شاید به درد کسی بخوره...
    برای محدود کردن کاراکتر های ورودی در فرم ثبت نام دو راه وجود داره:
    1- استفاده از اعتبار سنجی سمت کاربر(Client-side validation)
    2- استفاده از اعتبار سنجی سمت سرور(Server-side validation)

    1- استفاده از اعتبار سنجی سمت کاربر(Client-side validation)
    خوب روش اول که کاربرپسندتره(برای نمونه فیلد نام کاربری یا Username رو بررسی می کنیم) :
    کد اعتبار سنجی(Validation) فرم ثبت نام جوملا اینجاست :
    کد:
    JOOMLA/media/system/js/validate.js
    خوب حالا عبارت username رو سرچ می کنیم، می رسیم به یه همچین چیزی :
    کد:
    this.setHandler("username",function(a){regex=/[<|>|"|'|%|;|(|)|&]/i;return!regex.test(a)});
    اون قطعه از کد که مشخص شده یه [مهمان/کاربر گرامی برای دیدن لینک ها ابتدا باید عضو سایت شوید و لاگین کنید برای ثبت نام اینجا کلیک کنید]([مهمان/کاربر گرامی برای دیدن لینک ها ابتدا باید عضو سایت شوید و لاگین کنید برای ثبت نام اینجا کلیک کنید]) رو تعریف کرده برای مقدار معتبر فیلد username، که حالا می تونیم هرجور خواستیم محدودش کنیم...
    مثلا اینجا می خواییم جلوی ورود کاراکترهای فارسی رو بگیریم :
    کد:
    this.setHandler("username",function(a){regex=/[|ا|ب|پ|ت|ث|ج|چ|ح|ی|خ|د|ذ|ر|ز|س|ش|ط|ظ|ع|غ|ف|ق|ک|گ|ل|م|ن|و|ه|ي|ئ|ض|ص<|>|"|'|%|;|(|)|&]/i;return!regex.test(a)});

    اتفاقی که وقتی کاربر از کاراکترهای فارسی توی فیلد نام کاربری استفاده می کنه می افته اینه که همون جا اون فیلد طبق دیفالت جوملا اعلام خطا می کنه(که معمولا رنگش قرمز می شه)...
    برای اطلاع دادن به کاربر که چه خطائی رخ داده، ساده ترین راه اینه که hint فیلد نام کاربری رو هم سفارشی کنیم که اونم توی فلدر زبان جوملا توی این مسیر پیدا می شه:
    کد:
    JOOMLA\language\fa-IR\fa-IR.com_users.ini
    هر توضیحی که مد نظر هست رو جلوی این فیلد وارد می کنیم:
    مثلا:
    کد:
    COM_USERS_DESIRED_USERNAME="لطفا نام کاربری دلخواه خود را انتخاب نمایید-کاراکترهای فارسی مجاز نمی باشد"
    حالا وقتی موس رو فیلد نام کاربری می ره، این پیغام نمایش داده می شه...

    مشکل این روش: اگه جاوا در سمت کاربر به هر دلیل غیر فعال باشه دیگه این روش عمل نمی کنه...

    2- استفاده از اعتبار سنجی سمت سرور(Server-side validation)
    روش دوم که اصولی تره :
    به آدرس زیر می ریم:
    کد:
    JOOMLA\libraries\joomla\database\table\user.php
    این خط رو توی این فایل پیدا می کنیم:
    کد:
    if (preg_match("#[<>\"'%;()&]#i", $this->username) || strlen(utf8_decode($this->username)) < 2)
    این شرط قبل از نوشتن نام کاربری توی بانک اعتبار مقدار اون رو چک می کنه؛ که حالا می تونیم هرجور می خواییم سفارشیش کنیم:
    الگو:
    کد:
    if (preg_match("#[اینجا هرچی می خوایم نباشه رو اضافه می کنیم]#i", $this->username) || strlen(utf8_decode($this->username)) < حداقل تعداد کاراکتر || strlen(utf8_decode($this->username)) > حداکثر تعداد کاراکتر)
    مثلا:
    کد:
    if (preg_match("#[<>\"'%;()&(ابپتثجچحیخدذرزسشطظعغفقکگلمنوهيئضص)]#i", $this->username) || strlen(utf8_decode($this->username)) < 3 || strlen(utf8_decode($this->username)) > 15)
    با کد بالا ما جلوی ورود کاراکترهای فارسی بعلاوهء کاراکترهای غیرمجاز رو هم می گیریم و تعداد کاراکترها رو هم بین 4 تا 14 کاراکتر محدود می کنیم...
    و حالا کاری که باقی می مونه سفارشی کردن پیغام خطاست که کاربر متوجه مشکل بشه...
    اونم توی مسیر زیر باید پیدا بشه:
    کد:
    JOOMLA\language\fa-IR\fa-IR.lib_joomla.ini
    توضیحی که لازم هست رو جلوی فیلد زیر وارد می کنیم:
    مثلا:
    کد:
    JLIB_DATABASE_ERROR_VALID_AZ09=""خطا... نام کاربری می بایست بدون فاصله، حداقل 4 و حداکثر 14 کاراکتر و <strong>نباید</strong> شامل کاراکترهای فارسی و این: < > \ "_QQ_" ' % ; ( ) &" کاراکترها باشد.""
    اگه چیزی جا افتاده بگید که اضافه بشه...

    جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.


  12. 2 کاربر زیر از samir عزیز به خاطر این پست مفید تشکر کرده اند.


  13. #10

    تاریخ عضویت
    Apr 2012
    نوشته ها
    8
    تشکر
    4
    تشکر شده 0 بار در 0 ارسال
    samir جان

    من شدیدا نیاز دارم که فیلد یوزرنیم رو به یه عدد 8 رقمی محدود کنم و هیچ کاراکتر دیگری نیز وارد نشود . روش اول Client-side validation رو که شما فرموده بودین انجام دادم ولی هیچ اتفاقی نیافتاد و باز موقع ثبت نام همه کاراکتر ها را قبول می کنه . به نظرتون کار دیگری نیز بجز مواردی که فرموده بودین باید در مورد روش اول انجام می دادم ؟

    جهت مشاهده لینک ها باید ثبت نام کنید یا لاگین کنید.


صفحه 1 از 2 12 آخرینآخرین

موضوعات مشابه

  1. خطا در بانک اطلاعاتی موقع ثبت نام
    توسط h_zaman06 در انجمن مدیریت SMF
    پاسخ ها: 4
    آخرين نوشته: 01-24-2010, 05:12 PM
  2. قوانین موقع ثبت نام در فروم من انگلیسیه
    توسط gonabadexpert در انجمن گرافیک و قالب SMF
    پاسخ ها: 3
    آخرين نوشته: 04-06-2009, 03:10 PM
  3. پاسخ ها: 17
    آخرين نوشته: 05-21-2008, 02:01 PM
  4. مشکل در ثبت نام کاربری
    توسط saeid_gh87 در انجمن بخش کاربری مامبو فارسی
    پاسخ ها: 1
    آخرين نوشته: 09-24-2007, 09:11 AM

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •