2012-10-21 2 views
0

Можно создать дубликат:
Clean URLs for search query?удалить строку запроса формы URL с HTAccess

Я сделал PHP веб-страницу для проверки кода цвета, вот первая четыре линии

if(isset($_GET['c'])) 
$hex = $_GET['c']; 
elseif(!isset($_GET['c'])) 
$hex = $_POST['c']; 

и мой htaccess имеют:

RewriteEngine On 
RewriteRule ^([a-zA-Z0-9]{6})$ index.php?c=$1 [L] 

если я типа site.com/ffcdee успешно показать цвет #ffcdee , но если я использую поле ввода:

<form action=""> 
<input type="text" name="c" > 
<input type="submit" value="Search" id="search-submit"> 
</form> 

это показать site.com/?c=ffcdee, я пытался изменить имя ввода на другое слово, но скрипт больше не работает .. как я могу удалить? c = из URL-адреса?

+0

С перенаправлением или обновлением URL-адреса запроса на Javascript. – mario

+0

еще одна проблема: если я использую поле ввода, введите шестизначный код цвета с шестью цифрами, он может отображать цвет (/? C = F00), но если я ввожу три символа цвета шестнадцатеричного кода в URL (/ F00), он не работает. – user1727651

ответ

1

Просто используйте метод HTTP POST вместо HTTP GET:

<form action="" method="post"> 
<input type="text" name="c" > 
<input type="submit" value="Search" id="search-submit"> 
</form> 

При использовании HTTP POST запросов аргументы запроса не передаются кодированные внутри URL, вместо этого они будут переданы в качестве отдельного «тело» запрос. Содержание этого тела - это то, что вы, наконец, получили в php в качестве суперглобальной переменной $ _POST.

Если вы хотите понять, как это работает, используйте сетевой сниффер, например wireshark, чтобы сбросить трафик http. Вы увидите и поймете разницу между get и post.

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