Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Защита запроса к базе данных
 
 автор: chom   (23.08.2007 в 18:51)   письмо автору
 
 

вот такой вопрос:
значит, существует запрос к бд
$querr = db_query($con, "insert into konkurs (clients, tipe, links, op, day, month, year, otv, rez) values ('".$_POST['clients']."', '".$_POST['tipe']."', '".$_POST['links']."', '".$_POST['op']."', '".$_POST['day']."', '".$_POST['month']."', '".$_POST['year']."', '".$_POST['otv']."', '".$_POST['rez']."')");

он записывает данные из переменных $clients, $tipe,$links ... в соответствующие поля в таблице clients, tipe, links..., но запись происходит не тока при нажатии на кнопку "записать", но и при заходе на страницу и при обновлениии (F5). Как это можно исправить?

   
 
 автор: hugi   (23.08.2007 в 18:58)   письмо автору
 
   для: chom   (23.08.2007 в 18:51)
 

попробуй перeнаправить с неё после запроса. Можно переменую в сесии завести, после первого запроса ставим 1, потом надо где-нибудь обнулить, тогда если переменная ноль делаем запрос, если 1 то не делаем.

   
 
 автор: aexb   (23.08.2007 в 19:18)   письмо автору
 
   для: chom   (23.08.2007 в 18:51)
 

ну да, или куку кинуть с определяющей переменной

   
 
 автор: KEPZ   (24.08.2007 в 02:25)   письмо автору
 
   для: aexb   (23.08.2007 в 19:18)
 

делай header

   
 
 автор: minas   (24.08.2007 в 04:39)   письмо автору
 
   для: chom   (23.08.2007 в 18:51)
 

if (isset($_POST['имя_кнопки'])) {
$querr = db_query($con, "insert into konkurs (clients, tipe, links, op, day, month, year, otv, rez) values ('".$_POST['clients']."', '".$_POST['tipe']."', '".$_POST['links']."', '".$_POST['op']."', '".$_POST['day']."', '".$_POST['month']."', '".$_POST['year']."', '".$_POST['otv']."', '".$_POST['rez']."')");
}

Если кнопка была нажата, то выполнить запрос

   
 
 автор: chom   (24.08.2007 в 08:59)   письмо автору
 
   для: minas   (24.08.2007 в 04:39)
 

Все равно при обновлении страницы (F5), данные ранее введенные в форму заносятся в базу, хотя формы пусты, а браузер говорит, что в формах находится информация и если обновить страницу то запрос повторится. Может есть какойто способ очистить формы?

   
 
 автор: Faraon   (24.08.2007 в 09:20)   письмо автору
 
   для: chom   (24.08.2007 в 08:59)
 

Сделайте редирект на другую страницу, после запроса.
К примеру

Header("Location: insert_snx.php");

   
 
 автор: chom   (24.08.2007 в 09:29)   письмо автору
 
   для: Faraon   (24.08.2007 в 09:20)
 

Что значит редирект? Я понимаю это так, что после нажатия на кнопку "отправить" будет открыта другая страница.?

   
 
 автор: Faraon   (24.08.2007 в 09:34)   письмо автору
 
   для: chom   (24.08.2007 в 09:29)
 

>что после нажатия на кнопку "отправить" будет открыта другая страница.?
Будет выполнен запрос, и переход на страницу благодарности или еще какую-нибудь

   
 
 автор: chom   (24.08.2007 в 09:44)   письмо автору
 
   для: Faraon   (24.08.2007 в 09:34)
 

ок. а после нажатия на F5?

   
 
 автор: Faraon   (24.08.2007 в 09:48)   письмо автору
 
   для: chom   (24.08.2007 в 09:44)
 

обновится только страница на которую был сделан редирект, сбросятся все переменные отправленные раньше, и повторного добавления в БД не будет

   
 
 автор: chom   (24.08.2007 в 14:52)   письмо автору
 
   для: Faraon   (24.08.2007 в 09:48)
 

У меня страничка выглядит так: сверху формы для ввода информации в базу и кнопка, а снизу табличка в которой отображается вся информация из базы, т.е. при нажатии на кнопку отправить в табличке сразу появляется новая строка. Как можно сделать что бы не появлялась другая страница, или появлялась только на некоторое время, а потом снова возвращалась на страницу с таблицей?

   
 
 автор: Faraon   (24.08.2007 в 15:08)   письмо автору
 
   для: chom   (24.08.2007 в 14:52)
 

Ну так и делайте редирект на эту же страницу
Отправленные переменные сбросятся
и при обновлении не будет повторной отправки данных

   
 
 автор: chom   (24.08.2007 в 15:23)   письмо автору
 
   для: Faraon   (24.08.2007 в 15:08)
 

Спасибо, все отлично работает! =) Привел к такому виду:

if (!empty($_POST['boot'])) {
        header("Location: http://int.ru/konkurs.php");
    }

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования