проверить входной источник в php - PullRequest
0 голосов
/ 19 ноября 2011

У меня есть ссылка на странице, которая открывает форму контакта в модальном окне.

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

Заранее спасибо!

Ответы [ 4 ]

0 голосов
/ 19 ноября 2011

Вы можете отправить переменную с таким значением, как

<a href="contact.php?co=true">Contact Me</a>

и в модальной тестовой погоде она установит или нет

if(isset($_GET['co'])):
//show the form 
else:
//redirect
endif; 

, или вы можете использовать jquery, чтобы выбрать эту ссылку и отправитьпеременная, размещенная с таким значением, как

<a href="contact.php" class="contact">Contact Me</a>
$('.contact').click(function(){
 $.post( 'contact.php', { direct: 'no'},function()
{
//call modal from here 
}
);
}); 

, затем проверьте, если прямое = нет

if($_POST['direct'] == 'no'):
//show the form
else:
//redirect
endif;

и решение jquery более надежно. Извините, я ошибся

0 голосов
/ 19 ноября 2011

Вы можете проверить заголовок $_SERVER['X_HTTP_REQUESTED_WITH'], который будет xmlhttprequest всякий раз, когда это ajax-запрос

0 голосов
/ 19 ноября 2011

Иметь форму со скрытым полем, содержащим токен, и проверять этот токен в сеансе при обратной передаче.

0 голосов
/ 19 ноября 2011

Вы можете использовать реферальный URL (вы можете получить доступ к этому URL в PHP, используя $_SERVER["HTTP_REFERER"]), но вы не можете на него полагаться.Во-первых, потому что его можно изменить с помощью очень простого сценария, а во-вторых, потому что это поле не всегда заполнено.

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

...