据我所知,这个问题被问了很多次。很多关于这个问题的帖子也在这个网站上,例如
这里:$_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');
?>