Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Обработка массива
 
 автор: ChieFSS   (10.11.2006 в 15:03)   письмо автору
 
 

Имеется форма для отправки данных в БД.
Форма содержит поля title, logo, email
Я хотел сделать проверку этих полей substr, htmlspecialchar и stripslashes, но если у меня потом этих полей будет много, то очень большой код будет. Можно ли эти переменные определить в одном массиве и весь массив обработать этими функциями?

Можно сделать специальную функцию чтобы она проверяла переданые данные?

Какая функция удаляет пробелы вначале и в конце строки?

   
 
 автор: Саня   (10.11.2006 в 15:16)   письмо автору
 
   для: ChieFSS   (10.11.2006 в 15:03)
 

1) можно
2) можно
3) trim()

   
 
 автор: ChieFSS   (10.11.2006 в 15:23)   письмо автору
 
   для: Саня   (10.11.2006 в 15:16)
 

Долго думал как.. ниче не получилось :(

   
 
 автор: Yakor   (10.11.2006 в 15:29)   письмо автору
 
   для: ChieFSS   (10.11.2006 в 15:23)
 

можно пройти весь масиив $_GET[] через цикл проверяя каждый элемент объединенной функцией (substr, htmlspecialchar и stripslashes).. только вот.... substr ... не все же одинаково обрезать...

   
 
 автор: ChieFSS   (10.11.2006 в 15:39)   письмо автору
 
   для: Yakor   (10.11.2006 в 15:29)
 

А можно по подробней? Что значит объединённой?
У меня через post передается

Цикл должен быть такой:


while ($title or $logo or $email) {
$_POST[]
}


чёто не то.. не понимаю =\
тогда будет проще написать для каждой переменной или я чегото недопонимаю?

   
 
 автор: Yakor   (10.11.2006 в 15:41)   письмо автору
 
   для: ChieFSS   (10.11.2006 в 15:39)
 

тов. Unkind ниже уже все написал :)

   
 
 автор: Саня   (10.11.2006 в 15:44)   письмо автору
 
   для: ChieFSS   (10.11.2006 в 15:23)
 

<?
foreach ( $_POST as $key => $val ) {
  
$_POST[$key] = substr(020trim($val));
}

   
 
 автор: Unkind   (10.11.2006 в 15:33)   письмо автору
 
   для: ChieFSS   (10.11.2006 в 15:03)
 


<?php
function check($variable$length 100)
{
$variable trim(htmlspecialchars($variable));
$variable substr($variable0intval($length));
if(!
get_magic_quotes_gpc()) $variable mysql_escape_string($variable);
return 
$variable;
}

$array = array();
$array[] = $_POST['title'];
$array[] = $_POST['logo'];
$array[] = $_POST['email'];

for(
$i 0$i count($array); $array[$i] = check($array[$i]), $i++);
?>

   
 
 автор: ChieFSS   (10.11.2006 в 15:43)   письмо автору
 
   для: Unkind   (10.11.2006 в 15:33)
 

Почемуто не работает

   
 
 автор: Unkind   (10.11.2006 в 15:48)   письмо автору
 
   для: ChieFSS   (10.11.2006 в 15:43)
 

И в чем проявляется "не работа". Вот протестил у себя:

<?php
function check($variable$length 100

$variable trim(htmlspecialchars($variable)); 
$variable substr($variable0intval($length)); 
if(!
get_magic_quotes_gpc()) $variable mysql_escape_string($variable); 
return 
$variable


$array = array(); 
$array[] = ":))<"
$array[] = "=))"
$array[] = "8))"

for(
$i 0$i count($array); $array[$i] = check($array[$i]), $i++);

print_r($array);
?>


Все нормально.

   
 
 автор: Temnovit   (10.11.2006 в 15:50)   письмо автору
 
   для: ChieFSS   (10.11.2006 в 15:03)
 

1, 2)Для этих целей есть очень хорошая функция mysql_qw написанная Дмитрием Котеровым. Она заменяет mysql_query и работает следующим образом.

если mysql_query выглядит так :

<?  mysql_query("SELECT * FROM table1 WHERE login=$login AND pass=$pass");  ?>

то mysql_qw будет выглядеть так :

<?  mysql_qw('SELECT * FROM table1 WHERE login=?AND pass=?'$login$pass);  ?>


Она автоматически эскейпит все параметры переданные в запросе и таким образом вы никогда не забудете этого сделать.

Текст функции: http://php.dklab.ru/lib/Database/mysql_qw.php

3)При вставки в базу данных MySQL концевые пробелы режутся автоматически.

   
 
 автор: cheops   (10.11.2006 в 19:22)   письмо автору
 
   для: Temnovit   (10.11.2006 в 15:50)
 

>Она автоматически эскейпит все параметры
Существует стандартная реализация этой функциональности
<?php
  
if (!get_magic_quotes_gpc())
  {
    
$login mysql_escape_string($login);
    
$pass mysql_escape_string($pass);
  }
?>

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования