Intereting Posts
Как получить доступ к дочерним элементам iframe с родительской страницы JavaScript? Как использовать JSON с JQuery? LOAD DATA LOCAL INFILE не работает – от php, до mysql (на Amazon rds) Подтвердите отправку на внешние ссылки в WordPress PHP-почта не появляется в Gmail, но появляется в Hotmail и других сторонних / ISP-аккаунтах поиск и замена значения в массиве PHP php возвращает смешанные типы данных – хорошие или плохие «Класс XXX не является допустимым сущностью или отображенным суперклассом» после перемещения класса в файловой системе Избегайте ленивой загрузки Doctrine Symfony2 добавить активный класс для связи с sf2 и веточкой Использование PHP для удаления выбранного элемента из раскрывающегося списка, среди прочих Электронная почта с PHP в Windows Azure PHP-команда shell_exec () не работает для моего настраиваемого Java-приложения5 Функция PHP, которая получает строку cron и возвращает следующую временную метку запуска Как создать копию объекта в PHP?

PHP: запрос дублирования запросов MySQL без причины

Код ниже – это первый клиентский код, а затем файл класса.

По какой-то причине метод deductTokens () вызывается дважды, тем самым взимая двойную учетную запись. Я программировал всю ночь, поэтому мне может понадобиться вторая пара глаз:

if ($action == 'place_order') { if ($_REQUEST['unlimited'] == 200) { $license = 'extended'; } else { $license = 'standard'; } if ($photograph->isValidPhotographSize($photograph_id, $_REQUEST['size_radio'])) { $token_cost = $photograph->getTokenCost($_REQUEST['size_radio'], $_REQUEST['unlimited']); $order = new ImageOrder($_SESSION['user']['id'], $_REQUEST['size_radio'], $license, $token_cost); $order->saveOrder(); $order->deductTokens(); header('location: account.php'); } else { die("Please go back and select a valid photograph size"); } } ######CLASS CODE####### <?php include_once('database_classes.php'); class Order { protected $account_id; protected $cost; protected $license; public function __construct($account_id, $license, $cost) { $this->account_id = $account_id; $this->cost = $cost; $this->license = $license; } } class ImageOrder extends Order { protected $size; public function __construct($account_id, $size, $license, $cost) { $this->size = $size; parent::__construct($account_id, $license, $cost); } public function saveOrder() { //$db = Connect::connect(); //$account_id = $db->real_escape_string($this->account_id); //$size = $db->real_escape_string($this->size); //$license = $db->real_escape_string($this->license); //$cost = $db->real_escape_string($this->cost); } public function deductTokens() { $db = Connect::connect(); $account_id = $db->real_escape_string($this->account_id); $cost = $db->real_escape_string($this->cost); $query = "UPDATE accounts set tokens=tokens-$cost WHERE id=$account_id"; $result = $db->query($query); } } ?> 

Когда я умираю («$ query»); непосредственно после запроса, он печатает правильный оператор, и когда я запускаю этот запрос в MySQL, он работает отлично.

$ action = $ _REQUEST ['action'];

account.php – это всего лишь список заказов, поэтому он не вызывает downloads.php. Просто попробовал комментировать редирект, но у меня такая же проблема. Я не понимаю, как это вызвано дважды, операторы die отображают правильный запрос, и скрипт не перезагружает себя.

Вот мои журналы доступа apache:

 71.*** - - [22/May/2010:13:14:35 +0000] "POST /download.php?action=confirm_download&photograph_id=122 HTTP/1.1" 200 1951 "http://***.com/viewphotograph.php?photograph_id=122" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)" 71.*** - - [22/May/2010:13:14:36 +0000] "GET /download.php?action=place_order&photograph_id=122&size_radio=xsmall&unlimited=0 HTTP/1.1" 302 453 "http://*** .com/download.php?action=confirm_download&photograph_id=122" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)" 71.*** - - [22/May/2010:13:14:36 +0000] "GET /download.php?action=place_order&photograph_id=122&size_radio=xsmall&unlimited=0 HTTP/1.1" 302 453 "http://*** .com/download.php?action=confirm_download&photograph_id=122" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)" 71.*** - - [22/May/2010:13:14:36 +0000] "GET /account.php HTTP/1.1" 200 2626 "http://***.com/download.php?action=confirm_download&photograph_id=122" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)" 

Я понимаю, что здесь явно что-то не так. Но я не могу понять, откуда приходит второй запрос.

Solutions Collecting From Web of "PHP: запрос дублирования запросов MySQL без причины"

Еще один длинный снимок, но это случилось со мной однажды в Firefox – удвоенные исполнения страниц, что привело к удвоению вложений и обновлений – закройте браузер и перезапустите.

Линия:

 header('location: account.php'); 

Пересылает браузер, но не заканчивает сценарий php .
Это может быть хорошо, фрагмент кода, который вы дали, не делает «ничего» после этой строки.

Другим вариантом может быть двойной щелчок
Если вы дважды щелкните по кнопке отправки, форма будет отправлена ​​дважды.
Мы использовали javascript для отключения кнопки отправки после первого щелчка.

Я знаю, что это будет звучать странно, но убедитесь, что у вас нет тега с атрибутом src = "" или любым стилем css, ссылающимся на пустой URL-адрес (например, background: url ();) на вашем сайте по всему месту, когда у вас есть код, который выполняется дважды.

Читайте о некоторых проблемах, которые могут возникнуть здесь: http://hi.baidu.com/zhenyk/blog/item/38a1051fc63b96c3a686698f.html