نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • اشتباهات
  • ساخت یک فرم تماس ساده با Angularjs و php. امنیت داده های کاربر چرا این فرم را نصب کردم؟

ساخت یک فرم تماس ساده با Angularjs و php. امنیت داده های کاربر چرا این فرم را نصب کردم؟

بسیار راحت است که همیشه بدانید کدام نسخه خاص از مجموعه پروژه. برای انجام این کار، معمولاً یک شماره نسخه متشکل از چندین رقم را وارد می کنید. من طرفدار ساختار 4 رقمی مانند این هستم:

با هم، این نام کامل نسخه (Major.Minor.Pathch.Build) را تشکیل می دهد:

برخی از یک مقدار عددی منحصر به فرد به عنوان ساخت استفاده می کنند که هر بار افزایش می یابد، مانند ساخت شبانه. من فکر می کنم که هیچ نکته ای در این وجود ندارد - پیوند دادن این شماره به ویرایش موجود در مخزن بسیار راحت تر است. من از Subversion و CMake استفاده می‌کنم، بنابراین به شما نشان می‌دهم که چگونه نسخه‌سازی بیلد را با این ابزارها خودکار کنید.

ابتدا باید یک فایل هدر به پروژه اضافه کنید (مثلا version.h):

#عبارتند از #عبارتند از نسخه فضای نام (const std::string & AsText(); boost::uint64_t AsNumber() ;)

در اینجا یک رابط ساده وجود دارد که از طریق آن می توانید شماره نسخه کامل برنامه را به صورت متنی یا به عنوان یک شناسه عدد صحیح منحصر به فرد دریافت کنید.

حالا محتویات version.cpp را می دهم:

#عبارتند از #include "../version.h" فضای نام ( const boost:: uint8_t MAJOR = 4 ; const boost:: uint16_t MINOR = 6 ; const boost:: uint16_t PATCH = 12 ; const boost:: uint32_t BUILD = 589 ; // این مقدار به طور خودکار تغییر می کند) const std::string و نسخه::AsText() ( static const std:: string text = boost::str(boost::format("%1%.%2%.%3%.%4%" ) % static_cast< unsigned >(MAJOR) % MINOR % PATCH % BUILD) ; متن بازگشتی؛ ) boost:: uint64_t نسخه:: AsNumber () ( BOOST_STATIC_ASSERT(BUILD< 0xFFFFFF ) ; using namespace boost; const size_t size = sizeof (uint64_t ) ; static const boost:: uint64_t number = (static_cast < uint64_t >(عمده)<< (size - sizeof (MAJOR) ) * 8 ) | (static_cast < uint64_t >(جزئی)<< (size - sizeof (MAJOR) - sizeof (MINOR) ) * 8 ) | (static_cast < uint64_t >(پتچ)<< (size - sizeof (MAJOR) - sizeof (MINOR) - sizeof (PATCH) ) * 8 ) | BUILD; return number; }

همه چیز در اینجا بی اهمیت است و فکر می کنم نیازی به اظهار نظر ندارد. آخرین چیزی که باقی می ماند مکانیسم تغییر مقدار BUILD به شماره ویرایش در مخزن است. CMake می تواند به خوبی این کار را انجام دهد، فقط کد زیر را به CMakeLists.txt اضافه کنید:

