5

我正在转换一些古老的 .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 版本中的某些内容设置了 rewrite 变量,但在新版本中,除非我在 .php 文件的顶部手动设置它,否则它不会设置。

希望这是足够的代码。我只是想知道是什么导致这两个版本之间出现如此不同的行为。

4

2 回答 2

11

register_globals可能在 PHP 3 中打开,在较新的 PHP 版本中关闭(应该如此)

于 2013-08-06T19:07:20.033 回答
5

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

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

于 2013-08-06T19:12:48.320 回答