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

  • Автор темы Автор темы RigVan
  • Дата начала Дата начала

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);

?>

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

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

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

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

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

Значит все старые программы надо переделывать -
добавлять $_POST['переменная'] вместо переменная ?
 
а можно ли в скрипте переназначить
register_globals с off на on или обратно
для того, чтобы ответить на этот вопрос, достаточно немножко подумать.
или это возможно только админу сервера?
[m]ini_set[/m] - смотреть таблицу внимательно.
А что значит закрыть доступ к скрипту?
это ничего не значит. это бессмыслица. скрипты мы пишем как раз для того, чтобы к ним обращались.
это строчка - deny from all
в файле
.htaccess
закрывает доступ не к файлу, а к каталогу.
Значит все старые программы надо переделывать -
добавлять $_POST['переменная'] вместо переменная ?
совершенно верно.
причем это надо было начинать делать еще два года назад
 
Господа ответ на заданный мною вопрос я получил на 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, Ваша лень прочитать пару строк из документации смущает людей. Вопросы, ответы на которые содержатся в мане, изначально являются риторическими вопросами. А какие вопросы, такие и ответы.
 
а какой бы ответ тебя устроил?

-~{}~ 21.02.05 01:04:

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

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