PDA

View Full Version : کنترل @ و . در ایمیل



olampiad
چهارشنبه 23 اردیبهشت 1394, 15:32 عصر
سلام و خسته نباشید به دوستان عزیز
من یه فیلدی دارم که ایمیل رو از کاربر میگیره.
من میخوام که کاربر حتما ایمیل وارد کنه ن اطلاعات دیگه ای رو.(مثلا تو اطلاعاتی که وارد میکنه حتما علامت @ و . وجود داشته باشه.)
میدونم جوابتون اینه که من به این شکل عمل کنم.


<input type="email">

تو کد بالا به صورت انگلیسی اخطار میده ولی من میخوام وقتی که کاربر اطلاعات رو اشتباه وارد کرد به صورت فارسی نشون بده.
برای این کار باید چیکار کنم.
به این متن نگا کنید
hamidrezawd@gmail.com
من با کدام تابع بفهمم که که تو متن بالا علامت @ وجود دارد.
خیلی ممنون

hsgpro
چهارشنبه 23 اردیبهشت 1394, 15:48 عصر
سلام
اخطارش رو فقط برای مرورگر فایرفاکس اینطوری با x-moz-errormessage می تونید تغییر بدید:
این فقط در فایرفاکس کار میکنه هیچ مشابهی هم برای سایر مرورگر ها نداره.



<input type="email" name="email" title="آدرس ایمیل" x-moz-errormessage="لطفاً آدرس ایمیل خود را وارد کنید" required>

barnamenevis2016
چهارشنبه 23 اردیبهشت 1394, 18:26 عصر
سلام...روش زیر طولانیه و فکر می کنم خودتون هم بلد باشینش...ولی چطوره؟؟:
کد html:

input type="text" name='email' class='email' placeholder='email' size=20 /><span class="emailCS"> </span>>
اسکریپت jquery:

$("input[name='email']").keyup(function(e){
val=$('.email').val();
$.post('ajax/checkEmail.php',{name:name , val:val}, function(data){
$(className).html(data);
});
})


کد php به آدرس ajax/checkEmail.php:

$val = $_POST['val'];
if ( filter_var($val ,FILTER_VALIDATE_EMAIL ) == true ){
echo ' &check;';
}else{
echo $not;
}

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

tux-world
دوشنبه 28 اردیبهشت 1394, 07:32 صبح
هیچ نیازی به این همه کار نداره. در واقه کارتون اشتباه هستش. شما باید سمت کلاینت این کارا رو انجام بدید نه اینکه بفرستید سمت سرور بعد چک کنید. تو سمت کلاینت با یه split و یا Reqular Experssion ساده میتونید این ولیدیشن رو انجام بدید :لبخندساده:

hamedarian2009
سه شنبه 29 اردیبهشت 1394, 10:59 صبح
برای امنیت حتما باید علاوه بر بررسی در سمت کلاینت در سمت سرور هم بررسی بشه که در هردو سمت با عبارات منظم (Regular Expression) میتونید اینکارو بکنید

barnamenevis2016
سه شنبه 29 اردیبهشت 1394, 13:15 عصر
هیچ نیازی به این همه کار نداره. در واقه کارتون اشتباه هستش. شما باید سمت کلاینت این کارا رو انجام بدید نه اینکه بفرستید سمت سرور بعد چک کنید. تو سمت کلاینت با یه split و یا Reqular Experssion ساده میتونید این ولیدیشن رو انجام بدید :لبخندساده:
اگر خواستیم که بررسی کنیم که ایمیل تکراری نباشه و از پیش کسی اونو ثبت نکره چی؟اونوقت هم لازم نیست که سمت سرور چک بشه....و منظورتون از Reqular Experssion چیه...من که بیشتر آموزشا رو تصویری دیدم و گاها به اصطلاحات توجه نداشتم...شاید توضیح مختصر بدید...متوجه ماجراش بشم...مرسی

hamedarian2009
سه شنبه 29 اردیبهشت 1394, 13:52 عصر
اگر خواستیم که بررسی کنیم که ایمیل تکراری نباشه و از پیش کسی اونو ثبت نکره چی؟اونوقت هم لازم نیست که سمت سرور چک بشه....و منظورتون از Reqular Experssion چیه...من که بیشتر آموزشا رو تصویری دیدم و گاها به اصطلاحات توجه نداشتم...شاید توضیح مختصر بدید...متوجه ماجراش بشم...مرسی

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

برای درک عبارات منظم در JS میتونید این لینکو ببینید http://beyamooz.com/javascript/128-object/404-%D8%B9%D8%A8%D8%A7%D8%B1%D8%A7%D8%AA-%D9%85%D9%86%D8%B8%D9%85-%D8%AF%D8%B1-javascript

saeid.sky
چهارشنبه 30 اردیبهشت 1394, 16:15 عصر
جالبه ......

CodeNEvis111
جمعه 12 تیر 1394, 19:32 عصر
با سلام

این کدها می تونه کمکتون کنه:




var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
if (inputEmailRegister.value.search(emailRegEx) == -1)
{alert("آدرس ایمیل معتبر نمی باشد"); return false;}