2014-08-27 75 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在第二组PHP括号?我尝试使用GLOBAL['index']来引用$value,但我得到一个未定义的索引错误。

任何帮助或指导表示赞赏。

+0

您可以再次使用'$ value'。 – showdev 2014-08-27 21:31:39

+0

'$ value'应该在整个文档的范围内(考虑函数范围) – 2014-08-27 21:31:44

+1

另外:因为你是从PHP向HTML注入值,你应该总是**使用'htmlspecialchars'。阅读关于它的文档,重要的是你得到的参数是正确的,“正确”取决于你注入的上下文(例如在双引号属性值内)。 – Jon 2014-08-27 21:33:18

回答

3

只需使用echo $value

变量上下文不会因为您已重新打开PHP标记而发生更改。 <?php?>只是解析器的标志,并且与你的代码在里面做什么没有关系。

既然你刚刚开始,我还建议寻找一个模板引擎,如Smarty。这将帮助您将应用程序逻辑从输出中分离出来。此外,请确保在HTML上下文中使用的任意数据周围使用htmlspecialchars(),以确保保留的字符已转义,并且您没有创建任何XSS攻击点。

+0

我原本是这样做的,但这是问题出现在第一位。我得到一个未定义的错误。 – Wold 2014-08-27 21:33:03

+1

@Wold它绝对有效。如果您向我们展示您的代码无效,我们可能会提出建议。 – Brad 2014-08-27 21:33:41

+0

我想我的问题必须在其他地方,我会回顾一下我的代码。 – Wold 2014-08-27 21:40:53

2

PHP的变量范围是功能级别。关闭<?php ... ?>代码块不会更改您的范围级别。

例如

<html> 

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

<body> 

<?php echo $x; ?> 

将按预期输出foo。如果您使用的功能,那么这将会是一个不同的问题:

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

而且不会不管你是多少/几<?php ... ?>代码块使用改变。