Код (Text): <?php function isEmail($email) { return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i" ,$email)); } $errtype = ''; // $error = ''; // сообщение об ошибке $namen = 'Name'; // имя отправителя $email = 'Email address'; // email отправителя $subject = 'Subject'; // тема $message = ''; // сообщение $spamcheck = ''; // проверка на спам if(isset($_POST['send'])) { $namen = $_POST['namen']; $email = $_POST['email']; $subject = $_POST['subject']; $message = $_POST['message']; $spamcheck = $_POST['spamcheck']; if(trim($namen) == "" || trim($namen) == "Name") { $error = '<div class="errormsg">Please, enter your Name</div>'; $errtype = 'namen'; } if(trim($email) == "") { $error = '<div class="errormsg">Please, enter your email!</div>'; $errtype = 'email'; } if(!isEmail($email)) { $error = '<div class="errormsg">Please, enter your email!</div>'; $errtype = 'email'; } if(trim($subject) =="" || trim($subject) == "Subject") { $error = '<div class="errormsg">Please, enter Subject!</div>'; $errtype = 'subject'; } if(trim($message) == "") { $error = '<div class="errormsg">Please, enter message!</div>'; $errtype = 'message'; } if($error == '') { ?> <?php } } if(!isset($_POST['send']) || $error != '') { ?> <!--Error Message--> <form method="post" name="contFrm" id="contFrm" action=""> <p>Please provide us with the following information. </p> <br> <div class="feedback"> <input <?php if ($errtype=='namen') echo "style='border: 1px solid #ee5f5b;'" ?> name="namen" type="text" class="box" id="namen" value="<?=$namen;?>" onblur="if(this.value=='')this.value='Name';" onfocus="if(this.value=='Name')this.value=''" /> <br><br> <input <?php if ($errtype=='email') echo "style='border: 1px solid #ee5f5b;'" ?> name="email" type="text" class="box" id="email" value="<?=$email;?>" onblur="if(this.value=='')this.value='Email address';" onfocus="if(this.value=='Email address')this.value=''" /> <br><br> <input <?php if ($errtype=='subject') echo "style='border: 1px solid #ee5f5b;'" ?> name="subject" type="text" class="box" id="subject" value="<?=$subject;?>" onblur="if(this.value=='')this.value='Subject';" onfocus="if(this.value=='Subject')this.value=''" /> <br><br> <textarea <?php if ($errtype=='message') echo "style='border: 1px solid #ee5f5b;'" ?> name="message" id="message"><?=$message;?></textarea> <br><br> <button class="butm butreset" type="submit"> </button><button class="butm butsubmit" name="send" type="submit"> </button> </div> </form> <?php } ?> Как видите при не заполненных полях или какой то ошибке, появляется соответствующее предупреждение (border: 1px solid #ee5f5b При обработке <form> action="" является пустым. Как можно сделать, чтобы <form> отправляла через action="../myother.php" когда нет ошибок ?
немного не так на отправку форму вешаете функцию функция проверяет поля если все правильно - выход из функции по return true; отправит форму обработчику если не правильно - пишем сообщение пользователю и выход из функции return false; не даст форме отправиться
Спасибо за ответ ! Я также думал, но когда я повешу функцию на onSubmit="return TestDataCheck()", не будет работать обработка <form> php скриптом. Ведь у меня вся обработка на не заполненные поля идет через php $_POST Код (Text): <SCRIPT TYPE="text/javascript"> function TestDataCheck() { var qtytested = document.contFrm.first_name.value; var qtypassed = document.contFrm.last_name.value; var returnval; if ( (qtytested =="") && (qtypassed =="") ) returnval = true; else { returnval = false; } return returnval; } </SCRIPT>
именно так и реализуется мой пример - браузеру "возвращается" то, что возвращает функция проверки. и браузер в зависимости от true там или false отправляет или не отправляет форму. не забудьте про людей у которых JavaScript отключен - форма отправится и ее нужно будет проверить аналогичным способом на стороне сервера и показать снова, если возникли ошибки
А как это сделать в PHP чтобы иметь возможность отправлять через <form> action="" (когда это нужно) и не отправлять (запрещать) ? Т.н. нужно чтобы работал post когда все поля будут заполнены. Думал так сделать Код (Text): <form method="post" action="<?php echo $ind; ?>"> но по клику работает только с 2 раза.
пхп на стороне сервера работает, форма у клиента)))) если под "когда это нужно" подразумевается "отключеный жс" - принимаете своим сценарием вписанным в экшн формы все данные, делаете разбор и решаете - хорошо форма заполнена или ее нужно еще раз показать пользователю. я как-то раз примерно такую же задачу решал - есть компов на предприятии, половина в целях безопасности не имеют возможность запускать жс, а вторая имеет. сделал аяксом запрос к сценарию с передачей данных форм. сервер выдавал ответ. если ответом был определенный текст - он парсился и в форме показывалось что не так. иначе - сервер уже завешил проверку и нужно только оповестить клиента куда пойти. это у кого все хорошо с жс. у кого плохо - по отправке форма отправлялась, проверялась тем же куском кода что и в случае с аяксом, но только если что-то не так - форма опять появлялась на экране, обработанная средствами пхп. примерно так.
Не надо это делать в PHP. Вообще. Это всегда надо делать на javascirpt. Предупредив пользователя, что если javascript отключён, данные сохранить нельзя. На обычных сайтах это нормально. Если у вас какой-то особый случай, не обычный сайт, см., что пишет Ganzal.
нет. это либо отправка с перезагрузкой страницы (обычно) или в фоновом режиме (аякс). на счет безопасности то же подумайте. я могу отредактировать ваше описание формы о она будет всегда отправляться. на стороне сервера делается проверка? вообще возьмите себе за правило при работе - никогда не доверять пользовательским данным. ни от себя, ни уж тем более от других пользователей
У меня это будет форма регистрации... После чего нужно передать некоторые данные из этой формы через post (action="http://othersite.com/myotherpage.php") на другой сайт. Пожалуйста помогите с реализацией как это все сделать.
И видимо вы вообще не знаете, что такое пользовательские функции) Какой вообще прикол так себя напрягать и писать. Тяжко Вам.