Как устранить ошибку при перенаправлении с одной страницы на другую в zen-cart
Я хочу обновить значение базы данных при изменении параметров в раскрывающемся списке. После обновления Ctrl перенаправляет обратно на страницу заказов. Сейчас обновление работает правильно, но не может вернуться на страницу заказов. Я использую следующий код для этого.
код в orders.php
<select name="order_status" onchange="update(this.value,<?php echo $row['orders_id'];?>)">
<option value="1" <?php if($row['orders_status']=='1'){ ?>selected="selected"<?php } ?>>In process</option>
<option value="2"<?php if($row['orders_status']=='2'){ ?>selected="selected"<?php } ?>>Processed</option>
<option value="3"<?php if($row['orders_status']=='3'){ ?>selected="selected"<?php } ?>>Dispatched</option>
</select>
<script>
function update(vals,order){
window.location="index.php?main_page=orders&val="+vals+"&id="+order;
}
</script>
<?php
if(($_REQUEST['id']) && ($_REQUEST['val'])){
$manufacturers = $db->Execute("update orders set orders_status = '{$_REQUEST['val']}'
where orders_id ='{$_REQUEST['id']}'");
if($manufacturers == '1'){
zen_redirect(zen_href_link('orders', '', $request_type));
}
}
?>
1 ответ
В вашем коде есть несколько проблем:
В вашем коде есть серьезные уязвимости SQL-инъекций. Вам необходимо очистить ваши входные данные перед использованием их в запросе к базе данных. Если кто-то обнаружит вашу страницу и попытается использовать мошеннические данные, он может нанести СЕРЬЕЗНЫЙ ущерб вашей базе данных.
Вы не можете использовать объект базы данных в качестве операнда при сравнении со строковым значением.
if($manufacturers == '1'){ zen_redirect(zen_href_link('orders', '', $request_type)); }
Возможно, вы могли бы заменить это только строкой zen_redirect без оператора if(), так как вы будете выполнять перенаправление независимо от этого.
- И еще одна проблема - почему вы выполняете задачи административного обновления на страницах витрин, которые изначально не имеют прав администратора.