Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПБД_ЛАБ_5_2012.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
68.61 Кб
Скачать

5.1.3 Перевірка строкових полів

Нерідко виникає завдання перевірити текстове поле на відповідність певним критеріям. Наприклад, потрібно перевірити, чи містить задане текстове поле слово «РНР». У РНР є могутній механізм регулярних виразів, який дозволяє вирішувати подібні завдання. (Додаткову інформацію про регулярні вирази можна отримати, наприклад, за адресою www.php.net/manual/ru/ref.pcre.php). Поставлену задачу можна вирішити за допомогою регулярного виразу '/php/i'. Для цього використовується функція preg_match, як показано в прикладі 3.

Приклад 3. Перевірка строкового поля за допомогою регулярного виразу, рhрrеgularexpressions.php

<HTML>

<HEAD>

<ТІTLE>Використання регулярних виразів</ТIТLЕ>

</HEAD>

<BODY><CENTER>

<Н1>Використання регулярних виразів</Н1>

<?рhр

$errors = array () ;

if (isset ($_REQUEST ["seen_already"]))

{

Validate_data ();

if (count ($errors) > 0)

{

display_errors () ;

display_form ();

}

else

{

process_data ( ) ;

}

}

else

{

display_form ();

}

function validate_data ()

{

global $errors;

if (!preg_match (' /php/i' $_REQUEST ["Text" ] ) )

{

$errors [] = "<FONT COLOR='RED'>B тексті має бути слово "PHP\" </FONT>";

}

}

function display_errors ()

{

global $errors;

foreach ($errors as $err)

{

echo $err, "<BR>";

}

}

function process_data ()

{

echo "Ви сказали: ".$_REQUEST ["Text"];

}

function display_form ()

{

echo "<F0RM METH0D='POST' ACTION='phpregular_expressions.php'>";

echo "Скажіть що-небудь про PHP:";

echo "<BR>";

echo "<INPUT NAME='Text' TYPE='TEXT' >" ;

echo "<BR><BR>";

echo "<INPUT TYPE=SUBMIT VALUE= ' OK ' >" ;.

echo "<INPUT TYPE=HIDDEN NAME='seen_already' VALUE='data'>";

echo "</FORM>";

}

?>

</CENTER></BODY>

</HTML>

Якщо користувач ввів рядок, що не містить слово «РНР», то буде відображено відповідне повідомлення про помилку.

5.1.4 Видалення тегов html

При обробці введеного тексту необхідно звернути увагу на наступну деталь, особливо, якщо рядок потім планується відображати. Користувач може використовувати при наборі тексту теги HTML (у тому числі і вирази на JavaScript) що може вплинути на коректність роботи додатку при використанні цього тексту для формування сторінки. Для запобігання цієї ситуації можна використовувати функцію strip_tags, яка видаляє із заданого рядка все теги, що і продемонстроване в прикладі 4.

Приклад 4. Видалення тегов з введеного тексту, phpstrip.php

<HTML>

<HEAD>

<ТІTLE>Видалення тегов</ТIТLЕ>

</HEAD>

<BODY><CENTER>

<Н1>Видалення тегов</Н1>

<?php

$errors = array ( ) ;

if (isset ($_REQUEST ["seen_already"]))

{

Validate_data ( ) ;

if (count ($errors) > 0)

{

display_errors ( ) ;

display_form () ;

}

else

{

process_data();

}

}

else

{

display_form ();

}

function validate_data ()

{

global $errors;

if ($_REQUEST ["Name»] == "")

{

$errors[]="<F0NT COLOR='RED'>Ім’я обов'язково для введення </FОNT>";

}

}

function display_errors ()

{

global $errors;

foreach ($errors as $err)

{

echo $err. "<BR>";

}

}

function process_data()

{

echo "Ваше ім'я: " ;

$ok_text = strip_tags ($_REQUEST ["Name"]);

echo $ok_text;

}

function display_form()

{

echo "<F0RM METH0D='POST' ACTI0N='phpstrip.php'>";

echo "Введіть Ваше ім'я";

echo "<BR>";

echo "<INPUT NAME='Name' TYPE='TEXT'>";

echo"<BR><BR>";

echo "<INPUT TYPE=SUBMIT VALUE='OK'>";

echo "<INPUT TYPE=HIDDEN NAME='seen_already' VALUE='data'>";

echo "</F0RM>";

}

?>

</CENTER></BОDY>

</HTML>

Тепер, якщо користувач введе текст, який містить HTML-теги, то при формуванні сторінки теги будуть видалені, і потенційна загроза безпеці додатку буде усунена.