В конце главы 3 было показано, как использовать метод GET для отправки дан
ных в программу, добавляя параметры после URLадреса сценария. Тогда этот
метод применялся только для отправки значения, представляющего собой чис
ло или одно слово. Таким же образом этот процесс был дан и в предидущей главе. А что
делать, если необходимо передать несколько слов как одно значение перемен
ной?
Для таких случаев понадобится функция urlencode ( ) . Как видно из ее име
ни, функция кодирует (encode) строку для того, чтобы она была правильно пе
редана как часть URL. В частности, функция urlencode () заменяет пробелы
на знаки плюс ( + ) и преобразовывает специальные символы, например апо
строф, в более подходящие для URL знаки. Синтаксис функции выглядит сле
дующим образом:
$String = urlencode($String);
Отправим только что созданную переменную $Name в страницу, которая при
ветствует пользователя по имени и фамилии.
Использование функции urlencode
- Откройте сценарий HandleForm.php в текстовом редакторе (см. также
листинг 5.3). - После строки 14 добавьте следующее:
- Создайте новый документ с именем welcome.php. Вы можете написать код
сами, опираясь на уже изученный материал, или скопировать его из лис
тинга 5.5. - Сохраните оба сценария (листинг 5.4), загрузите их на сервер и протести
руйте в браузере (рис. 5.85.14).
$Name = urlencode($Name);
print ("<P>Click <A target="_blank" href="welcome.php?Name=$Name"> here</A> to see
—your personalized g r e e t i n g ! n " ) ;
Новая страница получит значение переменной $Name из сценария Handle
Form.php. Используя это, покажем, как можно передавать значение из одной
страницы на другую, а затем в следующую (из form.html в HandleForm.php
и в welcome.php).
Листинг 5.4 т Отметим следующее: вопервых, тэг HREF это еще один эле
мент HTML, требующий использования кавычек, которых следует избегать
в функции print ( ) , вовторых, в РНР при отправке в браузер переменная SName
будет заменена ее значением (см. рис. 5.10)
.
1 <HTML>
2 <HEAD>
3 <TITLE>Form Results/Using Strings</TITLEx/HEAD>
4 <BODY>
5 <?php
6 /* Эта страница получает и обрабатывает данные, принятые
от "form.html". */
7 $FirstName = trim($FirstName);
8 $LastName = trim($LastName);
9 $Email = trim($Email);
10 $Comments = trimf$Comments);
11 $Name = $FirstName " " . $LastName;
12 print ("Your name is $Name.<BR>n");
13 print ("Your Email address is $Email.<BR>n");
14 print ("This is what you had to say:<BR>n $Comments<BR>n");
15 $Name = urlencode($Name);
16 print ("<P>Click <A target="_blank" href="welcome.php?Name=$Name"> here</A>
to see your personalized greeting!n");
17 ?>
18 </BODY>
19 </HTML>
Листинг 5.5 т Как и наш первый сценарий «Hello, world!» (см. главу 1), стра
ница welcome.php создает простое, немного отредактированное приветствие
в браузере (рис.). Однако это приветствие персонализировано.
1 <HTML>
2 <HEAD>
3 <TITLE>Welcome!</TITLEx/HEAD>
4 <BODY>
5 <?php
6 print ("<BxCENTER>Hello, $Name . </CENTERx/B>n") ;
7 ?>
8 </BODY>
9 </HTML>
Функция urldecode ( ) выполняет действие, обратное действию urlencode ( ) :
она берет закодированную для URL строку и преобразует ее обратно в обычную
стандартную форму.’
Запомните, что значения, посланные прямо из формы, автоматически кодируют
ся в адресе URL перед отправкой и приходят в сценарий уже закодированными.
Функция urlencode ( ) используется только тогда, когда необходимо закодиро
вать данные вручную.
В главе 11 мы рассмотрим функции, очень похожие на только что рассмотренную
napcmyurlencode ( ) addslashes () и stripslashes ( ) . Первая подготавли
вает данные для ввода в базу данных, экранируя проблематичные символы (оди
нарные и двойные кавычки, обратный слеш). Вторая открывает эти самые сим
волы вновь, удаляя символ экранирования. Синтаксис выглядит следующим
образом:
$Data = addslashes($Data);
$Data = stripslashes($Data);
Как и с функцией urlencode ( ) , перекодирование символов происходит ав
томатически при получении данных из формы в сценарий. Последний выпол
няет запись полученных переменных в базу данных.