2012-04-07 4 views
1

Я использую код для формы, которая перенаправляет пользователя на основе ввода формы. Я получил его отсюда:Изменение ввода формы на нижний регистр

php - How do I redirect a user based on their form input?

форме:

<form action="index.php" method="get"> 
<input type="text" name="q" /> 
<input type="submit" /> 
</form> 

index.php

header("Location: http://example.com/browse/".$_GET['q']); 

Проблема у меня есть, когда пользователь с помощью CAPS LOCK, он не перенаправляет их.

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

ответ

2

Вы можете также URL-кодирование запроса, из-за символов как "#" или ":", которые имеют особое значение/функции для веб-браузеров. Таким образом, это не нарушит вашу навигацию, если пользователь использовал эти символы.

Ссылка: Php Doc - urlencode()

header("Location: http://example.com/browse/". urlencode($_GET['q'])); 

сочетая это с ответом Марка Б выше, это приведет к:

header("Location: http://example.com/browse/". urlencode(strtolower($_GET['q']))); 

Чтобы устранить оригинал нижнего накладной введенный пользователя на следующих страницах, просто использование urldecode():

Код: Php Doc - urldecode()

// original lower-cased query 
$original_query = urldecode($path); 
+0

Спасибо за это! Я не знал, что эти персонажи могут сломать форму. Да, сейчас он отлично работает. – user990175

+0

Одна вещь, которую я замечаю, заключается в том, что она не распознает пробелы. Если я набираю два слова с пробелом между ними, и у меня есть файл с тем же именем в каталоге «просмотр», он не перенаправляется на него. – user990175

1

strtolower():

header("Location: http://example.com/browse/". strtolower($_GET['q'])); 
+0

Отлично, спасибо за быстрый ответ! – user990175

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