私が見る限り、何度も尋ねられている質問です。この問題に関する多くの投稿は、この 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');
?>