对于我的迷你网络应用程序,我制作了一个注册表和登录表。他们看起来一样。两个表单之间的差异是输入字段的名称。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Login</title>
<link rel="stylesheet" href="css/style.css">
<!--[if lt IE 9]><script src="//html5shim.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
</head>
<body>
<section class="container">
<div class="login">
<h1>Prijava za intervju</h1>
<form method="POST" action="logovanje.php">
<p><input type="text" name="user" placeholder="Korisnicko ime"></p>
<p><input type="text" name="pass" placeholder="Password"></p>
<p class="submit"><input type="submit" name="commit" value="Prijava"></p>
</form>
</div>
</body>
</html>
这是PHP简单登录代码
<?php
require_once('databaseClass.php');
//---------------------------------------------------------------------
function logovanje()
{
*body of function*
}
//---------------------------------------------------------------------
print_r($_POST);//for testing
if (isset($_POST['user']) && isset($_POST['pass']))
{
if ($_POST['user'] !== '' && $_POST['pass'] !== '')
{
logovanje();
}
else
{
echo <<<END
*html page to echo if user and pass are empty*
END;
}
}
else
{
echo <<<END
*html page to echo if user and pass are not set*
END;
}
问题是每次提交表单时,$_POST
数组都是空的。这很奇怪。
如果我将$_POST['user']
更改为$_POST['*anyothername*']
而将$_POST['pass']
更改为$_POST['*anyothername*']
,则print_r($_POST)
会显示'user'和'pass'的值(此行为不合逻辑对我来说。
用户名'test6'和密码'test6'的示例:
Array ( [user] => test6 [pass] => test6 [commit] => Prijava )
PHP代码是:
print_r($_POST);//for testing
if (isset($_POST['username111']) && isset($_POST['password222']))
{
如果我设置正确的代码(应该是这样):
print_r($_POST);//for testing
if (isset($_POST['user']) && isset($_POST['pass']))
{
然后print_r($_POST)
返回空数组:
Array ( )
这让我很困惑。当PHP开始执行时,为什么$_POST
数组为空?
具有相同结构的文件,用于注册工作没有任何问题(唯一的区别是注册文件有函数register()而不是logovanje())。
答案 0 :(得分:0)
解决了这个问题。其他一些文件有错误的代码:) Apache的配置被别人/其他人搞砸了:))
Aitch,谢谢你的帮助:D