Хотите, чтобы ошибки проверки формы php появлялись в окне, используя jquery или javascript - PullRequest
1 голос
/ 26 февраля 2012

Я попытался выяснить это и обнаружил, что это невозможно только с помощью PHP. Что я хотел бы знать, так это как я могу адаптировать свою текущую форму, расположенную по адресу http://www.kaimeramedia.com/derek/Website/contact.php (не указывайте contact.php для получения полного сайта), используя следующий код mailform.php для всплывающего сообщения об ошибке, если проверка выполняется не верно В настоящее время он просто обновляет все окно. Я бы вообще не обновлял страницу и не позволял им исправлять ошибку после закрытия всплывающего окна. Я пока опускаю свою электронную почту в этом коде, но она находится на самой странице mailform.php. Для дальнейшего анализа код mailform.php выглядит следующим образом:

 <?PHP
 session_start();
try{
$check = new check();
if(!isset($_REQUEST['email']))
    throw new exception('You did not enter an email address.');

if(!isset($_REQUEST['message']))
    throw new exception('You did not enter a message.');

if(!isset($_REQUEST['name']))
    throw new exception('You did not enter a name');

$sender = $_REQUEST['email'];
$message = $_REQUEST['message'];
$name = $_REQUEST['name'];
$recipient = 'text@text.com';

$subject = 'Regarding Your Portfolio';

if($check->captcha('userpass') == FALSE)
    throw new exception('Your captcha is incorrect. Word must be CAPITALIZED');

if($check->spam($sender) == FALSE)
    throw new exception('Your email field contains spam.');

if($check->spam($name) == FALSE)
    throw new exception('Your name field contains spam.');

if($check->length($sender, 10) == FALSE)
    throw new exception('Your email field does not satisfy the minimum character 
count.');

if($check->length($message, 8) == FALSE)
    throw new exception('Your message field does not satisfy the minimum character 
count.');

if($check->length($name, 3) == FALSE)
    throw new exception('Your name field does not satisfy the minimum character 
count.');

mail($recipient, $subject, $message, "From: $name <$sender>" );
include 'thankyou.php';
 }catch (Exception $E){
die($E->getMessage());
}




 class check{

function captcha($field){
    if(isset($_REQUEST[$field])==FALSE){ return false; }
    if($_SESSION['pass'] != $_REQUEST[$field]){ return false; }
    return true;
}

function email($email){
    if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ return false;}
    return true;
}

function spam($field){
    if(eregi("to:",$field) || eregi("cc:",$field) || eregi("\r",$field) ||    
eregi("\n",$field) || eregi("%0A",$field)){ return false; }
    return true;
}

function length($field, $min){
    if(strlen($field) < $min){ return false; }
    return true;
}
}
?>

Ответы [ 2 ]

0 голосов
/ 26 февраля 2012

Проверка формы через AJAX небезопасна, потому что данные всегда могут быть изменены после публикации. Это означает, что вам нужно дважды проверить данные с помощью PHP.

jquery.validationEngine поддерживает все, что вы хотите. От всплывающих предупреждений до проверки AJAX и пользовательских сообщений.

0 голосов
/ 26 февраля 2012

Я предлагаю 2 вещи - либо вы AJAX-ify свою контактную форму, либо у вас есть плагин для проверки формы jQuery, чтобы он работал до вашей проверки PHP.

Вы можете найти множество сайтов, на которых представлены самые разные формы контактов. Вот один из них: http://www.freewebelements.com/jquery-contact-forms-for-better-contact/

Сохраните свою проверку PHP. Это пригодится, когда JS отключен (что, я сомневаюсь, кто-нибудь сделает это в то время, когда у нас уже есть современные браузеры), вроде как ваша сеть безопасности.

...