我正在努力转换一些古老的.php3代码。在古老的盒子上运行古老的.php3版本时一切正常。当我单击重写按钮时,它会进入重写if块。
.php3
<?
if($rewrite) {
//here is therewrite code
}
<input class="smButton" type="submit" name="rewrite" value="Save Changes">
.PHP
<?php
if($rewrite) {
//here is therewrite code
}
<input class="smButton" type="submit" name="rewrite" value="Save Changes">
有什么明显的东西让我失踪吗? .php3版本中的某些内容设置了重写变量,但在新版本中它没有设置,除非我手动将其设置在.php文件的顶部。
希望这是足够的代码。我只是想知道在两个版本之间可能导致这种不同行为的原因。
答案 0 :(得分:11)
register_globals可能适用于PHP 3,并且在您的较新PHP版本中可能会出现(应该是这样)
答案 1 :(得分:5)
您必须将$rewrite
替换为$_POST['rewrite']
,因为您的新PHP版本不会激活register_globals,它会翻译每$_POST['x']
和$_GET['x']
(更一般地说是$_REQUEST['x']
)到$x
)
这会导致bunch of security holes,如果你有低质量的PHP代码(如果你多年没有维护它可能就是这种情况)。