Поиск
Кодирование и декодирование строк
В конце главы 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 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 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 ( ) , перекодирование символов происходит ав томатически при получении данных из формы в сценарий. Последний выпол няет запись полученных переменных в базу данных.