2014-08-27 2 views
0

Так что в моем php-файле у меня есть несколько наборов открывающих и закрывающих php-тегов. Это в основном выглядит примерно так:Глобальные переменные PHP между тегами

<input id="myID" type="text" value="<?php 
$value="x"; 
echo $value; 
?>"> 
<input id="yourID" type="text" value="<?php echo $someValue; ?>" 

есть в любом случае сослаться на $value во втором наборе РНР скобок? Я попытался использовать GLOBAL['index'], чтобы обратиться к $value, но я получаю неопределенную ошибку индекса.

Любая помощь или руководство оценены.

+0

Вы можете просто использовать '$ value' снова. – showdev

+0

'$ value' должно быть доступно для всего документа (принимая во внимание объем функции) – 2014-08-27 21:31:44

+1

В стороне: поскольку вы вводите значения из PHP в HTML, вы всегда должны ** использовать' htmlspecialchars'. Прочитайте документы на нем, важно, чтобы параметры были корректными, а «правильный» зависит от контекста, в который вы вставляете (например, внутри значения атрибута с двойным кавычком). – Jon

ответ

3

Просто используйте echo $value.

Контекст переменной не изменяется только потому, что вы повторно открыли тег PHP. <?php и ?> - это всего лишь флаги для синтаксического анализатора и не имеют никакого отношения к тому, что делает ваш код внутри них.

Поскольку вы только начинаете, я также рекомендую заглянуть в шаблонный движок, такой как Smarty. Это поможет вам отделить логику приложения от вашего вывода. Кроме того, обязательно используйте htmlspecialchars() для любых произвольных данных, используемых в контексте HTML, чтобы обеспечить сохранение зарезервированных символов и что вы не создаете точек атаки XSS.

+0

Я делал это изначально, но это проблема возникла в первую очередь. Я получил неопределенную ошибку. – Wold

+1

@Wold Это определенно работает. Если вы покажете нам свой код, который не сработает, мы можем сделать предложение. – Brad

+0

Я предполагаю, что моя проблема должна быть в другом месте, я оглянусь назад на свой код. – Wold

2

Область переменной PHP является функциональной. Закрытие кода <?php ... ?> не изменяет уровень видимости.

например.

<html> 

<?php $x = 'foo'; ?> 

<body> 

<?php echo $x; ?> 

будет выводить foo как ожидалось. Если вы используете функции, то это было бы другое дело:

function foo() { 
    $x = 'foo'; 
} 
foo(); 
echo $x; // undefined variable 

и что не изменится независимо от того, сколько/несколько <?php ... ?> блоков кода вы использовали.

Смежные вопросы