2014-02-19 2 views
0

У меня есть этот код на members.phpDetect, когда пользователь пришел с помощью PHP

<?php 
if (!isset($_SERVER['HTTP_REFERER'])){ 
header('Location: http://www.mywebsite.com/index.php') ; } 

else { 
echo "Ok"; 
} 

Я пытаюсь избегать людей получить доступ к моей members.php без перенаправления на моем домене , но если пользователь нажимает на например, ссылку из facebook ... он может получить доступ к членам .php

Как я могу заставить HTTP_REFERER проверить, перенаправляется ли он на mywebsite.com?!

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

+1

Это плохая идея, и вы не собираетесь, чтобы получить его работу так, как вы хотите , – Marty

+0

Есть лучший способ предотвратить доступ людей к членам. Php ?! Я думал, может быть, создание сеанса, но я не знаю, как –

+1

Многие смартфоны и планшеты не отправляют этот заголовок! Не используйте его! – undone

ответ

0

Существует множество причин и обстоятельств, при которых $_SERVER['HTTP_REFERER'] не имеет значения.

Вы можете «попытаться» использовать его, и если у вас есть значение, используйте его, чтобы сделать что-то.

Но если у вас есть вероятность, что он пуст или неточен, вы не должны делать что-то столь же ожесточенное, как перенаправление, если оно пустое.

т.е. Вы можете использовать его на 404 не нашли страницу попытки, чтобы увидеть, где пришел пользователь, и оттуда попытки чтобы увидеть, где они, возможно, попытались пойти/пришли, и служить им некоторые ссылки на вашем сайте, которые они могут найти полезными.

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

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

Я даже не уверен, почему вы думали, что кто-то, пришедший с другой страницы с вашего сайта, должен гарантировать им доступ к «зоне членов».
Несомненно, нет никакой реальной разницы (с точки зрения «члена»): 1) Исходя из внешнего сайта в область ваших членов, чем 2) Исходя из внешнего сайта до на странице на вашем сайте, а затем в области участников?

Вам нужно научиться использовать $ _SESSIONS, и если область участника является защищенной областью, вам также понадобится система регистрации и входа в систему.
Это зависит от того, что вы пытаетесь защитить на самом деле. Однако это выходит за рамки этого вопроса.

Если вы ищете Stack для системы входа и $ _SESSION, вы сможете получить некоторую информацию.

1

Я думаю, что вы можете использовать preg_match(), чтобы соответствовать ли перенаправлен пользователь форма Facebook или нет

 <?php 
    if(preg_match('#https?\://(?:www\.)?facebook\.com#',$_SERVER['HTTP_REFERER'])){ 

    // facebook refered user 

    } 
    else{ 

    // else part 
    } 
    ?> 
+0

Ницца ... и проверить прямой доступ из браузера? Существует способ ... этот код, который сделал, мог мне очень помочь, так как 99% - из facebook ! –

+0

Работал !! = DI думаю, что это решит мою проблему ... спасибо agaiiiinn !!! –

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