PHP通过位置名称传递变量

时间:2016-09-09 13:43:00

标签: php html post session-variables

我在我的工作中继承了这个网站,它是用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"){

3 个答案:

答案 0 :(得分:1)

使用PHP的 extract()函数将变量从数组导入当前符号表。

extract($_POST);
extract($_GET);

<强>文档: http://nl3.php.net/manual/en/function.extract.php

答案 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

应该仍然有用