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
Форумы портала PHP.SU :: Версия для печати :: проверка переменых
Форумы портала PHP.SU » » Вопросы новичков » проверка переменых

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

1. PATCH - 08 Августа, 2011 - 15:11:58 - перейти к сообщению
т.к я часто использую такие функции как



и мне их надо более в 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 есть.
2. Мелкий - 08 Августа, 2011 - 15:23:55 - перейти к сообщению
0) функция ничего не возвращает и никак не влияет на внешние данные, т.е. бессмысленна
1) stripslashes после mysql_escape_string умножает смысл этих действий на ноль.
3. PATCH - 08 Августа, 2011 - 15:33:55 - перейти к сообщению
так понеЛ)
а в чем тогда отличие mysql_escape_string и addslashes видь и те и те по сути экранируют одно и тоже.

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

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

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

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

Фактически, да, одно и то же. Вот только у вас stripslashes, т.е. удаляет экранирование, которые сделало mysql_escape_string
5. PATCH - 08 Августа, 2011 - 15:46:27 - перейти к сообщению
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
6. Мелкий - 08 Августа, 2011 - 16:02:30 - перейти к сообщению
PATCH пишет:
#файл function.php

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

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

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

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

магические кавычки, видимо.
7. PATCH - 08 Августа, 2011 - 16:33:14 - перейти к сообщению
ты сам попробуй ))) все так и получается))
8. Мелкий - 08 Августа, 2011 - 17:16:32 - перейти к сообщению
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']);

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

 

Powered by ExBB FM 1.0 RC1