2013-05-20 3 views
0

У меня есть form.php которым действие вызов sql.php файл как:Предотвратить прямой доступ к форме действий

SQL.PHP

if ($_REQUEST['action'] == "add") { 
} 
if ($_REQUEST['action'] == "edit") { 
} 

Я хотел, чтобы предотвратить прямой доступ, так как пользователь может звонок из браузера URL: http://sql.php?action=add Один из способов - проверить, есть ли подача. Кажется, хорошо работает.

if(isset($_POST['Submit']) && ($_POST['Submit'] == "Submit")) 
{ 
echo "direct access not allowed"; 
} 

Есть лучшие альтернативы?

+3

Вы не можете помешать этому – zerkms

+1

Легкий ответ: добавьте жетоны к вашей форме. – Class

+0

Привет, класс, Как добавить токен, есть ли у вас ссылка или пример? – user2307958

ответ

0

Используйте массив $_SERVER['HTTP_REFERER'], чтобы определить, имеет ли кто-то доступ к вашей странице напрямую, введя его в браузере или на другой странице, используя ссылки со страницы.

Итак, в основном.

if($_SERVER['HTTP_REFERER'] == 'about.php'){ 
//let user do something 
} 

Таким образом, информация $_SERVER['HTTP_REFERER'] глобальных магазинов страниц вы посещаете, и если вы разместите эхо этого кода, на странице, она расскажет вам, какие страницы ваши едет с. что если вы только набрали страницу и получите доступ к ней, она даст значение 0/false.

Таким образом, вы можете использовать его для определения того, кто-то непосредственно печатает страницу или отправляется с одной из ваших страниц.


Как уже указывали другие, использование токенов и сеансов было бы лучшей идеей, поскольку этот метод можно манипулировать. Итак, я рекомендую вам вывести их на сайт

+0

. быть подделанным. – j08691

+0

@ j08691 Я тоже мог бы рекомендовать ему сеансы, но для новичков это было бы основным/хорошим выбором. но, я брошу упоминание сессий –

0

Это должно быть if(!isset($_POST['Submit']). Также, если вы используете method="POST", он не бросает ваши параметры, как ?action=add в браузере. method="GET".

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