LinkAndrey
Member
- Регистрация
- 28.03.2011
- Сообщения
- 10
Всем доброго времени суток.
Поставил перед собой задачу создать форму подписки сохраняющую адреса в определённы файл. Но без всяких красивостей а просто правильно работающую и надёжную (чтобы нельзя было взломать и украсть файл в который заносятся адреса).
Вот что пока получилось
1) сама форма.
2) файл проверки newsprov.php и записи Email в файл mail.txt
3) А вот дальше я в стопоре так как почти не знаю Java
приведённый ниже файл использовал jquery и ajax с всплывающими картинками в зависимости от номера получаемого из файла проверки
я его почистил и добавил задачу вывода сообщений через alert заместо всплывающих картинок с текстом и вот что у меня вышло.
На данный момент основная загвостка в том что код 3 пункта не работает и при добавлении email или ошибки открывается страница с номером ошибки 1, 2 или 3.
Подскажите что надо подправить в коде 3 пункта чтобы выскакивало окошко по методу alert с соответствующим текстом.
или как можно ещё сообщить человеку об ошибке или удачном добавлении email без перезагрузки окна или открытии нового.
4)Вопрос к взломщикам... Надёжен ли код проверки? основная его задача чтобы злоумышленник не смог в итоге достать файл mail.txt с адресами подписчиков.
А если не надёжен, то где у него бреши?
Всем спасибо!
Поставил перед собой задачу создать форму подписки сохраняющую адреса в определённы файл. Но без всяких красивостей а просто правильно работающую и надёжную (чтобы нельзя было взломать и украсть файл в который заносятся адреса).
Вот что пока получилось
1) сама форма.
Код:
<form action="newsprov.php" name="newsletterForm" id="newsletterForm">
<input type="text" name="email" id="email" class="newsletterInput" value="Введите Ваш Email" onfocus="if (this.value=='Введите Ваш Email') this.value='';" onblur="if (this.value=='') this.value='Введите Ваш Email';" /><br />
<input type="submit" name="Submit" value="Подписаться" class="newsletterButton" /></form>
Код:
$newsletterFN = "mail.txt";
/*2 функции очистки поля от лишних символов и проверки его на правильность введения email*/
function GetField($input) {
$input=strip_tags($input);
$input=str_replace("<","<",$input);
$input=str_replace(">",">",$input);
$input=str_replace("#","%23",$input);
$input=str_replace("'","`",$input);
$input=str_replace(";","%3B",$input);
$input=str_replace("script","",$input);
$input=str_replace("%3c","",$input);
$input=str_replace("%3e","",$input);
$input=trim($input);
return $input;
}
function validEmail($email)
{
$isValid = true;
$atIndex = strrpos($email, "@");
if (is_bool($atIndex) && !$atIndex) {$isValid = false;}
else {$domain = substr($email, $atIndex+1);
$local = substr($email, 0, $atIndex);
$localLen = strlen($local);
$domainLen = strlen($domain);
if ($localLen < 1 || $localLen > 64) {$isValid = false;}
else if ($domainLen < 1 || $domainLen > 255) {$isValid = false;}
else if ($local[0] == '.' || $local[$localLen-1] == '.') {$isValid = false;}
else if (preg_match('/\\.\\./', $local)) {$isValid = false;}
else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain)) {$isValid = false;}
else if (preg_match('/\\.\\./', $domain)) {$isValid = false;}
else if (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',str_replace("\\\\","",$local)))
{if (!preg_match('/^"(\\\\"|[^"])+"$/',str_replace("\\\\","",$local))) {$isValid = false;} }
}
return $isValid;
}
$email = GetField($_GET['email']);
$pass = validEmail($email);
/* проверка на все соответствия и запись в файл или вывод ошибки */
if ($pass) {
$f = fopen($newsletterFN, 'a+');
$read = fread($f,filesize($newsletterFN));
if (strstr($read,"@")) {$delimiter = ";";}
if (strstr($read,$email)) {echo 3;}
else {fwrite($f, $delimiter . $email); echo 1;}
fclose($f);
}
else {echo 2;}
приведённый ниже файл использовал jquery и ajax с всплывающими картинками в зависимости от номера получаемого из файла проверки
я его почистил и добавил задачу вывода сообщений через alert заместо всплывающих картинок с текстом и вот что у меня вышло.
Код:
<script type="text/javascript">
$(document).ready(function(){
$('form#newsletterForm').bind('submit', function(e){
var email = $('input#email').val();
e.preventDefault();
$.ajax({type: 'POST', url: 'newsprov.php?email='+email, data: '', success: function(theResponse){
if (theResponse == 1) {alert("Ваш e-mail добавлен в список.");}
if (theResponse == 2) {alert("Вы не корректно ввели Email."); return false;}
if (theResponse == 3) {alert("E-mail уже добавлен в список."); return false;}
},
error: function(){alert("Произошла ошибка. Пожалуйста, попробуйте еще раз."); return false;}
});
});
});
</script>
Подскажите что надо подправить в коде 3 пункта чтобы выскакивало окошко по методу alert с соответствующим текстом.
или как можно ещё сообщить человеку об ошибке или удачном добавлении email без перезагрузки окна или открытии нового.
4)Вопрос к взломщикам... Надёжен ли код проверки? основная его задача чтобы злоумышленник не смог в итоге достать файл mail.txt с адресами подписчиков.
А если не надёжен, то где у него бреши?
Всем спасибо!