2016-04-24 2 views
0

У меня есть действие в файле viewreport речь идет о билете:Блок Direct URL действия, который вставляет в БД

if(isset($_GET['closeticket']) == 'true') 

{ 

$db->query("update tickets set status='Closed' where id='$id'"); 

header("Location: viewreport?id=".$id.""); 

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

Здесь действие

a href "viewreport?closeticket=true&id= <?php echo $id;?>" class="btn btn-danger" id="">Close</a> 
+0

Вы можете прочитать о инъекции SQL, вот родственный SO вопрос: https: //stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php – chelmertz

+0

'if (isset ($ _ GET ['closeticket']) == 'true')' должно быть 'if (Исеть ($ _ GET [ 'closeticket'])) '. – v7d8dpo4

+0

1. Запретить SQL-инъекцию. 2. Используйте POST вместо этого. 3. Зависит от маркера AUTH или проверки на стороне сервера (возможно, с использованием '' _SESSION 'php'). – hjpotter92

ответ

0

Вы должны проверить, если эта операция относится к пользователю через сессии или печенье.

это должно быть что-то вроде этого

if($_SESSION["group"] == "Admin"){ 
// update operation. 
} 

Я надеюсь, что это будет полезно для вас.

0

Вы должны проверить, разрешено ли пользователю закрывать этот отчет перед выполнением.

Так что-то вроде:

if(isset($_GET['closeticket'])) 
{ 
    $userIsAllowed = true; // your magic here 
    if ($userIsAllowed) { 
     $db->query("update tickets set status='Closed' where id=" . $db->quote($id)); 
     header("Location: viewreport?id=".$id.""); 
    } else { 
     echo "You're not allowed closing this ticket"; 
    } 
} 

Убедитесь, что правильно избежать ваши запросы, как указано в комментариях (по chelmertz)

+0

Есть ли какой-либо другой способ блокировать его через htaccess? Потому что он не работает –

+0

Вы изменили '$ userIsAllowed = true; // твоя магия здесь с реальным кодом, чтобы определить, является ли текущий пользователь администратором или каким-то другим способом разрешено закрыть этот билет? –

+0

Большое спасибо за вашу помощь, я не хочу, чтобы только администратор закрывал это, потому что, если бы это было легко, но я хочу, чтобы пользователи закрывали свои собственные билеты, если захотят. Но они могут закрыть билет друг друга по url.Thats моя проблема –

Смежные вопросы