مجموعه (VERSION_FILE ../ مشترک/ منابع/ version.cpp) find_package (Subversion REQUIRED) Subversion_WC_INFO ($(PROJECT_SOURCE_DIR) Repo) فایل (READ $(VERSION_FILE) OLD_CODE) foreach (LINE $(OLD_ATCODEL) = (+)" BUILD_NUMBER $(LINE) ) اگر (BUILD_NUMBER) رشته (REGEX REPLACE "+$" $(Repo_WC_REVISION) LINE $(LINE) ) endif () مجموعه (NEW_CODE $(NEW_CODE) $(LINE) ) endforeach ( LINE) فایل (WRITE $(VERSION_FILE) " $(NEW_CODE) ")

تنها نکته ظریف در اسکریپت در خط آخر است، و به طور خاص، نقل قول در "$(NEW_CODE)"، بدون همه آنها ";" حذف خواهند شد.

ما به صفحات زیر نیاز داریم:

  • صفحه ثبت نام با فرم ثبت نام
  • صفحه فعال سازی حساب
  • صفحه بازیابی رمز عبور
  • صفحه بازنشانی رمز عبور

فرم ورود به سایت در تمام صفحات سایت (مثلاً در هدر) قرار خواهد گرفت.

این صفحه ثبت نامی است که می خواهیم دریافت کنیم:

در اینجا نوع حساب تعیین می کند که کاربر را در کدام گروه ثبت نام کنیم. همچنین فیلد شناسایی (نام کاربری) ایمیل خواهد بود.

یک فراخوان قطعه به صفحه اضافه کنید ثبت نام:

[[!ثبت نام؟ &submitVar=`register-btn` &activationResourceId=`27` &activationEmailTpl=`Email.Activation` &activationEmailSubject=`شما در example.com ثبت نام کرده اید` &placeholderPrefix=`reg.` &successMsg=`

ممنون از اینکه ثبت نام کردید. به ایمیل شما [[!+reg.email]]یک ایمیل با لینک فعال کردن حساب شما ارسال شده است. برای تکمیل ثبت نام خود این لینک را دنبال کنید.
` &usernameField=`email` &usergroupsField=`reg_type` &customValidators=`valueIn` &validate=`username:blank, reg_type:valueIn=^Readers;Writers;Idlers ^, نام کامل: مورد نیاز:minLength=^6: دقیقه: eng:L. =^6^, password_confirm:password_confirm=^password^, email:required:email` ]] [[!+error.message:default=`[[!$Register.Form]]`]]

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

بیایید پارامترهای تماس را تجزیه و تحلیل کنیم:

&submitVar=`register-btn`- ویژگی نام تگ را مشخص می کند ورودی. یعنی قطعه تنها در صورتی کار می کند که فرم با دکمه ای با نام خاص ارسال شود.

&activationResourceId=`42`- با نگاه کردن به آینده، 42 شناسه صفحه ای است که کاربر را در آن فعال خواهیم کرد.

&activationEmailTpl=`Email.Activation`- یک تکه با یک نامه فعال سازی، در ادامه بیشتر در مورد آن.

&placeholderPrefix=`reg.`- نشان می دهد که همه متغیرهایی که در این قطعه ایجاد می شوند، به استثنای استثنائات نادر (در ادامه در مورد آن بیشتر خواهیم شد)، باید با "reg" شروع شوند.

&پیام موفقیت- پیامی که پس از ارسال موفقیت آمیز فرم نمایش داده می شود. توجه داشته باشید که می تواند حاوی مقادیری از فرم و هر تگ دیگری باشد. این پیام برای مکان نگهدار نوشته می شود [[!+error.message]].نام نسبتاً عجیبی است و در حال حاضر یک خطا در مستندات وجود دارد. آنجا نوشته شده است [[!+reg.error.message]]،اما از کد کامپوننت نتیجه می گیرد که اینطور نیست.

&usernameField=`ایمیل`- نشان می دهد که فیلد ایمیل به عنوان نام کاربری استفاده خواهد شد.

&usergroupsField=`reg_type`- فیلدی را تعریف می کند که گروهی را که کاربر جدید به آن اضافه می شود را تعیین می کند.

&customValidators=`valueIn`- نشان می دهد اعتبار سنجی های اضافی به صورت دستی ایجاد می شود.

&تایید اعتبار- اعتبار سنجی ها برای هر فیلد با کاما از هم جدا شده اند و اگر برای یک فیلد چندین اعتبار سنجی لازم باشد، باز هم با یک دونقطه از هم جدا می شوند. بیایید آنها را جداگانه تحلیل کنیم:

نام کاربری: خالی- یک تله ساده برای هرزنامه، به این معنی است که قسمت نام کاربری باید خالی بماند.

reg_type:valueIn=^Readers;Writers;Idlers^- ما گروه های ممکن را به سه مورد مشخص شده محدود می کنیم. در توزیع اصلی چنین چیزی وجود ندارد و هکرهای شیطانی می توانند مثلاً در گروه Administrator ثبت نام کنند (اگر نام آن را تغییر نداده باشید).

نام کامل: مورد نیاز:minLength=^6^- قسمت نام کامل باید خالی نباشد و حداقل دارای 6 کاراکتر باشد.

رمز عبور: مورد نیاز:minLength=^6^- مشابه برای رمز عبور.

password_confirm:password_confirm=^password^- کلمه عبور باید مطابقت داشته باشد.

email:required:email– ایمیل نباید خالی باشد و ایمیل واقعی باشد.

طرح [[!+error.message:default=`[[!$Register.Form]]`]]اگر به تازگی وارد صفحه شده باشید یا آن را اشتباه پر کرده باشید، پیامی در مورد ارسال موفقیت آمیز فرم یا قسمتی از فرم نمایش می دهد.

اجازه دهید اعتباردهنده بالا را ایجاد کنیم ارزش در. برای انجام این کار، یک قطعه با نام ایجاد کنید ارزش درو کد زیر:

$valueIn = explode(";", $param); return in_array ($value, $valueIn);

حالا باید یک تکه ایجاد کنید ثبت نام. فرم . در این حالت به صورت زیر خواهد بود (با استفاده از Bootstrap 3):

[[!+reg.error.fullname:notempty=`
[[!+reg.error.fullname]]
`]]
[[!+reg.error.email:notempty=`
[[!+reg.error.email]]
`]]
[[!+reg.error.password:notempty=`
[[!+reg.error.password]]
`]]
[[!+reg.error.password_confirm:notempty=`
[[!+reg.error.password_confirm]]
`]]

همه فیلدها الزامی است

در این فرم به چند نکته در مورد MODX اشاره می کنم:


- فرم در همان صفحه ای که در آن نشان داده شده پردازش می شود.

مقدار را از مقادیر دریافت شده از فرم تنظیم کنید تا در صورت خرابی کاربر مجبور نباشد همه چیز را دوباره وارد کند.

[[!+reg.error.email:notempty=`[[!+reg.error.email]]`]]- مجددا در صورت خرابی پیغام خطا در زیر فیلد نمایش داده می شود.

– اگر قبلاً ویژگی را تنظیم کرده اید، حتماً نام دکمه را مشخص کنید &submitVar.


اکنون باقی مانده است که یک تکه ایجاد کنیم ایمیل.فعال سازی با ایمیلی که سایت برای کاربر ارسال می کند:

ممنون از اینکه ثبت نام کردید! برای فعال سازی حساب کاربری خود به لینک زیر مراجعه کنید:

حساب خود را در Example.Com فعال کنید

پس از فعال سازی، می توانید با ایمیل و رمز عبور خود وارد شوید:

وارد شدن:[[+ایمیل]]

کلمه عبور:[[+ رمز عبور]]


در اینجا می توانید از متغیرهایی با نام فیلدهای فرم استفاده کنید. توجه داشته باشید که آنها قبلاً بدون "reg" نوشته شده اند. همچنین یک مکان نگهدار اضافه کنید [[+confirmUrl]]، که در آن لینک فعال سازی قبلاً ایجاد شده است، حتی نیازی به انجام کاری ندارید.


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

[[!تأیید ثبت نام؟ &redirectTo=`1`]]

که در آن 1 شناسه صفحه ای است که کاربر در صورت فعال سازی موفقیت آمیز به آن مراجعه می کند. در این صورت از قبل وارد سیستم خواهد شد.


بیایید شروع به تنظیم یک ورود به پروفایل کاربری کنیم. فرم مجوز ساده خواهد بود:

بیایید با فراخوانی آن در جای مناسب آن را اضافه کنیم:

[[!وارد شدن؟ &loginTpl=`Auth.Login` &logoutTpl=`Auth.Logout` &errTpl=`Auth.Login.Error` &actionKey=`action` &loginKey=`ورود به سیستم` &redirectToPrior=`1` &logoutResourceId=`1`]]

در اینجا ما یک تکه را با فرم ورود به سیستم در بالا مشخص می کنیم ( &loginTpl=`Auth.Login`، یک تکه با کد نشان داده شده به کاربران مجاز ( &logoutTpl=`Auth.Logout`)، یک قطعه کوچک با خروجی خطای ورود ( &errTpl=`Auth.Login.Error). گزینه های زیر هستند:

&actionKey=`عمل`و &loginKey=`ورود به سیستم`- شناسه های اصلی برای پردازش درخواست. اولی به معنی نام پارامتر در درخواست POST است و دومی به معنای مقدار آن است. یعنی فرم باید مقدار $_POST["action"]="login" را ارسال کند تا قطعه وارد شدنآن را پردازش کرد.

&redirectToPrior=`1`- یعنی پس از ورود به همان صفحه ای که از آن وارد شده ایم هدایت می شویم.

&logoutResourceId=`1`- هنگام خروج از نمایه، به صفحه ای با شناسه 1 می رویم.


Chunk Auth.Login :

[[!+ خطاها]]

فرم در همان صفحه پردازش می شود. اگر خطایی رخ دهد، در زیر فرم در محل نگهدارنده نمایش داده می شود [[!+ خطاها]].همچنین باید پیوندهای منابع را با ثبت نام و بازیابی رمز عبور به خاطر بسپارید. توجه داشته باشید که در فیلد برای نام ایمیل = "نام کاربری" - این فیلدی است که قطعه نامه را کپی کرده است. ثبت نام، و منحصر به کاربران است.


Chunk Auth.Logout:

[]` &tpl=`User.HeaderBadge` &innerJoin=`("modUserGroupMember":("نام مستعار":"modUserGroupMember"،"on":"modUser.id = modUserGroupMember.member")، "modUserGroup":("نام مستعار" :"modUserGroup"، "on":"modUserGroupMember.user_group = modUserGroup.id"))` &select=`("modUserGroup":("group_name": "modUserGroup.name"))` ]]

خروج از نمایه

اگر همه کاربران در یک گروه باشند این قسمت اختیاری است. اما برای نمایش یک گروه کاربری، ویژگی های استاندارد قطعه های موجود در مؤلفه Login کافی نیست. شما می توانید یک قطعه ساده برای دریافت نام گروه بنویسید xPDO، یا می توانید از یک قطعه آماده استفاده کنید pdoUsersدر بسته گنجانده شده است pdoTools. پارامترهای مشخص شده در این قطعه:

&users=`[[+modx.user.id]]`- فقط کاربر مجاز فعلی را انتخاب کنید.

&tpl=`User.HeaderBadge`- قسمتی که در آن اطلاعات مختصری درباره کاربر نمایش خواهیم داد.

&innerJoin– JSON با پیوستن به جدول گروه کاربر، توضیحات خارج از محدوده مقاله است. نکته اصلی این است که کار می کند J.

&انتخاب کنید– JSON که فیلد modUserGroup.name را با نام مستعار group_name به انتخاب اضافه می کند.


تکه با نشان کاربر User.HeaderBadge :

شما وارد شدید با عنوان [[+نام_گروه]][[+نام کامل]] حساب شخصی

اگر به گروه کاربری نیاز نداشتیم، محتویات این قطعه را می‌توان مستقیماً در قطعه وارد کرد. Auth.logout . در اینجا می توانید متغیرهایی را با هر فیلد modUser و modUserProfile plus با استفاده از آن نمایش دهید pdoUsersفیلد اضافه شد اسم گروه.


در یک تکه Auth.Login.Error خروجی خطای ساده:

[[+msg]]

ما با ورود تمام شد. در این مرحله کاربر می تواند با موفقیت ثبت نام کرده و وارد شود. اما اگر رمز عبور را فراموش کرد چه؟ در این صورت روی لینک "رمز عبور خود را فراموش کرده اید؟" کلیک می کند. و به صفحه بازیابی رمز عبور می رود که از قبل آن را ایجاد کرده و در آنجا تماس برقرار می کنیم:

[[!رمز عبور را فراموش کرده اید؟ &tpl=`Auth.ForgotPass.Form` &submitVar=`forgotpass` &errTpl=`Auth.Login.Error` &sentTpl=`Auth.ForgotPass.Sent` &emailTpl=`Email.ForgotPass` &emailSubject=`در حال بازیابی دسترسی به حساب شما Com` &resetResourceId=`29`]]

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

&tpl=`Auth.ForgotPass.Form`- تکه ای از فرمی که کاربر ایمیل خود را در آن وارد می کند.

&submitVar=`گذر را فراموش کردم- در مورد قطعه ForgotPassword، صرف نظر از مقدار غیر خالی، کافی است پارامتری با همان نام به سرور ارسال شود.

&errTpl=`Auth.Login.Error` - خروجی خطا مشابه قطعه ورود به سیستم

&sentTpl=`Auth.ForgotPass.Sent`- این قطعه حاوی محتوایی است که در صورت ارسال موفقیت آمیز ایمیل برای تغییر رمز عبور نمایش داده می شود.

&emailTpl=`Email.ForgotPass`- نامه واقعی در اینجا موجود است.

&موضوع نامه الکترونیکی=`بازیابی دسترسی به حساب در سایت Example.Com` - سرصفحه نامه.

&resetResourceId=`29`- شناسه منبعی که رمز عبور به یک رمز جدید بازنشانی می شود.


تکه Auth.ForgotPass.Form:

[[+loginfp.errors]]

آنچه در اینجا جدید است، تنها راه دیگری برای نمایش خطاها در محل نگهدارنده است [[+loginfp.errors]]و با ارسال پارامتر که این فرم است که رمز عبور را بازنشانی می کند: .

Auth.ForgotPass.Sent:

اطلاعات بازیابی حساب به آدرس ایمیل مشخص شده ارسال شده است: [[+ایمیل]].

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


ایمیل.ForgotPass:

[[+نام کامل]]،

برای فعال کردن رمز عبور جدید، لطفا لینک زیر را دنبال کنید:

من یک رمز عبور جدید می خواهم

اگر همه چیز به خوبی پیش رفت، می توانید با استفاده از داده های زیر وارد نمایه خود شوید:

وارد شدن:[[+نام کاربری]]

کلمه عبور:[[+ رمز عبور]]

با تشکر،
مدیریت سایت Example.Com

همه چیز بسیار شبیه به قطعه نامه فعال سازی است، فقط رمز عبور در اینجا در قطعه ایجاد می شود.


آخرین لمس ایجاد منبعی است که کاربر از ایمیل برای به روز رسانی رمز عبور به آن می رود. در این منبع به یک تماس نیاز داریم:

[[!ResetPassword:empty=`

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

`؟ &tpl=`Auth.ForgotPass.Reset`]]

اگر شخصی به طور ناگهانی دوباره یا به طور تصادفی به این صفحه سرگردان شود، این کد پیامی را نمایش می دهد. و اگر رمز عبور با موفقیت تنظیم مجدد شود، پیامی از قسمت نمایش داده می شود Auth.ForgotPass.Reset:

رمز عبور شما با موفقیت به رمز مشخص شده در ایمیل بازنشانی شد. اکنون می توانید با این رمز وارد شوید. فراموش نکنید که آن را در پروفایل خود تغییر دهید.

اکنون ما یک سیستم مجوز و ثبت نام کاربر کاملاً فعال داریم. تغییر مشخصات کاربران مجاز خارج از محدوده مقاله خواهد بود.


1. یک صفحه ثبت نام ایجاد کنید و یک فراخوان قطعه به آن اضافه کنید ثبت نام.

2. با فرم ثبت نام تکه هایی ایجاد کنید ثبت نام. فرم و نامه فعال سازی ایمیل.فعال سازی.

3. یک صفحه تایید ثبت نام ایجاد کنید و یک فراخوان قطعه را روی آن قرار دهید تایید ثبت نام.

4. یک تماس قطعه اضافه کنید وارد شدنجایی که می خواهیم فرم ورود و نشان کاربر مجاز را قرار دهیم.

5. یک تکه با یک فرم ورود ایجاد کنید Auth.Login ، یک تکه حاوی اطلاعات مربوط به کاربر مجاز Auth.logout ، تکه ای با پیام خطا Auth.Login.Error .

6. یک صفحه بازیابی رمز عبور ایجاد کنید و یک فراخوان قطعه را روی آن قرار دهید رمز عبور را فراموش کرده ام.

7. یک قطعه ایجاد کنید Auth.ForgotPass.Form با فرم بازیابی رمز عبور، تکه Auth.ForgotPass.Sent با پیامی در مورد ارسال موفقیت آمیز نامه، قطعه ایمیل.ForgotPass با ایمیل بازنشانی رمز عبور

8. یک منبع با تنظیم مجدد رمز عبور نهایی ایجاد کنید و فراخوانی قطعه را در آن قرار دهید بازنشانی رمز عبور.

9. یک قطعه ایجاد کنید Auth.ForgotPass.Reset با پیامی در مورد بازنشانی موفقیت آمیز رمز عبور.

همین. از هرگونه اضافات و تذکرات خوشحال خواهم شد.

"Fool-proof" مجموعه ای از اقدامات برای جلوگیری از ورود اطلاعات نادرست در فرم است. به عنوان مثال، اگر می خواهید یک عدد مثبت از 0 تا 10 را در فیلد وارد کنید، باید بررسی کنید که کاربر متنی را وارد نکند یا عددی را که در محدوده مشخص شده قرار نگیرد، یعنی. عدد نباید کمتر از صفر و بزرگتر از ده باشد.

چرا اطلاعات اشتباه وارد می شود؟ این عمدتا به سه دلیل انجام می شود.

  1. کاربر به طور تصادفی مرتکب اشتباه شده است، به عنوان مثال، او آنچه را که باید مشخص کند بی توجه خوانده است.
  2. صفحه وب به روشی مبهم درخواست ورودی می‌کند، بنابراین کاربر باید حدس بزند و در مورد آنچه واقعاً از او می‌خواهد حدس بزند. در این مورد، نظرات توسعه دهنده و کاربر همیشه مطابقت ندارند.
  3. تعدادی از افراد هستند که دستورالعمل ها را به عنوان یک چالش درک می کنند و سعی می کنند برعکس عمل کنند. چنین کاربرانی چیزی شبیه به این فکر می کنند: «بله، از من خواسته شده است که یک شماره را وارد کنم. و اگر حروف را مشخص کنم چه اتفاقی می افتد؟ سپس آنها به وضوح اطلاعات نادرست می دهند و می بینند که به کجا منجر می شود.

باید درک کرد که فرمول‌بندی‌های دقیق و صحیح، اگرچه احتمال خطا را کاهش می‌دهند، اما آنها را از آن‌ها نجات نمی‌دهد. فقط ابزارهای فنی در سمت سرور به شما امکان می دهد به نتیجه دلخواه برسید و از وارد کردن اطلاعات نادرست خودداری کنید. با این حال، تجدید نظر یا، همانطور که همچنین نامیده می شود، اعتبار سنجی سمت مشتری به شما امکان می دهد بدون ارسال فرم به سرور، به سرعت داده های وارد شده توسط کاربر را از نظر صحت بررسی کنید. این باعث صرفه جویی در زمان کاربر و کاهش بار روی سرور می شود. از نقطه نظر قابلیت استفاده، نکات مثبتی نیز وجود دارد - کاربر بلافاصله پیامی در مورد اینکه چه اطلاعاتی را اشتباه نشان داده است دریافت می کند و می تواند اشتباه خود را اصلاح کند.

زمینه اجباری

برخی از فیلدهای فرم باید قبل از ارسال به سرور تکمیل شوند. این، برای مثال، برای فرم ثبت نام، که در آن باید نام کاربری و رمز عبور را وارد کنید، اعمال می شود. همانطور که در مثال 1 نشان داده شده است، فیلدهای مورد نیاز با استفاده از ویژگی مورد نیاز مشخص می شوند.

مثال 1: ویژگی مورد نیاز

HTML5 IE 10+ Cr Op Sa Fx

زمینه اجباری

وارد شدن:

کلمه عبور:

قبل از ارسال فرم باید فیلدهای الزامی تکمیل شود، در غیر این صورت فرم به سرور ارسال نمی شود و مرورگر در این مورد اخطار می دهد. ظاهر پیام به مرورگر بستگی دارد، به عنوان مثال، Chrome یک راهنمای ابزار را نمایش می دهد، همانطور که در شکل نشان داده شده است. یکی

برنج. 1. فیلد الزامی پر نشده است

صحت داده ها

در ابتدا دو فیلد وجود دارد که داده های وارد شده توسط کاربر به طور خودکار در آن ها اعتبارسنجی می شود. این یک آدرس وب و یک آدرس ایمیل است. مرورگر کروم نیز فیلد داده‌های تقویم را تأیید می‌کند، اما فقط به این دلیل که رابط کلیک به تقویم را ارائه نمی‌کند. این عناصر با قوانین زیر مشخص می شوند.

  • آدرس وب ( ) باید حاوی پروتکل (http://, https://, ftp://) باشد.
  • آدرس ایمیل ( ) باید شامل حروف یا اعداد قبل از علامت @، بعد از آن، سپس نقطه و دامنه سطح اول باشد.

مرورگرها سیاست های کمی متفاوت برای بررسی داده های کاربر دارند. به عنوان مثال، اپرا پروتکل http:// را قبل از متن وارد شده به طور خودکار جایگزین می کند، در حالی که سایر مرورگرها منتظر آن هستند. کروم و اپرا به یک نقطه در آدرس ایمیل نیاز دارند، فایرفاکس این کار را نمی کند.

مثال 2 فرمی را با فیلدهای الزامی نشان می دهد که در آن دو فیلد توسط مرورگر تأیید می شود.

مثال 2 صحت داده ها

HTML5 IE 10+ Cr Op Sa Fx

صحت داده ها

فرم را پر کنید (همه فیلدها الزامی است)

نام:

پست الکترونیک:

سایت اینترنتی:

Opera فقط در صورتی عنصر فرم را تأیید می کند که ویژگی name وجود داشته باشد.

آنچه در Opera هنگام وارد کردن داده های نادرست اتفاق می افتد در شکل نشان داده شده است. 2.

برنج. 2. هشدار داده اشتباه

قالب ورودی

برخی از داده ها را نمی توان به یکی از انواع عناصر فرم اختصاص داد، بنابراین باید از یک فیلد متنی برای آنها استفاده کنید. در عین حال، آنها طبق استاندارد خاصی وارد می شوند. بنابراین، آدرس IP شامل چهار عدد است که با یک نقطه از هم جدا شده اند (192.168.0.1)، کد پستی روسیه به شش رقم محدود می شود (124007)، تلفن حاوی کد منطقه و تعداد خاصی از ارقام است که اغلب با خط فاصله از هم جدا می شوند (391). 555-341-42) و غیره. مرورگر باید یک الگوی ورودی را مشخص کند تا ورودی کاربر را مطابق با آن بررسی کند. برای این کار از ویژگی الگو استفاده می شود و مقدار آن یک عبارت منظم است. برخی از مقادیر معمولی در جدول ذکر شده است. یکی

مثال 3 یک مقدار رنگ هگزا دسیمال (#ffcc00) می خواهد و اگر در آن محدوده نباشد، مرورگر یک پیغام خطا نمایش می دهد.

مثال 3. قالب ورودی

HTML5 IE 10+ Cr Op Sa Fx

ورودی رنگ

مقدار رنگ هگزادسیمال را وارد کنید (باید با # شروع شود)

روی انجیر شکل 3 یک هشدار را در مرورگر کروم نشان می دهد.

برنج. 3. داده های وارد شده با الگو مطابقت ندارد

اعتبار سنجی را لغو کنید

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

. مثال 4 استفاده از این ویژگی را نشان می دهد.

مثال 4: لغو اعتبار

HTML5 IE 10+ Cr Op Sa Fx

اعتبار جدید

برای یک هدف مشابه، از ویژگی formnovalidate استفاده می شود که به دکمه ارسال فرم، در این مورد، به تگ اضافه می شود. . در این صورت، فرم مثال 4 به این صورت خواهد بود.

برای هر توسعه دهنده وب، هنوز مشکل جدی تر از سازگاری کامل محصولش با مرورگرهای متقابل وجود ندارد. این احتمالاً یکی از وظایف اصلی یک متخصص خوب است: اطمینان از اینکه سایت او همیشه در همه مرورگرها به درستی نمایش داده می شود.

پارامتر ضروری، که گاهی برای ورودی استفاده می شود، در اینترنت اکسپلورر باستانی کار نمی کند، بنابراین نمی توان آن را به این صورت رها کرد. کاربران بازنشسته ای که هنوز از IE6 استفاده می کنند باید مانند کاربران آخرین نسخه Google Chrome سهولت استفاده را داشته باشند. چه کسی، به جز توسعه دهندگان وب، می تواند از آنها مراقبت کند.

درباره sore، در مورد اینترنت اکسپلورر

برای مرورگرهای معمولی، از جمله فایرفاکس، اپرا و گوگل کروم، این کار نسبتا آسان است. حتی نسخه های قدیمی این مرورگرها کدهای html را به همان اندازه به خوبی نمایش می دهند، مگر اینکه البته از فناوری های جدیدی در آن استفاده شده باشد. اما برای دستیابی به این امر در مرورگرهای خانواده اینترنت اکسپلورر، تلاش عظیمی لازم است.

هر نسخه از اینترنت اکسپلورر حماقت منحصر به فرد خود را دارد. آنچه در IE6 کار می کند ممکن است در IE7 به درستی کار نکند و بالعکس. مایکروسافت حتی در آخرین نسخه مرورگر خود نیز نتوانست بر این باغ وحش غلبه کند.

نمی‌توانم بفهمم چرا توسعه‌دهندگان مرورگر نمی‌توانند آن را باز کنند و استانداردهای W3C برای ساخت سایت را بخوانند.

بنابراین، به عنوان یک توسعه‌دهنده وب، باید به‌عنوان نوعی «لایه» بین مرورگرهای دمدمی مزاج و بازدیدکنندگان سایت که نیاز به دانش و تماشا دارند، عمل کنم. و این بسیار خوب است که توسعه دهندگان وب تاکنون موفق شده اند.

بنابراین چگونه می‌توانید در نسخه‌های قدیمی‌تر IE کار کنید؟

JS به کمک می آید. قبلاً از آن متنفر بودم، اما اکنون راهی به جلو بدون آن در فضای وب "درست" نمی بینم.

راه حل زیر را خودم اختراع نکردم، بلکه آن را از یک وبلاگ بورژوازی گرفتم. از آنجایی که من حریص هستم و وبلاگ بورژوازی است، به آن لینک نمی دهم.

تابع مسئول همه چیز خواهد بود fnCheckFields(). کد JS را در سایت خود قرار دهید:

معمولا توصیه می شود آن را بین تگ های html قرار دهید سردر بالای صفحه، اما من همچنان توصیه می کنم آن را در انتهای صفحه قبل از برچسب بسته شدن قرار دهید. بدن. بنابراین، JS تاثیر کمتری بر سرعت بارگذاری صفحه دارد.

پنجره ورودی که باید پارامتر مورد نیاز در آن وارد شود، در زبان html باید به شکل زیر باشد:

این اسکریپت بسیار ساده کار می کند: پس از فشار دادن دکمه ارسال، اسکریپت تمام ورودی ها را برای وجود پارامتر مورد نیاز بررسی می کند و در صورت یافتن آن، مقدار وارد شده این فیلد را مطابق با آن مشاهده می کند. اگر چیزی در چنین ورودی وارد نشده باشد، یک پنجره هشدار در مورد نیاز به ورودی نمایش داده می شود. داده ها به جایی ارسال نمی شود.

همچنین بسیار خوب است که اگر یک مرورگر معمولی دارید که قبلاً یاد گرفته است این پارامتر را همانطور که انتظار می رود درک کند، چنین پنجره هشداری ظاهر نمی شود و ابزارهای استاندارد برای پردازش پارامتر مورد نیاز برای مرورگر شما کار می کنند.

در شبکه اجتماعی بگویید شبکه های

برترین مقالات مرتبط