Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проверка переменых

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
PATCH
Отправлено: 08 Августа, 2011 - 15:11:58
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




т.к я часто использую такие функции как



и мне их надо более в 10 местах самописной cms использовать решил написать функцию

PHP:
скопировать код в буфер обмена
  1. function security_peremenaya($prov_test)
  2. {
  3.         $prov_test = mysql_escape_string($prov_test);
  4.         $prov_test = htmlspecialchars($prov_test);
  5.         $prov_test = trim($prov_test);
  6.         $GLOBALS['prov_test'];
  7.  
  8.        
  9. }


а что бы в функцию подставлять разные перменые решил сделать так:

PHP:
скопировать код в буфер обмена
  1.  
  2. if(isset($nick))
  3. {
  4.         $prov_test=$nick;
  5.         security_peremenaya($prov_test);
  6.         $nick=$GLOBALS['prov_test'];
  7. }
  8. if(isset($text))
  9. {
  10.         $prov_test=$text;
  11.         security_peremenaya($prov_test);
  12.         $text=$GLOBALS['prov_test'];
  13. }
  14.  

суть такова мы подключаем это файл и он по сути подставляет перменые который существуют в сценарии.

все вроде бы не чего вот тока проходя через все эти функции что я указал в самом начале , вот тока они не срабатывают т.к в базу заносить текст с пробелами в начале кавычки не экранируются и html код исполняется спокойно при выводе информации (за то если на прямую использовать данные функции то все работает на ура)
вот не пойму в чем косяк. хотя я после подключение этого файла (где испольняется подстановка и проверка переменых решил вывести одну из переменых и там кавычки экранировались вот тока в базу заносятся без экранизации (заносится в базу сразу после этой проверки) . вот и в чем тут косяк)

PHP:
скопировать код в буфер обмена
  1. mysql_query ("INSERT INTO comment (post,text,nick,date) VALUES ('$post' ,'$text' ,'$nick' ,'$data')");
переменые post и date есть.

(Отредактировано автором: 08 Августа, 2011 - 15:40:21)

 
 Top
Мелкий Супермодератор
Отправлено: 08 Августа, 2011 - 15:23:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




0) функция ничего не возвращает и никак не влияет на внешние данные, т.е. бессмысленна
1) stripslashes после mysql_escape_string умножает смысл этих действий на ноль.


-----
PostgreSQL DBA
 
 Top
PATCH
Отправлено: 08 Августа, 2011 - 15:33:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




так понеЛ)
а в чем тогда отличие mysql_escape_string и addslashes видь и те и те по сути экранируют одно и тоже.

CODE (htmlphp):
скопировать код в буфер обмена
  1. 0) функция ничего не возвращает и никак не влияет на внешние данные, т.е. бессмысленна

функция не чего не возращает имено по этому я объявил переменую глобальной.
 
 Top
Мелкий Супермодератор
Отправлено: 08 Августа, 2011 - 15:36:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




PATCH пишет:
функция не чего не возращает имено по этому я объявил переменую глобальной.

И где это видно? Функция никак ни на что не влияет.

PATCH пишет:
а в чем тогда отличие mysql_escape_string и addslashes видь и те и те по сути экранируют одно и тоже.

Фактически, да, одно и то же. Вот только у вас stripslashes, т.е. удаляет экранирование, которые сделало mysql_escape_string


-----
PostgreSQL DBA
 
 Top
PATCH
Отправлено: 08 Августа, 2011 - 15:46:27
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




PHP:
скопировать код в буфер обмена
  1. Фактически, да, одно и то же. Вот только у вас stripslashes, т.е. удаляет экранирование, которые сделало mysql_escape_string.
ошибочка в написании)
но суть остается сутью)

PHP:
скопировать код в буфер обмена
  1. функция не чего не возращает имено по этому я объявил переменую глобальной.
  2.  
  3. И где это видно? Функция никак ни на что не влияет.


