PDA

View Full Version : form validation



sara.ghavam
شنبه 22 خرداد 1395, 18:22 عصر
سلام دوستان عزیزم
من یک صفحه برای تغییر رمز عبور دارم

که 3 تا textbox دارم، یکی برای رمز عبور فعلی، یکی برای رمز عبور جدید و دیگری برای تایید رمز عبور جدید.

چند تا چیز رو میخوام چک کنم،
یکی اینکه رمز عبور فعلی که وارد شده درست باشه (آیا این رو میشه از طریق form validation خود codeignite چک کرد و خطا ره به همراه دیگر خطاها فرستاد؟)
و اینکه رمز عبور جدید و تایید رمز عبور یکی باشند.
و اینکه رمز عبور جدید حروف فارسی نگیره، اعداد و حروف رو بگیره و همچنین کارکترهای دیگه که برای پسورد مجازه
و اینکه رمز عبور جدید حداقل 8 کاراکتر و حداکثر 100 کاراکتر باشه

چطوری باید بنویسم؟؟

و اینکه آیا راهی هست که این خطاهارو به صورت فارسی نشون بدیم؟؟


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




$rules = array ( array (
'field'=>'currentpass',
'label'=>'Current Password',
'rules'=>'required|alpha_dash|min_length[8]|max_length[100]'
),

array (
'field'=>'pass',
'label'=>'Password',
'rules'=>'required|alpha_dash|min_length[8]|max_length[100]'
),
array (
'field'=>'passcnf',
'label'=>'Password Confirmation',
'rules'=>'required|alpha_dash|min_length[8]|max_length[100]|matches[pass]'
)
);

H:Shojaei
شنبه 22 خرداد 1395, 22:28 عصر
سلام دوستان عزیزم
من یک صفحه برای تغییر رمز عبور دارم

که 3 تا textbox دارم، یکی برای رمز عبور فعلی، یکی برای رمز عبور جدید و دیگری برای تایید رمز عبور جدید.

چند تا چیز رو میخوام چک کنم،
یکی اینکه رمز عبور فعلی که وارد شده درست باشه (آیا این رو میشه از طریق form validation خود codeignite چک کرد و خطا ره به همراه دیگر خطاها فرستاد؟)
و اینکه رمز عبور جدید و تایید رمز عبور یکی باشند.
و اینکه رمز عبور جدید حروف فارسی نگیره، اعداد و حروف رو بگیره و همچنین کارکترهای دیگه که برای پسورد مجازه
و اینکه رمز عبور جدید حداقل 8 کاراکتر و حداکثر 100 کاراکتر باشه

چطوری باید بنویسم؟؟

و اینکه آیا راهی هست که این خطاهارو به صورت فارسی نشون بدیم؟؟

واسه این که رمز فعلی درست باشه به این صورت عمل کنید:
یه validation به currentpass اضافه کنید به این شکل |callback_current_pass_check
بعد یه تابع تو همون کنترلر بسازید به نام current_pass_check که یه پرامتر میگیره به نام اینپوت currentpass بعد چک کنید که چنین پسووردی وجود داره واسه این کاربری که هست یا نه...
دومی که رو درست نوشتید...
سومی رو دلیلی نداره حروف فارسی نگیره رمز هرچی دوست داره کاربر همون باشه چون بالاخره شما هش میکنیدش و مهم نیست که حرف باشه عدد باشه یا گلابی بذارید هرچی میخوان بزنن...
مورد بعدی هم که بین 8 و 100 کاراکتر رو درست نوشتید...

sara.ghavam
یک شنبه 23 خرداد 1395, 18:26 عصر
مشکل حل شد و فارسی هم کردم. تشکر

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

لطفا کمک کنید

H:Shojaei
یک شنبه 23 خرداد 1395, 21:24 عصر
مثل همون callback که گفتم میتونید واسه رمز های عبور یکی تعریف کنید و توی تابعش چک کنید پس رو...
این هم واسه پترنی که نیازه ۸ کاراکتر حداقل یک حرف و یک عدد...


if (preg_match("^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{8,}$", $pass ) )
{
return TRUE;
}
else
{
return FALSE;
}
}

sara.ghavam
دوشنبه 24 خرداد 1395, 06:38 صبح
خیلی ممنون دوست عزیزم

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


echo validation_errors();


که همه خطاهارو به صورت یکجا زیرهم نشون میده اگر من بخوام که خطاهای مربوط به هر فیلد مثلا کنارش یا زیرش نشون بده
برای اینکار چه کار باید بکنم؟؟

sara.ghavam
دوشنبه 24 خرداد 1395, 09:17 صبح
خیلی ممنونم دوستان این مشکل نمایش خطا هم حل شد.

با تشکر