php3和php变量差异

sea*_*alz 5 php

我正在努力转换一些古老的.php3代码.在古老的盒子上运行古老的.php3版本时一切正常.当我单击重写按钮时,它会进入重写if块.

.php3

<?
if($rewrite) {
//here is therewrite code
}

<input class="smButton" type="submit" name="rewrite" value="Save Changes"> 
Run Code Online (Sandbox Code Playgroud)

.PHP

<?php
if($rewrite) {
//here is therewrite code
}

<input class="smButton" type="submit" name="rewrite" value="Save Changes">
Run Code Online (Sandbox Code Playgroud)

有什么明显的东西让我失踪吗?.php3版本中的某些内容设置了重写变量,但在新版本中它没有设置,除非我手动将其设置在.php文件的顶部.

希望这是足够的代码.我只是想知道什么可能导致两个版本之间的这种不同的行为.

Joh*_*nde 11

register_globals可能在PHP 3上开启,在你的新PHP版本中关闭(因为它应该是)

  • 您应该检查您的代码,而不是激活这个糟糕的旧功能:-).保持这种行为有点危险(例如,意外覆盖变量......) (3认同)

Max*_*ant 5

您必须替换$rewriteby $_POST['rewrite'],因为您的新PHP版本不会激活register_globals,它会将每个$_POST['x']$_GET['x'](以及更一般地$_REQUEST['x'])转换为$x)

如果您有低质量的PHP代码(如果您多年没有维护它可能就是这种情况),这会导致一堆安全漏洞.