0

据我所知,这个问题被问了很多次。很多关于这个问题的帖子也在这个网站上,例如

这里:$_POST 在表单提交时为空 ,这里: $_POST、$_GET 和 $_REQUEST 为空

但他们都没有解决我的问题。

我有一个带有提交按钮的简单 HTML 输入表单。它的“名称”标签已设置。

我的 php.ini 设置是:

request_order = "GP"
variables_order = "GPCS"
register_globals = Off

输入数据正在“Util.php”中的“action”方法中处理。输入表单的代码以及 Util::action 方法由我们的教授提供(这是大学的作业),因为我们在 php 研讨会期间开发了一个类似的项目。

不幸的是,$_REQUEST 数组在我的项目中保持为空。

这是输入表单的源代码:

<?php
require_once('inc/bootstrap.php');


if (AuthenticationManager::isAuthenticated()) {
    Util::redirect("index.php");
}

$userName = isset($_REQUEST['userName']) ? $_REQUEST['userName'] : null;
?>

<?php
require_once('inc/header.php');
?>

<h2>Login</h2>

<form method="post" action="<?php echo Util::action('login'); ?>">
    <table>
        <tr>
            <th>User name:</th>
            <td><input name="userName"
                value="<?php echo htmlentities($userName); ?>" /></td>
        </tr>
        <tr>
            <th>Password:</th>
            <td><input type="password" name="password" /></td>
        </tr>
    </table>
    <input type="submit" value="Login" name='login' />
</form>

<?php
require_once('inc/footer.php');
?>

这里是 Util.php:

    <?php

    class Util extends BaseObject {
    // Bereinigen eines Strings für die HTML-Ausgabe
    /**
     * @param string $string
     * @return string
     */
    public static function escape($string) {
        return nl2br(htmlentities($string));

    }



    /**
     * @param string $action
     * @param array $params
     */
    public static function action($action, array $params = null ) {

        //enters ELSE branch as IF branch evaluates to false
        //(because $_REQUEST contains 0 elements
        //(so do $_GET and $_POST)
        $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : $_SERVER['REQUEST_URI'];

        //just an attempt for hardcore debugging...
        $req = array_merge($_GET, $_POST); 
        $page = count($req); //evaluates to zero

        $res = '/lib/controller.php?action='.rawurlencode($action).'&page='.rawurlencode($page);
        //result is: localhost/lib/controller.php?action=login&page=0

        if ( is_array($params) ) {
            foreach ( $params as $name => $value ) {
                $res.='&'.rawurlencode($name).'='.rawurlencode($value);
            }
        }

        return $res;
    }

    public static function redirect($page = null) {
        if ( $page == null ) {
            $page = isset($_REQUEST['page']) ? $_REQUEST['page'] : $_SERVER['REQUEST_URI'];
        }

        header('Location: '.$page);
    }

    /**
     * Converts a tinyint (from MySQL DB) to boolean (PHP)
     * @param int $tinyInt
     * @return boolean
     */
    public static function tinyintToBoolean($tinyInt) {
        if ($tinyInt == 1) {
            return true;
        } else {
            return false;
        }
    }
}

?>

引导程序.php:

<?php
error_reporting(E_ALL); ini_set('display_errors', 'On');

/**
 * bootstrap must be included in every callable view 
 * 
 */
spl_autoload_register(function ($class) {
    include 'lib/' . $class . '.php';

});

// create session
SessionContext::create();

//require_once('lib/data/DataManager_' . $class . '.php');
require_once('lib/DataManager.php');

?>
4

0 回答 0