Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Помогине с php
цитата
10/12/14 в 21:49
 raider
суть пага
на ней инфа
ввести Email

админу высылается почта - Email и IP посетителя
на PHP
цитата
10/12/14 в 22:24
 Lexikon
если собираешь базу, то я бы порекомендовал еще писать все эти данные в файл.
что-то типа такого
Код:

<?php
header("Content-Type: text/html; charset=UTF-8");

$ip = $_SERVER["REMOTE_ADDR"];


if (@$_POST["mail"]) {
   
   //echo $_POST["mail"];
   //echo $ip;
file_put_contents("db.dat", $_POST["mail"]."|".$ip."\n", FILE_APPEND);

mail("mail@mail.mail", "Zagolovok", $_POST["mail"]."|".$ip);

}else{
   echo ('
      <form action="./form.php" method="POST">
          <div align="center">
              введите E-mail<br />
              <input type="text" name="mail" size="40"><br />
              <input type="submit" value="Отправить" name="submit">
          </div>
      </form>

         ');   
}





?>


Но это так сказать на коленке написано. Нужно еще бахнуть проверку, являются ли введенные данные E-Mail'ом + чтоб не отправляли пустую форму.
Файл куда будут дублироваться данные лучше поместить в отдельную директорию и закрыть ее от прямого доступа.
цитата
11/12/14 в 12:28
 BigBro
Гм... а санитаризировать ПОСТ-переменные от злобной школоты часом не надо? Ох уж мне этот пхп в стиле 90-х smail101.gif
цитата
11/12/14 в 12:53
 Stek
BigBro писал:
Гм... а санитаризировать ПОСТ-переменные от злобной школоты часом не надо? Ох уж мне этот пхп в стиле 90-х

А нафига ? Все равно же в текстовом формате на почту свалится.
цитата
11/12/14 в 13:02
 raider
да, в файл дублировать вполне разумно
спасибо попробую
цитата
11/12/14 в 13:12
 BigBro
Stek писал:
А нафига ? Все равно же в текстовом формате на почту свалится.

Вот когда насыпет 20к мыл с милыми месаджами "в текстовом формате" с перебором etc, pwd, JOIN и т.п. - он поймет нафигаicon_smile.gif
цитата
11/12/14 в 14:04
 raider
так что капчу надо?
цитата
11/12/14 в 14:24
 BigBro
лично мне пробивали капчу и загоняли 25к мыл за пару сек.
нужна просто нормальная защита от ввода говна
цитата
11/12/14 в 14:42
 raider
например?
цитата
11/12/14 в 14:52
 BigBro
в исходный код не вчитывался, но в целом где-то так:

<?php
header("Content-Type: text/html; charset=UTF-8");

$mailo = clearvar($_POST["mail"]);
if ($mailo != '') {

$ip = $_SERVER["REMOTE_ADDR"];     

file_put_contents("db.dat", $mailo."|".$ip."\n", FILE_APPEND);

mail("mail@mail.mail", "Zagolovok", $mailo."|".$ip);

}else{
    echo ('
       <form action="./form.php" method="POST">
           <div align="center">
               введите E-mail<br />
               <input type="text" name="mail" size="40"><br />
               <input type="submit" value="Отправить" name="submit">
           </div>
       </form>

          ');   
}


// Check variables
function clearvar($var) {
if (preg_match("/script|http|\<|\>|\(|\)|eval|SELECT|UNION|UPDATE|exe|exec|INSERT|tmp|%|\*|\+|\.\.\/|\/\/|etc|passwd|md5|security_test|file\:\/\/|sleep\(|\.\.%2|\x27|\x22|\x60/i", $var)) $var = '';
$var2 = trim(filter_var($var, FILTER_SANITIZE_SPECIAL_CHARS));
return $var2;
} //end function


?>
цитата
11/12/14 в 14:54
 Yacc
Например так

Код:
if ( ! (isset($_POST['email']) and filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)))  {
    // Invalid email
    die;
}
цитата
11/12/14 в 15:01
 BigBro
Yacc писал:
Например так

кстати да, я не посмотрел что вводится только мыло. В моем варианте фильтруются любые данные
цитата
11/12/14 в 15:41
 Stek
BigBro писал:
Вот когда насыпет 20к мыл с милыми месаджами "в текстовом формате" с перебором etc, pwd, JOIN и т.п. - он поймет нафига

Да насрать, это ведь бесплатное решение на коленке, которое тупо отсылает текст.

BigBro писал:
function clearvar($var) {
if (preg_match("/script|http|\<|\>|\(|\)|eval|SELECT|UNION|UPDATE|exe|exec|INSERT|tmp|%|\*|\+|\.\.\/|\/\/|etc|passwd|md5|security_test|file\:\/\/|sleep\(|\.\.%2|\x27|\x22|\x60/i", $var)) $var = '';
$var2 = trim(filter_var($var, FILTER_SANITIZE_SPECIAL_CHARS));
return $var2;
} //end function

А потом окажется, что то ссылка не дошла, то текст порезан, то еще что. Нафига все это мутить в примитивном скрипте то ?
цитата
11/12/14 в 16:27
 BigBro
Stek писал:
Да насрать, это ведь бесплатное решение на коленке, которое тупо отсылает текст.

Мое имхо: в любом коде 2-й строкой должна идти защита. Рядом с этим файлом на коленке может стоять 10 рабочих сайтов, базы паролей, БД и т.п. и все это пулей пойдет по песде из-за такой беспечности. Как говорит классик, преценденты были.
цитата
11/12/14 в 16:53
 Lexikon
Ну я как бы и приписал:
Lexikon писал:
Нужно еще бахнуть проверку, являются ли введенные данные E-Mail'ом

что в сущности и подразумевает защиту от всякой херни.
цитата
11/12/14 в 17:21
 Stek
BigBro писал:
Мое имхо: в любом коде 2-й строкой должна идти защита. Рядом с этим файлом на коленке может стоять 10 рабочих сайтов, базы паролей, БД и т.п. и все это пулей пойдет по песде из-за такой беспечности.


Скажи мне плиз, в чем будет проблема, если юзер получит письмо с текстом "cat /etc/passwd" , ну или этот же текст, будет записан куда то в файл, который является по сути логом. Каким образом это может повредить серверу или рядом стоящим сайтам ?
цитата
11/12/14 в 17:36
 Mika
BigBro писал:
лично мне пробивали капчу и загоняли 25к мыл за пару сек.
нужна просто нормальная защита от ввода говна

Ну каптча значит посредственная была. А использовать сервисы типа антигейта, чтобы насыпать непонятных мыл, мне представляется маловероятным событием.

BigBro писал:
Мое имхо: в любом коде 2-й строкой должна идти защита. Рядом с этим файлом на коленке может стоять 10 рабочих сайтов, базы паролей, БД и т.п. и все это пулей пойдет по песде из-за такой беспечности.

Это конечно замечательно, но еще лучше понимать что делаешь и для чего это делаешь.
цитата
14/12/14 в 02:49
 ravlio
Защиту без каптчи можно сделать на основе статистических данных кликов по элементам формы. Иными словами, человек/бот блокируется, если ведёт себя неправильно на форме/сайте. Можно даже без сбора статистики, а просто указать, в какие координаты пользователь должен кликать и с примерно какой минимальной задержкой (ну и предусмотреть нажатие на Tab, вместо мыши). Автоспамилки отсеются на 100%. Вполне сойдёт, если автор не собирается делать публичный сервис рассылки. Также подход можно совместить с каптчей.

Со стороны сервера стандартные фильтры на входящие данные, на частые запросы с одинаковых ip и так далее. ТСу, думаю, достаточно поставить просто каптчу, фильтр на ввод данных и лимит на ip.


Эта страница в полной версии