启动和关闭PHP语句的"正确"方法是什么?

Pet*_*aig 5 php

以下PHP变体是否存在任何差异或相关风险?

<? echo "hello world!"; ?>

<?php echo "hello world!"; ?>

<?="hello world!"?>
Run Code Online (Sandbox Code Playgroud)

此外,是否有必要关闭所有脚本 ?>

Pao*_*ino 15

不同之处在于某些服务器可能会禁用第一个和最后一个示例short_open_tag.因此,如果您希望代码尽可能具有可移植性,则应使用完整<?php代码,否则当您将代码移动到新服务器时,您可能会发现它无法按预期工作.如果尝试进行<?xml类型声明,使用短标签也可能导致冲突.就安全性而言,如果某人决定关闭,使用短标签在理论上可能是危险的short_open_tag; 然后,使用该标记的代码将是纯文本并向所有人广播(请查看注释以获取更多信息)

至于你的另一个问题,省略关闭标签是为了防止空格意外地输出到浏览器,因为这会弄乱一些脚本,特别是那些试图输出任何类型的标题的脚本.这就是Zend编程指南建议不要关闭PHP标记的原因.

现在我已经完成了所有这些,除非我正在开发一些开源的东西,我 个人使用短开放标签,然后关闭所有PHP标签.这是因为我通常控制着我的环境而且我认为a)<?=太方便了,b)如果你打开一些东西你应该关闭它.然而,"最佳实践"并不真正同意这一点.

  • 我有一个托管服务提供商决定关闭短标签(没有通知),将我的一个旧项目字面上作为一组文本文件在普通视图中.所有敏感的东西都在Web根目录之外(当然),但我绝对称之为安全风险! (6认同)

Gav*_*n H 6

当您不控制托管时,可移植性可能很重要.例如,当我写了一些托管在我学院托管上的PHP程序时,他们工作正常,直到他们改变配置以禁止他们打破了一堆页面的语法.

即使它当时有效,如果您无法控制托管,也无法保证.