2016-09-24 3 views
1

Я пишу PHP-код для моей веб-страницы для хостинга.
Я создаю домен поиска, заполненный на странице с помощью $ _GET, чтобы проверить, доступен ли домен. Мне нужно защитить функцию $ GET в коде.

код $ GET для процесса поиска домена:

if(isset($_GET['search'])){ 
$domena = ($_GET['search']); 
} 

HTML КОД
У меня есть кнопка отправки с действием FORM POST, и я получаю URL:

www.domain.com/index.php?search=domain.com

Мне нужно знать, могу ли я скрыть URL-адрес search=domain.com

Примечание - я не хочу используйте AJAX или другой язык, просто PHP.

ответ

2

Если вы хотите скрыть параметр поиска, отправьте его методом POST и примите его значением $ _POST вместо $ _GET.

if(isset($_POST['search'])){ 
    $domena = ($_POST['search']); 
} 
+0

С риском звучать придирчиво, используя POST вместо этого не «скрывает» параметр поиска, он либо не работает с использованием POST, либо если они все еще используют ссылку где-то, который устанавливает параметр, то он будет отображаться в URL;) – James

2

Вы подумали об использовании метода $ _POST? Данные, отправленные пользователем, будут в HTTP-запросе, а не в URL-адресе. Метод $ _GET будет размещен в URL-адресе.

Mozilla отлично справляется с работой this.

Обязательно укажите способ $ _POST в вашей форме. Например:

<form action="http://foo.com" method="post"> 
    <input name="say" value="Hi"> 
    <input name="to" value="Mom"> 
    <button>Send my greetings</button> 
</form> 

Затем восстановить ваши данные, использовать один и тот же код размещен в вашем вопросе, но изменить $ _GET на $ _POST

-1

Чтобы ответить вам прямо, нет, вы не можете скрыть URL с помощью PHP.

Другой подход и использование $ GET (и не изменение $ POST) - это установить параметр GET на сеанс, а затем перенаправить.

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

Возможно, есть живая ссылка где-то уже задающая параметр поиска, и поэтому вам нужно продолжать использовать $ GET, я не знаю. Если нет причин, вам нужно продолжать использовать $ GET, тогда других ответов с использованием $ POST хватит.

Так, например (код не тестировался)

<?php 

if (isset($_GET['search'])) { 
    $_SESSION['someUniqueRelevantName']['search'] = $_GET['search']; 
    header("Location: www.domain.com/index.php"); 
    exit; 
} 

if (isset($_SESSION['someUniqueRelevantName']['search'])) { 
    // Do your thing with the search query 
} 

Вам может понадобиться session_start(), не уверены, что если вы уже используете его в другом месте и т.д.

Кроме того, это старый способ обработки вещей и звуков как вам нужен общий более структурированный подход для обработки данных формы.Но это была бы работа еще на один день :)

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