0

私が見る限り、何度も尋ねられている質問です。この問題に関する多くの投稿は、この Web サイトにもあります。たとえば、

ここ:フォーム送信時に $_POST が空で 、ここ: $_POST、$_GET、および $_REQUEST 空

しかし、どれも私の問題を解決しませんでした。

送信ボタンのある単純な HTML 入力フォームがあります。その「name」タグが設定されます。

私の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