Validation form Форма за валидация


2
Здравейте, искам да попитам откъде мога да намеря код за contact form на html но трябва и да я валидирам ( да я предпазя от атаки) Няма значение за мен валидацията дали е с Javascript или Jquery важното е да работи.
Става въпрост за проста форма която изпраша име и имейл на моят имейл. Никакви пароли или други работи.
Благодаря



Отговори



3
Здравей, малко в страни от темата, но не очаквай валидация от Javascript, Jquery или който и да е client-side език. Във всеки момент човек може просто да спре или модифицира твоя код и да заобиколи всички валидации.

от Chervenkov (412 точки)


0
е добре искам само да ескайпна special character-ите и да ми го праща на пощата никакви велики работи

от Asa (0 точки)

0
Прочети отново отговора на колегата ;)

от stoyanov (2483 точки)


0

Това с което можеш да направиш една добра валидация на формата е php. С него можеш също така да изпратиш email до пощата си. Ако ще изпращаш емайл единствената валидация която ти е нужна е да провериш дали задължителните ти полета са празни и дали емайлът е валиден.

Незнам дали си учил php но да приемем, че си го учил. Първата стъпка може да бъде да си валидираш самата форма:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

Следващият пример за валидация на самите полета може да бъде

<?php
$name = "";
$email = "";
$subject = "";
$message = "";


if ($_SERVER["REQUEST_METHOD"] == "POST" && !empty($_POST["name"]) && !empty($_POST["email"] && preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $_POST["email"]))
{
  $email = validate_input($_POST["email"]);
  $name = validate_input($_POST["name "]);
  $subject = validate_input($_POST["subject "]);
  $message = validate_input($_POST["message "]);
  // Тук си пишеш кодът за изпращане на email.
}

function validate_input($data)
{
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>

Където
preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $_POST["email"])
ти е средство да видиш дали един емайл ти е валиден.

Отделни съобщения можеш да си направиш примерно
if(!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $_POST["email"]))
{
   echo "Невалиден емайл адрес";
}

 

Тези примери съм ги заимствал от тук и леко съм ги преправил:

http://www.w3schools.com/php/php_form_validation.asp

Като цяло логиката е такава: Когато имаме submit в страницата се проверява дали двете ни полета (или колкото имаш) са празни. Ако не са и двете стойности влизат в локални променливи докато минават през функция validate_input();. В нея стойностите минават през 3 проверки, за които ти сам можеш да си прочетеш и да видят какво правят.

Самото изпращане на email през php става по следният начин:

    mail($email , $subject, $message,"From: $name\n");

Надявам се да съм ти бил полезен!


от Ivan_Hristev (32 точки)


0
много благодаря, но сайта не е php а хтмл.

от Asa (0 точки)


1
Здравейте,
Имаше код на контактна форма на html (+css) в презентация за създаване на сайт, от предишен курс по Slice&Dice - вижте в архива. Има примери за подобни форми в Интернет.
(Ако говорим от Ваша страна, към презентацията за html форми, имаше дема с изискване за валидация на определени полета.)
При Вашия случай е необходим специалист по back end, който ще се грижи и за защита.
Успех,
Мария

от marias (752 точки)


0
аз пак казвам, че не ми е нужна някаква голяма защита просто ескаипване на special characters, и да го праща на имейла. Не правя правителствен сайт. Благодаря пак

от Asa (0 точки)

0
http://academy.telerik.com/student-courses/archive/web-design-html-5-css-3-javascript/resources Разгледайте демото на slice&dice и по-конкретно страница contact-us. За server-side технология в курса по php може да има примерни скриптове. Успех! Мария

от marias (752 точки)