Спустя 23 минуты, 12 секунд (20.08.2009 - 17:59) Gabriel написал(а):
редиректы и можеш посмотреть еше такой способ
Спустя 2 часа, 22 минуты, 55 секунд (20.08.2009 - 20:22) ANG3 написал(а):
Капчу ставь. CAPTCHA.ru

Спустя 51 минута (20.08.2009 - 21:13) FatCat написал(а):
PHP |
function create_guest_session() { |
Спустя 15 минут, 46 секунд (20.08.2009 - 21:29) Nikitian написал(а):
После добавления данных в базу делайте редирект на какую-либо другую страницу, либо на эту же, но с параметрами, запрещающими добавление данных.
PHP |
header('Location: /'); |
Спустя 3 часа, 33 минуты, 52 секунды (21.08.2009 - 01:02) FatCat написал(а):
Цитата (Nikitian @ 20.08.2009 - 22:29) |
После добавления данных в базу делайте редирект на какую-либо другую страницу |
Зачем лишние перемещения пользователя? Опять же, поисковки редиректные страницы считают ошибками.
Поэтому я предложил привязать сессии к айпишникам. При запросе страницы айпишник проверяется на наличие в текущих сессиях. Если присутствует - апдейтится имеющаяся сессия. И лишь если айпишник новый, создается новая сессия.
Дополнительные плюсы:
1. Выставив время жизни сессии в 24 часа мы автоматически получаем статистику абсолютных юников за сутки. Очень полезная информация.
2. В сессии хранится время последнего апдейта (в моем примере это running_time), по разнице с текущим можно увидеть интервал времени между запросами страниц; чрезвычайно полезная информация для выявления и блокировки парсеров контента и прочих дерьмоботов.
Зарегистрированным же пользователям привязку делать конечно же не к айпишнику, а к айдишнику пользователя.
Спустя 9 часов, 12 минут, 54 секунды (21.08.2009 - 10:15) Nikitian написал(а):
Поисковики не заполняют и не ходят по формам. А данные в базу в 90% случаев записываются через отправку формы.
Спустя 22 минуты, 43 секунды (21.08.2009 - 10:38) FatCat написал(а):
Nikitian
Согласен. Для отправки информации пользователем лучше пользовать редирект.
Согласен. Для отправки информации пользователем лучше пользовать редирект.
Спустя 3 дня, 11 часов, 32 минуты, 9 секунд (24.08.2009 - 22:10) S{oRpiO написал(а):
на самом деле это было нужно для админки
все остальные формы отправляются сразу на почту компании
все остальные формы отправляются сразу на почту компании
Спустя 9 месяцев, 12 часов, 25 минут, 41 секунда (25.05.2010 - 10:36) Sender написал(а):
Защита через Java , (извините) я считаю бредом.
Вот что я придумал месяц назад для своей гостевой.
Метод будет работать если
1.используется PHP,
2. скрипт формы и скрипт "обработки формы" - 2 разных файла (ну или разные $_GET запросы)
Основан на сессиях:
Не забудьте поставить
Кому помогло, ставим мне плюсик в карме
Вот что я придумал месяц назад для своей гостевой.
Метод будет работать если
1.используется PHP,
2. скрипт формы и скрипт "обработки формы" - 2 разных файла (ну или разные $_GET запросы)
Основан на сессиях:
<?
/*в скрипт с Вашей формой: */
$_SESSION['otpravleno'] = "net";
?>
<?
/*в скрипте который обрабатывает полученные данные формы:*/
if(!isset($_SESSION['otpravleno'])) { exit(); }
if(isset($_SESSION['otpravleno'])) { $otpravleno = $_SESSION['otpravleno']; if($otpravleno == "da"){
echo "Вы уже заполнили эту форму !"; exit(); } }
$_SESSION['otpravleno'] = "da";
?>
Не забудьте поставить
session_start();в верху каждого скрипта где используются сессии.
Кому помогло, ставим мне плюсик в карме

Спустя 12 минут, 41 секунда (25.05.2010 - 10:49) waldicom написал(а):
Цитата (Sender @ 25.05.2010 - 09:36) |
Кому помогло, ставим мне плюсик в карме |
А кому нет?
Что делать тому, кто не понял, для чего нужны условия (скрипт формы и скрипт "обработки формы" - 2 разных файла (ну или разные $_GET запросы)), для чего нужны сессии и почему не использовать всего один оператор вместо всего того, что Вы написали?
Спустя 15 минут, 21 секунда (25.05.2010 - 11:04) Sender написал(а):
скрипт формы это =
Например файл comment.php
скрипт "обработки формы" в данном случае - выше означенный файл write_message.php
PS 2 waldicom, если Вы можете предложить чтото лучше - давайте. На данный момент, я доволен своим скриптом.
Например файл comment.php
<form name="moyaforma" method="post" action="write_message.php">
<b>Ваше имя: </b>
<br><input type="text" name="username" size="40" maxlength="20"> <br><br><b>Сообщение:</b><br>
<textarea name="usertext" cols="70" rows="5" ></textarea><br>
<input type="submit" value="Отправить">
<input type="reset" value="Очистить">
</form>
Сюда надо вставить <? $_SESSION['otpravleno'] = "net"; ?>
скрипт "обработки формы" в данном случае - выше означенный файл write_message.php
<? /* файл write_message.php */
if(!isset($_SESSION['otpravleno'])) { exit(); }
if(isset($_SESSION['otpravleno'])) { $otpravleno = $_SESSION['otpravleno']; if($otpravleno == "da"){
echo "Вы уже заполнили эту форму !"; exit(); } }
$_SESSION['otpravleno'] = "da";
/* если всё1 нормально, то добавление записи в гостевую продолжится */
$username = $_POST['username'];
$usertext = $_POST['usertext'];
ну и так далее..
?>
PS 2 waldicom, если Вы можете предложить чтото лучше - давайте. На данный момент, я доволен своим скриптом.
Спустя 4 минуты, 56 секунд (25.05.2010 - 11:09) waldicom написал(а):
Не надо кричать, я прекрасно слышу.
Во-первых, С КАКОГО ПЕРЕПУГУ я должен использовать два разных файла, когда все прогрессивное человечесвто использует один?
Во-вторых, нахрена тут сессии?
Во-первых, С КАКОГО ПЕРЕПУГУ я должен использовать два разных файла, когда все прогрессивное человечесвто использует один?
Во-вторых, нахрена тут сессии?
Спустя 2 минуты, 21 секунда (25.05.2010 - 11:11) Basili4 написал(а):
Sender
а header("Location:"); Вы не используете по религиозным причинам ????????
а header("Location:"); Вы не используете по религиозным причинам ????????
Спустя 3 минуты, 6 секунд (25.05.2010 - 11:14) Sender написал(а):
Цитата (waldicom @ 25.05.2010 - 08:09) |
Не надо кричать, я прекрасно слышу. Во-первых, С КАКОГО ПЕРЕПУГУ я должен использовать два разных файла, когда все прогрессивное человечесвто использует один? Во-вторых, нахрена тут сессии? |
Я не использовал капс лок, и не раздражён. Я спокоен.
1. Почему 2 файла ? Для того чтобы было понятно. Кто хочет использовать один файл ( у меня на сайте тоже 1 файл ) пускай учится как пользоватся переменной $_GET
2. Сессии не принципиально, можно использовать и куки. Дело вкуса

>> а header("Location:"); Вы не используете по религиозным причинам ????????
da
Спустя 4 минуты, 12 секунд (25.05.2010 - 11:18) waldicom написал(а):
Цитата (Sender @ 25.05.2010 - 10:14) |
>> а header("Location:"); Вы не используете по религиозным причинам ???????? da |
Может объясните, почему? Вроде нормальный способ...
Спустя 3 минуты, 26 секунд (25.05.2010 - 11:22) Basili4 написал(а):
Sender
Цитата (Basili4 @ 25.05.2010 - 08:11) |
Сессии не принципиально, можно использовать и куки. Дело вкуса |
Куки мммммммм.
Цитата (Basili4 @ 25.05.2010 - 08:11) |
( у меня на сайте тоже 1 файл ) |
А как зовут ваш сайт Я тут навскидку придумал способ забить вашу базу. если вы для проверок используете куки.
Спустя 4 минуты, 54 секунды (25.05.2010 - 11:27) zarafar написал(а):
Цитата |
А как зовут ваш сайт Я тут навскидку придумал способ забить вашу базу. если вы для проверок используете куки. |
Basili4 если я ничего не путаю, то тема называется не "Защита от ботов", а "Защита от F5"

Спустя 3 минуты, 28 секунд (25.05.2010 - 11:30) Basili4 написал(а):
waldicom
Незнал наверно посему велоспиеды и городил.
Сессию захламлял куками пользоватся предлагал.
Он бы еще сылбы оставлял а js нажимал её. Или вообще пользователя просил Будте так любезны нажмите сюда а то при обновлении страницы в базу еще раз запись попадет
Незнал наверно посему велоспиеды и городил.
Сессию захламлял куками пользоватся предлагал.
Он бы еще сылбы оставлял а js нажимал её. Или вообще пользователя просил Будте так любезны нажмите сюда а то при обновлении страницы в базу еще раз запись попадет

Спустя 2 минуты, 33 секунды (25.05.2010 - 11:33) Basili4 написал(а):
zarafar
Я совершено не против. Но любая оплошность типа как использовать в приведеном выше примере способна принести очень много бед. Я лишь хотел подчеркуть этот факт.
Я совершено не против. Но любая оплошность типа как использовать в приведеном выше примере способна принести очень много бед. Я лишь хотел подчеркуть этот факт.
Спустя 17 минут, 19 секунд (25.05.2010 - 11:50) Sender написал(а):
Для проверок использую только сессии. (весь сайт на них). Ссылку на сайт могу дать в ЛС.
Я изначально привёл пример на сессиях, так как с куками НЕ очень хорошо знаком, но так как Вы "засыпали" вопросами то я растерявшись, сказал что можно использовать и куки.
Теперь отвечу почему именно сессии:
Сама сессия (файл сессии с данными) хранится на сервере.
потому у клиента хранится только ID сессии, и всё что хранится в сессиях пользователь не может изменить сам (в отличии от кук).
header("Location:"); - можно использовать только если нету вверху <html> ( а у меня он есть )
http://php.net/manual/en/function.header.php
Поэтому, у меня так:
если коммент удачно добавился, то пишет, мол "Ваш коментарий успешно добавлен". и хтмл-овский рефреш на comment.php
В противном случае, пишет адекватную ошибку (заранее предусмотреную, а не php ошибку)
Я изначально привёл пример на сессиях, так как с куками НЕ очень хорошо знаком, но так как Вы "засыпали" вопросами то я растерявшись, сказал что можно использовать и куки.
Теперь отвечу почему именно сессии:
Сама сессия (файл сессии с данными) хранится на сервере.
потому у клиента хранится только ID сессии, и всё что хранится в сессиях пользователь не может изменить сам (в отличии от кук).
header("Location:"); - можно использовать только если нету вверху <html> ( а у меня он есть )
http://php.net/manual/en/function.header.php
Поэтому, у меня так:
если коммент удачно добавился, то пишет, мол "Ваш коментарий успешно добавлен". и хтмл-овский рефреш на comment.php
В противном случае, пишет адекватную ошибку (заранее предусмотреную, а не php ошибку)
Спустя 8 минут, 1 секунда (25.05.2010 - 11:58) Basili4 написал(а):
Дружище а ты Колумб. Я спецально для тебя отруою тайну
<? А тут insert в таблу ?>
И все проблемы за борт. Через 10 секунд совершится чудо переход на страницу
http://www.mysite/index.html На кой сесии лепить ????????
<? А тут insert в таблу ?>
<html>
<meta http-equiv="Refresh" content="10; URL=http://www.mysite/index.html">
<H1>Ваша запись обновлена </H1>
</html>
И все проблемы за борт. Через 10 секунд совершится чудо переход на страницу
http://www.mysite/index.html На кой сесии лепить ????????
Спустя 5 минут, 55 секунд (25.05.2010 - 12:04) Sender написал(а):
Цитата (Sender @ 25.05.2010 - 08:50) |
и хтмл-овский рефреш на comment.php |
Цитата (Basili4 @ 25.05.2010 - 08:58) |
<meta http-equiv="Refresh" content="10; URL=http://www.mysite/index.html"> |
Спустя 3 минуты, 31 секунда (25.05.2010 - 12:08) Basili4 написал(а):
Sender
Я тебе грю что надо не на comment.php сылатся который судя по всему коммент добовляет а сначала доболять а потом выводить сообщение и переходить.
Так мне кажется логичней а если не вставится запись ??????
Я тебе грю что надо не на comment.php сылатся который судя по всему коммент добовляет а сначала доболять а потом выводить сообщение и переходить.
Так мне кажется логичней а если не вставится запись ??????
Спустя 22 минуты, 32 секунды (25.05.2010 - 12:30) Sender написал(а):
Отвечаю в этой теме сегодня последний раз.
Раз интересно как у меня устроено:
Файл comment.php вся гостевая тут.
comment.php?addmessage добавление сообщения.
Порядок исполнения скрипта comment.php?addmessage ( он расположен вверху файла )
если чтото не устраивает то выводим сабж в чём дело и exit();
1. если айпи пользователя забанен то сабж и exit();
2. Проверка капчи
3. проверка на F5
4. разные проверки защиты
5. добавление комментария
6. Сообщение об успешном добавление коментария и хтмл рефреш
7. конечные теги хтмл
8. <? exit(); ?>
Раз интересно как у меня устроено:
Файл comment.php вся гостевая тут.
comment.php?addmessage добавление сообщения.
Порядок исполнения скрипта comment.php?addmessage ( он расположен вверху файла )
если чтото не устраивает то выводим сабж в чём дело и exit();
1. если айпи пользователя забанен то сабж и exit();
2. Проверка капчи
3. проверка на F5
4. разные проверки защиты
5. добавление комментария
6. Сообщение об успешном добавление коментария и хтмл рефреш
7. конечные теги хтмл
8. <? exit(); ?>
Спустя 1 час, 56 минут, 1 секунда (25.05.2010 - 14:26) twin написал(а):
exit в боевом скрипте юзеру... Да Вы, батенька, гурман...
Потом,
Потом,
Цитата |
потому у клиента хранится только ID сессии, и всё что хранится в сессиях пользователь не может изменить сам (в отличии от кук). |
я бы не был столь категоричным в выводах. Кроме того, это лишняя нагрузка.
Это тоже не факт, хотя больше говорит о неверной компановке скрипта.
header("Location:"); - можно использовать только если нету вверху <html> ( а у меня он есть )
Это тоже не факт, хотя больше говорит о неверной компановке скрипта.
Цитата |
В противном случае, пишет адекватную ошибку (заранее предусмотреную, а не php ошибку) |
А данные в форму возвращаются? Если что то случилось, мне сообщение придется переписывать заново?
Стоит все-таки прислушаться к советам, ведь дело говорят.
Спустя 2 года, 23 дня, 19 часов, 38 минут, 55 секунд (19.06.2012 - 10:05) Игорь_Vasinsky написал(а):
Цитата |
А данные в форму возвращаются? Если что то случилось, мне сообщение придется переписывать заново? |
ну хром например в истории хранит данные
а так
<input type="text" value="<?=isset($_POST['text']) ? $_POST['text'] : null;?>">
Спустя 1 час, 2 минуты, 22 секунды (19.06.2012 - 11:07) twin написал(а):
Хром с его шпионскими наклонностями фтопку.)))
А вопрос надо читать, прежде чем некроманией заниматься.
А вопрос надо читать, прежде чем некроманией заниматься.
Цитата |
Порядок исполнения скрипта comment.php?addmessage ( он расположен вверху файла ) если чтото не устраивает то выводим сабж в чём дело и exit(); |
Спустя 1 час, 13 минут, 53 секунды (19.06.2012 - 12:21) Игорь_Vasinsky написал(а):
Свернутый текст
Цитата |
Хром с его шпионскими наклонностями фтопку.))) |
если в не авторизовываться в google сервисах - в нём ничё страшного нет, а так да - я был удивлён, придя на работу и увидеть все приложения и все закладки, которые есть на домашнем хроме.
Спустя 3 часа, 12 минут, 43 секунды (19.06.2012 - 15:34) killer8080 написал(а):
Игорь_Vasinsky
Во раскопал
Кстати, почему то никто не вспомнил о защите от CSRF атак
Во раскопал

Кстати, почему то никто не вспомнил о защите от CSRF атак
