php масивы и экранированеи переменных

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

php масивы и экранированеи переменных

Непрочитанное сообщение ProFTP » 2008-06-29 13:51:21

есть масив:

Код: Выделить всё

		$codes = array(
.....................
			array(
				'tag' => 'url',
				'type' => 'unparsed_content',
				'content' => '<a href="http:///goo.php?url=$1" target="_blank">$1 </a>',
				'validate' => create_function('&$tag, &$data, $disabled', '$data = strtr($data, array(\'<br />\' => \'\'));'),
			),
			array(
				'tag' => 'url',
				'type' => 'unparsed_equals',
				'before' => '<a href="http://?url=$1" target="_blank">',
				'after' => '</a>',
				'disallow_children' => array('email', 'ftp', 'url', 'iurl'),
				'disabled_after' => ' ($1)',
 ),
......................
);
вот нужно сделать сроку динамическую

Код: Выделить всё

				'content' => '<a href="http:///goo.php?url=$1" target="_blank">$1 </a>',
$1 - это url.

то есть примерно так:

Код: Выделить всё

if ((strstr($1, 'mydomen.com') && (strstr($1, 'lissyara.su')) ) {

$dop= "'<a href="$1"  target="_blank">$1 </a>',"

elseif ($context['user']['is_admin']){
$dop= "'<a href="$1"  target="_blank">$1 </a>',"
}
else {
<a href="http://./goo.php?url=$1" target="_blank">$1 </a>'
}
он ругаеться всегда!!! как работать с переменной $1? на перле легко очень это сделать, в данном случае я не нашел как реализовать, даже не знаю что искать?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: php масивы и экранированеи переменных

Непрочитанное сообщение zg » 2008-06-29 14:13:36

ProFTP писал(а): как работать с переменной $1?
никак, да и зачем? то что ты пытаешься сделать реализуется гораздо проще.
ProFTP писал(а):вот нужно сделать сроку динамически
<?=...?> чем не устаривает? ну... максимум printf, но только не echo и не двойные кавычки... потому как ни тем ни тем почему-то не умеют пользоваться...
ProFTP писал(а):то есть примерно так:
скажи, что есть и что нужно получить, так проще будет. Тот массив, который ты привёл абсолютно бессмысленный, либо я чего-то не понимаю.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: php масивы и экранированеи переменных

Непрочитанное сообщение ProFTP » 2008-06-29 14:40:45

не работает оно, php строгий язык
ну как эту строку представить??

Код: Выделить всё

       
              'content' => '<a href="http:///goo.php?url=$1" target="_blank">$1 </a>',

я патался

Код: Выделить всё

  'content' => '<a href="$dd" target="_blank">$1 </a>',

Код: Выделить всё

$dd = 'http:///goo.php?url=$1';

не работает, я правильно написал? почему?

и ругаеться на вот это

Код: Выделить всё

(strstr($1, 'mydomen.com')
пишет что $1 не определена

<?=...?> чем не устаривает? ну... максимум printf, но только не echo и не двойные кавычки... потому как ни тем ни тем почему-то не умеют пользоваться...
что это?

по каким причинам не работает, может надо "обяву" сделать?
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: php масивы и экранированеи переменных

Непрочитанное сообщение zg » 2008-06-29 17:54:24

ProFTP писал(а):не работает оно, php строгий язык
ну как эту строку представить??

Код: Выделить всё

$str = '<a href="http:///goo.php?url=$1" target="_blank">$1</a>';
echo strtr($str, array('$1'=>'some info'));
===========
<a href="http:///goo.php?url=some info" target="_blank">some info</a>
ProFTP писал(а):не работает, я правильно написал? почему?
$dd это переменная, а не функция, тут нет скрытых функций по-умолчанию.
ProFTP писал(а):что это?
то, чего нет в перле и никогда не будет - расширение html стандратными средствами пхп, соркащённый вывод - <?echo ...?>
ProFTP писал(а):пишет что $1 не определена
переменная не может начинаться с цифры, таких переменных нет впринципе, они есть только в специальных функциях типа preg_match и то не относться никак к пхп.

Код: Выделить всё

echo $1;
=====
Parse error:  syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$'

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: php масивы и экранированеи переменных

Непрочитанное сообщение zg » 2008-06-29 17:57:41

очень желательно перед использованием пхп ознакомиться с http://php.net и взять от туда мануал. Первые несколько глав подробнейшим образом расписывают базовые принципы работы с пхп.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: php масивы и экранированеи переменных

Непрочитанное сообщение ProFTP » 2008-06-29 18:37:52

zg писал(а):очень желательно перед использованием пхп ознакомиться с http://php.net и взять от туда мануал. Первые несколько глав подробнейшим образом расписывают базовые принципы работы с пхп.
я там был!

но вот я примел к этому виду
$1 используеться в этом движке как ссылка сайта на котором работает движок!!!

вот я не могу сделать вот это:

$str0, $str1 вставляються в масив движка, и для работы, и для экранирование html тэгов, я хочу выключить внешние ссылки!!

Код: Выделить всё

Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in /usr/l/Subs.php on line 1108 

Код: Выделить всё

$ff = 'echo $1'
не помогает :cry:

Код: Выделить всё

$ff == $1;

Код: Выделить всё

if ( strtr($1, 'domenl.org.ua'))   {
$str0 = '<a href="$1" target="_blank">$1</a>';
$str1 = '<a href="$1" target="_blank">';
}

else {
$str0 = '<a href="http://w/goo.php?url=$1" target="_blank">$1</a>';
$str1 = '<a href="http://wo/goo.php?url=$1" target="_blank">';
}
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: php масивы и экранированеи переменных

Непрочитанное сообщение zg » 2008-06-29 19:20:05

ProFTP писал(а):не помогает
ну во-первых, что за движок, во-вторых ты используешь PrettyUrls?
ProFTP писал(а):я там был!
мало быть, надо ещё и информацию черпать.
ProFTP писал(а):Код:
код ни о чём не говорит, в нём не действия

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: php масивы и экранированеи переменных

Непрочитанное сообщение ProFTP » 2008-06-29 19:24:33

zg писал(а):
ProFTP писал(а):не помогает
ну во-первых, что за движок, во-вторых ты используешь PrettyUrls?
это smf,
там много окода много функций

на perl можно было вот так

Код: Выделить всё

$sdfsdf=S1;
а почему здесь нельзя так?

нет не PrettyUrls, а Subs.php я использую фунцию которая работает с сообщениями и публикациями... ( ЗЫ ну просто ссылку же он выдает, экранирует все остальное)
ProFTP писал(а):я там был!
мало быть, надо ещё и информацию черпать.
а что именно? я обьяву не вижу в коде...
ProFTP писал(а):Код:
код ни о чём не говорит, в нём не действия[/quote]

ладно, если нельзя то ладно... спасибо :drinks:
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: php масивы и экранированеи переменных

Непрочитанное сообщение zg » 2008-06-29 19:36:08

ProFTP писал(а):нет не PrettyUrls, я использую фунцию которая работает с сообщениями и публикациями
но ошибка именно в этом модуле для smf http://custom.simplemachines.org/mods/index.php?mod=636
ProFTP писал(а):на perl можно было вот так
Код:$sdfsdf=S1;
и на пхп можно так

Код: Выделить всё

echo $sdfsdf=S1;
=========
S1
переменной $sdfsdf присвоится значение константы S1, которая если не объявлена, то по умолчанию её имя, и передастся процедуре echo, которая выведет это значение.
ProFTP писал(а):а что именно? я обьяву не вижу в коде...
хм, а кто сказал, что она там в явном виде?

чего ты в итоге хочешь добиться? может быть это уже давно сделано?

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: php масивы и экранированеи переменных

Непрочитанное сообщение zg » 2008-06-29 19:38:57

ProFTP писал(а):ладно, если нельзя то ладно... спасибо :drinks:
форум это система, а к любой системе нужен системный подход, скорее всего нужно просто найти конфиг и чего-нить подправить или дописать.

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: php масивы и экранированеи переменных

Непрочитанное сообщение ProFTP » 2008-06-29 19:41:39

zg писал(а):
ProFTP писал(а):ладно, если нельзя то ладно... спасибо :drinks:
форум это система, а к любой системе нужен системный подход, скорее всего нужно просто найти конфиг и чего-нить подправить или дописать.
ругается на эту строку

Код: Выделить всё

echo $sdfsdf=S1;

Код: Выделить всё

Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in /usr/local/www/l/Sources/Subs.php on line 1107
мод хотел написать, в данном случае чтобы выключить внешние ссылки, но внутрение оставить и для пользователей зарегистрированных оставить так и внутрениие, так и внешние!

такого нету, оффициально ответили на форуме
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: php масивы и экранированеи переменных

Непрочитанное сообщение zg » 2008-06-29 19:52:01

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

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: php масивы и экранированеи переменных

Непрочитанное сообщение ProFTP » 2008-06-29 19:57:48

$1 это и есть ссылка в сообщении, в оригинале в масиве записано так:

Код: Выделить всё

			'content' => '<a href= "$1"  target="_blank">$1</a>',

Код: Выделить всё

 $codes = array(
.....................
         array(
            'tag' => 'url',
            'type' => 'unparsed_content',
          'content' => ' '<a href= "$1"  target="_blank">$1</a>',
            'validate' => create_function('&$tag, &$data, $disabled', '$data = strtr($data, array(\'<br />\' => \'\'));'),
         ),
         array(
            'tag' => 'url',
            'type' => 'unparsed_equals',
            'before' => '<a href="$1" target="_blank">',
            'after' => '</a>',
            'disallow_children' => array('email', 'ftp', 'url', 'iurl'),
            'disabled_after' => ' ($1)',
),
......................
);
в общем ладно я прошу на оффициальном форуме, но там редко отвичают...
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: php масивы и экранированеи переменных

Непрочитанное сообщение zg » 2008-06-29 20:07:34

ProFTP писал(а):$1 это и есть ссылка в сообщении, в оригинале в масиве записано так:
понимаешь в чём трабла - пока нет функции, которая это всё обрабатывает, этот массив пустое место, тут нет никакой полезной информации. Если приведёшь функцию, которой это всё скармливают, то уже можно будет о чём-то говорить.

Аватара пользователя
ADRE
майор
Сообщения: 2641
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

Re: php масивы и экранированеи переменных

Непрочитанное сообщение ADRE » 2008-10-30 11:56:06

не надо в массивах скобки одинарные ставить, если внутри переменную хочешь заместить ( ' ) - они все что внутри них приравнивают к строке, если не регулярное выражение.... пользуйся в массивах двойными кавычками ( " )....
//del

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: php масивы и экранированеи переменных

Непрочитанное сообщение ProFTP » 2008-10-30 12:00:07

спасибо, только это проблему не решает описанную в этой теме...

url храниться в этой переменной $1

Код: Выделить всё

if ( strtr($1, 'domenl.org.ua'))   {
$str0 = '<a href="$1" target="_blank">$1</a>';
$str1 = '<a href="$1" target="_blank">';
}

else {
$str0 = '<a href="http://w/goo.php?url=$1" target="_blank">$1</a>';
$str1 = '<a href="http://wo/goo.php?url=$1" target="_blank">';
}
не работает
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

Аватара пользователя
ADRE
майор
Сообщения: 2641
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

Re: php масивы и экранированеи переменных

Непрочитанное сообщение ADRE » 2008-10-30 12:03:19

Код: Выделить всё

$str0 = '<a href="$1" target="_blank">$1</a>'
- эта шняга у тебя воспринмается как текст, поменяй скобки ' на " и пройдет...., только остальные не забудь экранировать...
//del

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: php масивы и экранированеи переменных

Непрочитанное сообщение ProFTP » 2008-10-30 12:06:44

пробелема была все равно не в этом, не знаю где, может быть в масиве, оно ругаеться на это строку:

Код: Выделить всё

if ( strtr($1, 'domenl.org.ua'))   {
а сам код работает, такой:

Код: Выделить всё

$str0 = '<a href="http://w/goo.php?url=$1" target="_blank">$1</a>';
$str1 = '<a href="http://wo/goo.php?url=$1" target="_blank">';
в принципе я забил... (но все равно не понятно) там код где-то 200000 строк, икать продожение или "функцию которая обрабатывает" не реально
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

MAK
ст. сержант
Сообщения: 344
Зарегистрирован: 2008-09-17 2:23:21

Re: php масивы и экранированеи переменных

Непрочитанное сообщение MAK » 2008-10-30 14:42:35

ProFTP писал(а):

Код: Выделить всё

$str0 = '<a href="http://w/goo.php?url=$1" target="_blank">$1</a>';
$str1 = '<a href="http://wo/goo.php?url=$1" target="_blank">';
В пхп низя имена переменных начинать на цифры.
В одинарных кавычках переменные не подставляют свои значения.
Может здесь $1 заменяется str_replace?
Но лучше - быстрее выкиньте этот "движок". :)

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: php масивы и экранированеи переменных

Непрочитанное сообщение zg » 2008-10-30 16:25:39

MAK писал(а):Но лучше - быстрее выкиньте этот "движок". :)
это да -)) +1

Аватара пользователя
ADRE
майор
Сообщения: 2641
Зарегистрирован: 2007-07-26 8:53:49
Контактная информация:

Re: php масивы и экранированеи переменных

Непрочитанное сообщение ADRE » 2008-10-31 6:28:33

zg писал(а):
MAK писал(а):Но лучше - быстрее выкиньте этот "движок". :)
это да -)) +1
а что за опасный мега движок у которого всего 2000 строк?
//del

MAK
ст. сержант
Сообщения: 344
Зарегистрирован: 2008-09-17 2:23:21

Re: php масивы и экранированеи переменных

Непрочитанное сообщение MAK » 2008-10-31 8:05:51

прошу заметить )
ProFTP писал(а):там код где-то 200000 строк

Аватара пользователя
ProFTP
подполковник
Сообщения: 3388
Зарегистрирован: 2008-04-13 1:50:04
Откуда: %&й
Контактная информация:

Re: php масивы и экранированеи переменных

Непрочитанное сообщение ProFTP » 2008-10-31 8:10:21

smf
MAK писал(а):
ProFTP писал(а):

Код: Выделить всё

$str0 = '<a href="http://w/goo.php?url=$1" target="_blank">$1</a>';
$str1 = '<a href="http://wo/goo.php?url=$1" target="_blank">';
В пхп низя имена переменных начинать на цифры.
В одинарных кавычках переменные не подставляют свои значения.
Может здесь $1 заменяется str_replace?
Но лучше - быстрее выкиньте этот "движок". :)
$str0 эти переменные я сам поставил, работает - пускай работает...

что значит "заменяется"? попробовать if ( str_replace($1, 'domenl.org.ua')) {

поробую тогда str_replace, проблема этой переменной навреное $1, она где-то переопределяется...
Последний раз редактировалось ProFTP 2008-10-31 8:26:50, всего редактировалось 2 раза.
Pеrl FAQ
perl -e 'print join"",map $$_[rand@$_],([0..9,'a'..'z','A'..'Z'])x30'
ИзображениеИзображение

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: php масивы и экранированеи переменных

Непрочитанное сообщение zg » 2008-10-31 8:21:10

ADRE писал(а):а что за опасный мега движок у которого всего 2000 строк?
для дырки хватит и 10 строк :smile: движок дырявый однозначно

Такой код
ProFTP писал(а):if ( strtr($1, 'domenl.org.ua'))   {
будет работать только при одном раскладе - eval.
А eval - всегда самая серьёзная угроза безопасности, так как очень трудно себя обезопасить на все 100%.

Профессиональные программеры двести раз продумают об использовании таких кострукций, а потом всё равно откажутся, как бы соблазнительно это не выглядело.

MAK
ст. сержант
Сообщения: 344
Зарегистрирован: 2008-09-17 2:23:21

Re: php масивы и экранированеи переменных

Непрочитанное сообщение MAK » 2008-10-31 15:24:35

ProFTP писал(а):$str0 эти переменные я сам поставил, работает - пускай работает...
От сюда можно поподробней. при том, что вы писали

Код: Выделить всё

Parse error: syntax error, unexpected T_LNUMBER, expecting T_VARIABLE or '$' in /usr/l/Subs.php on line 1108
Может действительно у вас все работает. :)
ProFTP писал(а):проблема этой переменной навреное $1, она где-то переопределяется...
Еще раз повторяю, в php нельзя начинать имена переменных с цифр!
Сейчас пойду посмотрю в какой главе об этом говорят.
Во втором абзаце раздела про переменные! Только буква или подчеркивание! Все.