PDA

View Full Version : سوال: فرم تماس



Hossein8867
چهارشنبه 10 تیر 1394, 15:19 عصر
سلام خدمت همگی دوستان.من میخوام وقتی کسی ایمیل رو اشتباه وارد کرد مثلا @ رو نزد و ... سایت بنویسه لطفا ایمیل را صحیح وارد کنید و بعدش همه ی فیلدهای فعلی پر بمانند و خالی نشوند و فقط ایمیل نیاز به اصلاح داشته باشد.

http://uplod.ir/bd7r5ikjuc0b/item-post.html.htm

لازم به ذکر است که فرمت فایل php است و برای upload کردن فرمتش را به html تغییر دادم

H:Shojaei
چهارشنبه 10 تیر 1394, 18:20 عصر
برای این که شما باید ابتدا ولیدیشن کردن ایمیل رو بلد باشید که فکر کنم بلدین چون در این زمینه سوال نکردین...
یک فرم داریم شامل نام و ایمیل فرو رو با ارسال به همون صفحه ای که هست میفرستیم یعنی action فرم میشه خود صفحه ای که توش هست یا همون که مقدارش خالی باشه همین میشه عملا...
مقدار فیلدها رو برابر با @$_POST['thisFieldName'] میذاریم یعنی چی؟ یعنی مثلا برای ایمیل مینویسیم
value="<?php echo @$_POST['email']?>" و فیلدهای دیگه هم به همین صورت...
فرم که ارسال میشه بالای فرم ولیدیشن فرم رو انجام میدین حالا فرضا ولیدیشن انجام شد و تشخیص دادید که ایمیل اشتباست...
یک متغیر تعریف میکنید که مثلا اگر ولیدیشن اشتباه بود مقدارش مثلا بشه -1 اگر ولیدیشن ها درست بود مقدارش بشه 1...
اگر مقدار این متقیر یا فلگ برابر 1 بود که کدهای درج یا ویرایش یا هرکاری که میخواید انجام بدین رو انجام میدین...
اگر نبود دوباره فرم رو باید نمایش بدین که کاربر خطا رو درست کنه و دوباره فرم رو ارسال کنه وقتی فرم رو اینجا نمایش بدین مقادیر هرکدوم از فیلهای فرم برابر مقداری هست که قبلا ارسال شده همین کدی که نوشتم چون خودمون گفتید بهش بار اول چون مقداری ارسال نمیشه خالیه ولی بار دوم مقداری که ارسال شده جایگزین میشه...
حالا اگر میخواید واسه هرکدوم از این فیلدها شرط بذارید که اگر اشتباه بود خالی بشه برای هرکدوم از فیلدها موقع ولیدیشن یک فلگ یا متقیر تعریف میکنید مثل قبلی مثلا اگر ولیدیشن ایمیل اشتباه بود متغیر
$validEmail=-1; میشه...
حالا بخش value فیلد ایمیل هم به این صورت که بشه اگر اون فیلد خطایی داشته باشه اونوقت میاد خالیش میکنه که کاربر دوباره وارد کنه:
value="<?php echo @$validEmail==-1?'':@$_POST['email']?>"
میگیم اگر خطا داشت مقدار خالی رو نمایش بده اگر نه مقداری که اگر ارسال شده رو نمایش بده...


$validEmail=0;
if(formSend){
if(email has error)
{
$err=-1;
$validEmail=-1
}
}

if($err!=-1&&formSend){everything is ok
do insert or update or ......
}
else{
//form not sended or an error hapend
<input name="email" value="@$validEmail==-1?'':@$_POST['email']?>">

Mohammadsgh
چهارشنبه 10 تیر 1394, 19:13 عصر
اگر می خواید مقدارهای تکست باکس پاک نشن باید ولیدیت سمت کاربر هم انجام بدین.این کار علاوه بر اینکه برای کاربر یک خوبی به شمار میادتا زمانی که فرم ثبت نشه سمت سرور نمیره و سرور درگیرش نمیشه و بهش فشار نمیاد.



$email = test_input($_POST["email"]);
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}

SCoder
جمعه 19 تیر 1394, 00:08 صبح
دوست عزیز با این کار میتوانی مطمئن شوی که آیا کابر اطلاعات را درست وارد کرده است یا نه اگر نه دکمه submit به طور کلی disabled می باشد بنابرین کابر تا درست بودن تمام اطلاعات کاری نمی تواند بکند ....

برای این کار این کد رو امتحان کن ...
در این کد یک فرم با id=contact ساختم که دارای فیلد های email,password,username که کاربر حتما باید همه رو پر کنه اگر می خواد که چیزی رو register کنه یه وارد جایی بشه ....


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Default</title> <meta http-equiv="content-type" content="text/xml;charset=utf-8" /> <meta name="keywords" content="" /> <meta name="language" content="Farsi" /> <link rel="icon" href="" type="image/jpeg" /> <link rel="shortcu icon" href="" type="image/jpeg" /> <link rel="stylesheet" type="text/css" href="" /> <script type="text/javascript" src="/js/jquery-1.11.1.min.js"></script> <style type="text/css"></style> <script type="text/javascript"> //<=!=[=C=D=A=T=A=[//this line if for xhtml validation var Form=new function() { /*this Obj will give us the form which when all the inputs are ok then you can enter otherwise the Enter is disabled */ //props this.id=null; this.form=null; this.email=null; this.pwd=null; this.user=null; this.reset=null; this.sub=null; //methods this.init=function() { //this is the initializing method //console.log('init'); var self=Form; self.id='contact'; self.form=document.getElementById(self.id); self.email=self.form.email; self.email.focus(); self.pwd=self.form.pwd; self.user=self.form.username; self.sub=self.form.sub; self.sub.disabled=true; self.reset=self.form.reset; document.onkeyup=self.procInput; }//end of init this.procInput=function() { //console.log('proc'); var self=Form; if (self.checkEmail() && self.checkPwd() && self.checkUser()) { //when the user input everything fine and error free self.sub.disabled=false; } else { self.sub.disabled=true; } }//end of ProcInput Method this.checkEmail=function() { //console.log('checkE'); var self=Form; var patt=/.{3,}@.{2,}\..{2,}/; if (patt.test(self.email.value)) { //if true then the Email is correct Format return true; } return false; } this.checkPwd=function() { //console.log('checkPWD'); var self=Form; var patt=/.{5,}/; if (patt.test(self.pwd.value)) { return true; } return false; } this.checkUser=function() { //console.log('checkUser'); var self=Form; var patt=/.{2,}/; if(patt.test(self.user.value)) { return true; } return false; } }//end of Form Obj window.onload=Form.init; //]=]=> </script> </head> <body> <form id='contact' action="" method='post'> <input type='text' value='' placeholder='Email' name='email' /><br /> <input type='text' value='' placeholder='username' name='username' /><br /> <input type='password' value='' placeholder='Password' name='pwd' /><br /> <input type='submit' value='Enter!' name='sub' /> <input type='reset' value='Reset' name='reset' /> </form> </body></html>