Приходится переназначать переменные

RigVan

Постоянный член клуба
Приходится переназначать переменные

Помогите пожалуйста разобраться с выводом переменных.
Имеется следующий код (взят из книги PHP/MySQL для начинающих):
<?
$theStyle = <<<HERE
"border-color:$borderColor;
border-style:$borderStyle;
border-width:$borderSize$sizeType">
HERE;

print "<div style = $theStyle";

print $basicText;

phpinfo(32);
?>

Все переменные были переданы методом POST, из соответствующей формы файла *.html
Их коректность подтверждает и ответ на команду phpinfo(32), (все переменные присутствуют в отчете).
Так вот на одном сервере все выдается как надо (register_globals On).
А на другом (register_globals Off) выдаются ошибки.
Выход нашел в переназначении переменных:

<?
//переназначаю переменные
$color= $_POST['borderColor'];
$style = $_POST['borderStyle'];
$size = $_POST['borderSize'];
$tipe = $_POST['sizeType'];

$theStyle = <<<HERE
"border-color:$color;
border-style:$style;
border-width:$size$tipe">
HERE;

print "<div style = $theStyle";

print $_POST['basicText'];

phpinfo (32);

?>

После этого все заработало.
Вот хочу у Вас спросить: как-то можно обойтись без переназначения переменных? В данной програмке не критично, но хочется понять нет ли более элегантного способа решения данной ситуации. Или единственный способ это переназначение?

Спасибо.
 

Фанат

oncle terrible
Команда форума
это не переназначение, а назначение.
нет, обойтись нельзя.
писать надо под register_globals Off, поскольку on - небезопасно
 

RigVan

Постоянный член клуба
Автор оригинала: Фанат
это не переназначение, а назначение.
нет, обойтись нельзя.
писать надо под register_globals Off, поскольку on - небезопасно
Я прошу прощения за неточную терминологию.
Но вот что мне непонятно так это почему при том же register_globals Off.
В некоторых случаях "назначение" делать не обязательно, достаточно просто указать полученную переменную например в этом примере:
<?
print $_POST['basicText'];
?>
значение переменной будет выдано правильно.
 

Фанат

oncle terrible
Команда форума
не в некоторых, а всегда.
при использовании глобального массива никакое назначение делать не нужно.
достаточно просто указать полученную переменную
Маркс и Энгельс - это два разных человека.
$_POST['basicText']; и $basicText - это ДВЕ РАЗНЫЕ переменные.
А не одна, которую ты "переназначаешь".

$_POST['basicText']; есть в скрипте всегда, если ты отправил её, конечно, с формой.
$basicText - существует только при register_globals онf
 

vsu7

Новичок
а можно ли в скрипте переназначить
register_globals с off на on или обратно или
в .htaccess внести строчку с исправлением этого параметра или это возможно только админу сервера?

А что значит закрыть доступ к скрипту?
// (например, закрыт .htaccess'ом)

это строчка - deny from all
в файле
.htaccess

Значит все старые программы надо переделывать -
добавлять $_POST['переменная'] вместо переменная ?
 

Фанат

oncle terrible
Команда форума
а можно ли в скрипте переназначить
register_globals с off на on или обратно
для того, чтобы ответить на этот вопрос, достаточно немножко подумать.
или это возможно только админу сервера?
[m]ini_set[/m] - смотреть таблицу внимательно.
А что значит закрыть доступ к скрипту?
это ничего не значит. это бессмыслица. скрипты мы пишем как раз для того, чтобы к ним обращались.
это строчка - deny from all
в файле
.htaccess
закрывает доступ не к файлу, а к каталогу.
Значит все старые программы надо переделывать -
добавлять $_POST['переменная'] вместо переменная ?
совершенно верно.
причем это надо было начинать делать еще два года назад
 

RigVan

Постоянный член клуба
Господа ответ на заданный мною вопрос я получил на http://www.php5.ru/forum/showthread.php?p=884#post884
Уважаемый SiMM составил такой код:

$theStyle = <<<HERE
"border-color:{$_POST['borderColor']};
border-style:{$_POST['borderStyle']};
border-width:{$_POST['borderSize']}{$_POST['sizeType']}">
HERE;
print "<div style = $theStyle";

print $_POST['basicText'];

phpinfo(32);

Все заработало! До того как получил ответ от него, я пробовал вставлять этот же код но без фигурных скобок, видимо по этому ни чего и неполучалось...
Может кто подскажет почему вдруг понадобилось добавлять эти фигурные скобки?
Редактировать/Удалить
 

RigVan

Постоянный член клуба
Автор оригинала: Фанат
потому, что так устроен мир
Г-н Фанат. Ваш ответ не несет смысловой нагрузки, а потому это просто флуд. Зачем засорять эфир?
Если знаете ответте, если нет то не флудите....
 

Нечто

Психолог РНРClub
RigVan, Ваша лень прочитать пару строк из документации смущает людей. Вопросы, ответы на которые содержатся в мане, изначально являются риторическими вопросами. А какие вопросы, такие и ответы.
 

Фанат

oncle terrible
Команда форума
а какой бы ответ тебя устроил?

-~{}~ 21.02.05 01:04:

дело не в риторичности вопроса.
а в том, что другого по сути ответа дать в принципе невозможно.
Во всяком случае, ради другого ответа надо спрашивать не здесь, а разработчиков.
 

RigVan

Постоянный член клуба
Автор оригинала: Нечто
RigVan, Ваша лень прочитать пару строк из документации смущает людей. Вопросы, ответы на которые содержатся в мане, изначально являются риторическими вопросами. А какие вопросы, такие и ответы.
Ну да есть немного... каюсь. только это не лень, а просто я пока толком и неразобрался где и что смотреть поскольку только начинаю обучение. Простите если смутил....
 

Фанат

oncle terrible
Команда форума
RigVan
почему бы тебе не озаботиться еще и другими вопросами?
к примеру, почему индекс массива указывается в угловых скобках, а не в круглых?
почему имя переменной должно начинаться с $?
Кругом столько непознанного и пищи для пытливого ума!
А главное - полезного.
 

SelenIT

IT-лунатик :)
почему вдруг понадобилось добавлять эти фигурные скобки?
Рискну предположить, что вследствие выбора едва ли не самого неудобного для данной задачи синтаксиса присвоения строки.
То же самое можно записать и без этих скобок, например
PHP:
<?
 $theStyle = 'border-color: ' . $_POST['borderColor'] . ';
border-style: ' . $_POST['borderStyle'] . ';
border-width:' . $_POST['borderSize'] . $_POST['sizeType'];
?>
<div style="<?=$theStyle?>">
<?
print $_POST['basicText'];
phpinfo(32);
 

RigVan

Постоянный член клуба
SelenIT

Вы верно предположили. Спасибо за предоставленный вариант кода. На форуме http://www.php5.ru/forum/showthread.php?p=900#post900
уважаемый SIMM, подкинул мне ссылочку http://ru.php.net/manual/ru/languag...parsing.complex
там все подробно про это написано. Возможно кому-то пригодится в дальнейшем.
Спасибо всем кто помогал решить возникшую у меня задачку.!
 
Сверху