я любитель потестить) по этому привожу частиный код)

#файл function.php
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. function security_peremenaya($prov_test)
  4. {
  5.         $prov_test = mysql_escape_string($prov_test);
  6.         $prov_test = htmlspecialchars($prov_test);
  7.         $prov_test = trim($prov_test);
  8.         $GLOBALS['prov_test'];
  9. }


файл core.php

PHP:
скопировать код в буфер обмена
  1. if(isset($nick))
  2. {
  3.         $prov_test=$nick;
  4.         security_peremenaya($prov_test);
  5.         $nick=$GLOBALS['prov_test'];
  6. }
  7. if(isset($text))
  8. {
  9.         $prov_test=$text;
  10.         security_peremenaya($prov_test);
  11.         $text=$GLOBALS['prov_test'];
  12. }

частисный код главного файла.
PHP:
скопировать код в буфер обмена
  1. include("core.php");
  2. exit($text);
  3.  
  4. $comment_add =  mysql_query ("INSERT INTO comment (post,text,nick,date) VALUES ('$post' ,'$text' ,'$nick' ,'$data')");


берем текст со статьи.

CODE (htmlphp):
скопировать код в буфер обмена
  1. Термин "хакер" сам по себе имеет очень широкий смысл, и употребляется в совершенно разных значениях. По видимому слово "хакер" происходит от английского "to hack" - рубить, что проектируется на компьютерный мир как "рубить в компьютерах", "рубить компьютерные программы", и тд. Какие значения несет в себе слово "хакер":



при функции exit после нашей исполненой функции
выводит нам

CODE (htmlphp):
скопировать код в буфер обмена
  1. Термин \"хакер\" сам по себе имеет очень широкий смысл, и употребляется в совершенно разных значениях. По видимому слово \"хакер\" происходит от английского \"to hack\" - рубить, что проектируется на компьютерный мир как \"рубить в компьютерах\", \"рубить компьютерные программы\", и тд. Какие значения несет в себе слово \"хакер\":


а вот добавляется в бд

CODE (htmlphp):
скопировать код в буфер обмена
  1. Термин "хакер" сам по себе имеет очень широкий смысл, и употребляется в совершенно разных значениях. По видимому слово "хакер" происходит от английского "to hack" - рубить, что проектируется на компьютерный мир как "рубить в компьютерах", "рубить компьютерные программы", и тд. Какие значения несет в себе слово "хакер":


вот ты говориш функция не чего не меняет то почему при выведи переменой выводит с экранированием символов а заносится в бд без)

p.s я верю в полтергейста Ха-ха DD

(Отредактировано автором: 08 Августа, 2011 - 15:52:49)

 
 Top
Мелкий Супермодератор
Отправлено: 08 Августа, 2011 - 16:02:30
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




PATCH пишет:
#файл function.php

И всё равно никаких действий не сохраняется.

PATCH пишет:
а вот добавляется в бд

Так и должно быть.

PATCH пишет:
при функции exit после нашей исполненой функции

магические кавычки, видимо.


-----
PostgreSQL DBA
 
 Top
PATCH
Отправлено: 08 Августа, 2011 - 16:33:14
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 924
Дата рег-ции: Апр. 2011  


Помог: 22 раз(а)




ты сам попробуй ))) все так и получается))
 
 Top
Мелкий Супермодератор
Отправлено: 08 Августа, 2011 - 17:16:32
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




http://sandbox.phpguide[dot]co[dot]il/
PHP:
скопировать код в буфер обмена
  1. $prov_test = "строка";
  2.  
  3. function foo($prov_test) {
  4. $prov_test = 'преобразуем';
  5. $GLOBALS['prov_test'];
  6. }
  7.  
  8. foo($prov_test);
  9. var_dump($GLOBALS['prov_test']);

Результат ожидаемый, функция не повлияла никоим образом.


-----
PostgreSQL DBA
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB