我在我的工作中继承了这个网站,它是用php5,html4和javascript编写的。他们将变量从一个页面传递到另一个页面的方式如下:
filename.php?variable=value&secondvariable=secondvalue
因此,在提交表格时我已经看过
<form method="post" name="auth" action="login.php?logon=logon">
然后立即使用login.php
$logon
而不使用$_POST
。
我目前正在升级所有内容,现在我已经运行了php7.0。这种传递变量的方法不再有效。因为很难说出这是在做什么,所以我无法在网上找到这样的例子。所以我不知道为什么它之前有效,我无法弄清楚为什么现在不起作用。每个人似乎都在使用 SESSION 变量或 GLOBAL 变量,但由于在代码中使用此格式的方式很多,因此无法在每种情况下替换它。
任何有关此信息都将受到赞赏。
编辑: 这实际上是login.php的第一行。 $ logon不在&#34; global_vars.php&#34;
<?php
define( 'direct_access', 1 );
include("includes/users.php");
include("includes/global_vars.php");
include("includes/global_functions.php");
if ($logon == "logon"){
答案 0 :(得分:1)
使用PHP的 extract()函数将变量从数组导入当前符号表。
extract($_POST);
extract($_GET);
答案 1 :(得分:1)
像这样重写以调试和显示所有变量的值:
if (!empty($_POST)) { // this line was previously if ($logon === "logon"){
// only reaches here on a post request, i.e. form is submitted
die(print_r($_REQUEST)); // will show all $_POST, $_GET, and $_COOKIE values that currently are set ---> see http://php.net/manual/en/reserved.variables.request.php
}
确认密钥“logon”实际存在后,通过将$ _REQUEST(在die()语句中)更改为$ _GET或$ _POST来查看它是否存在于$ _GET或$ _POST数组中。
这些可能会为您提供有关正在发生的事情的线索。
答案 2 :(得分:0)
也许我过于简单地看着这个,但是你不能通过POST传递这个方法..
$logon = $_POST['logon'];
然后在login.php
$logon = $_GET['logon'];
或者,在login.php中使用..
preg_replace_callback
应该仍然有用