Поиск

Кодирование и декодирование строк

В конце главы 3 было показано, как использовать метод GET для отправки дан ных в программу, добавляя параметры после URLадреса сценария. Тогда этот метод применялся только для отправки значения, представляющего собой чис ло или одно слово. Таким же образом этот процесс был дан и в предидущей главе. А что делать, если необходимо передать несколько слов как одно значение перемен ной?

Для таких случаев понадобится функция urlencode ( ) . Как видно из ее име ни, функция кодирует (encode) строку для того, чтобы она была правильно пе редана как часть URL. В частности, функция urlencode () заменяет пробелы на знаки плюс ( + ) и преобразовывает специальные символы, например апо строф, в более подходящие для URL знаки. Синтаксис функции выглядит сле дующим образом:

$String = urlencode($String);

Отправим только что созданную переменную $Name в страницу, которая при ветствует пользователя по имени и фамилии. Использование функции urlencode

  1. Откройте сценарий HandleForm.php в текстовом редакторе (см. также листинг 5.3).
  2. После строки 14 добавьте следующее:
  3. $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 " ) ;
  4. Создайте новый документ с именем welcome.php. Вы можете написать код сами, опираясь на уже изученный материал, или скопировать его из лис тинга 5.5.
  5. Новая страница получит значение переменной $Name из сценария Handle Form.php. Используя это, покажем, как можно передавать значение из одной страницы на другую, а затем в следующую (из form.html в HandleForm.php и в welcome.php).

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