在开发注册页面时,我遇到了一个非常令人烦恼的问题。 通过提交按钮提交表单时,我可以看到它发送像" user = myusername"到了浏览器,但PHP部分根本没有把它拿起来。 我已尝试通过" echo"进行调试&安培; "的print_r"但是它们都显示为空,但是我从zPanel获得了errlor日志。
这是代码的PHP部分:
if(isset($_GET['user']) && isset($_GET['pw']) && isset($_GET['mail']))
{
$username = $_POST["user"];
$password = $_POST['pw'];
$email = $_POST["mail"];
$ipaddress = $_SERVER["REMOTE_ADDR"];
if(empty($username) || empty($password) || empty($email)) header("Location: register.php?empty");
else if(user_exists($username)) header("Location: register.php?exist");
else if(email_exists($email)) header("Location: register.php?mailexist");
else if($password != $repeat_pass) header("Location: register.php?wrongpw");
else
{
register($username,$password,$ipaddress,$email);
header("Location: register.php?registrationsuccess");
exit();
}
}
以下是触发上述内容的HTML部分:
<form>
<div>
<label for="username" class="control-label" style="color: #666; position: absolute; top: 110px;">Username</label>
<div class="input-group" style="margin-left: 100px; margin-top: 8px; width: 300px;">
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
<input type="text" name="user" class="form-control" placeholder="Username" required>
</div>
<br/>
<label for="password" class="control-label" style="color: #666; position: absolute; top: 163px;">Password</label>
<div style="margin-left: 100px; width: 300px;" class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
<input type="password" name="pw" class="form-control" placeholder="Password" required>
</div>
</br>
<label for="email" class="control-label" style="color: #666; position: absolute; top: 220px;">Email</label>
<div style="margin-left: 100px; width: 300px;" class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-import"></span></span>
<input type="text" name="mail" class="form-control" placeholder="E-mail" required>
</div>
<div class="btn-group" style="position: absolute; top: 265px; left: 125px;">
<button type="submit" class="btn btn-default" style="width: 300px; font-size: 18px;">Register</button>
</form>
是的,这是使用bootstrap。 现在,每当您尝试登录时,它实际上会将您重定向到register.php?empty,表示您没有在字段中输入任何内容。
这就是zPanel对我的反应:
[error] PHP Notice: Undefined index: username
[错误] PHP注意:未定义的索引:密码 [错误] PHP注意:未定义索引:电子邮件
老实说,我不知道是什么导致了这一切。 我错过了什么吗?
答案 0 :(得分:1)
首先,你没有去掉表格的方法。它应该是<form method="POST">
。
之后你需要改变
if(isset($_GET['user']) && isset($_GET['pw']) && isset($_GET['mail']))
要
if(isset($_POST['user']) && isset($_POST['pw']) && isset($_POST['mail']))
我认为这会奏效。让我知道。
感谢。
答案 1 :(得分:1)
像这样更改代码......
if(isset($_GET['user']) && isset($_GET['pw']) && isset($_GET['mail']))
{
$username = $_GET["user"];
$password = $_GET['pw'];
$email = $_GET["mail"];
$ipaddress = $_SERVER["REMOTE_ADDR"];
if(empty($username) || empty($password) || empty($email)) header("Location: register.php?empty");
else if(user_exists($username)) header("Location: register.php?exist");
else if(email_exists($email)) header("Location: register.php?mailexist");
else if($password != $repeat_pass) header("Location: register.php?wrongpw");
else
{
register($username,$password,$ipaddress,$email);
header("Location: register.php?registrationsuccess");
exit();
}
}
HTML应该是这样的......
<form method="GET" action="action_page_name.php">
<div>
<label for="username" class="control-label" style="color: #666; position: absolute; top: 110px;">Username</label>
<div class="input-group" style="margin-left: 100px; margin-top: 8px; width: 300px;">
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
<input type="text" name="user" class="form-control" placeholder="Username" required>
</div>
<br/>
<label for="password" class="control-label" style="color: #666; position: absolute; top: 163px;">Password</label>
<div style="margin-left: 100px; width: 300px;" class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
<input type="password" name="pw" class="form-control" placeholder="Password" required>
</div>
</br>
<label for="email" class="control-label" style="color: #666; position: absolute; top: 220px;">Email</label>
<div style="margin-left: 100px; width: 300px;" class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-import"></span></span>
<input type="text" name="mail" class="form-control" placeholder="E-mail" required>
</div>
<div class="btn-group" style="position: absolute; top: 265px; left: 125px;">
<button type="submit" class="btn btn-default" style="width: 300px; font-size: 18px;">Register</button>
</form>
在开始使用PHP进行更多开发之前,您应该先了解GET与...之间的区别。 POST。
答案 2 :(得分:0)
在使用PHP-HTML提交数据时,您必须使用&#39; <form>
的方法属性。 method属性指定如何发送表单数据(表单数据发送到action属性中指定的页面)。
表单数据可以作为URL变量发送(使用method =&#34; get&#34;)或HTTP post post(使用method =&#34; post&#34;)。{{1}你必须提到像
这样的GET / POST方法<form>
此外,如果您要将数据提交到其他页面,则应设置<form method="GET">
属性。否则action
。
action=""
答案 3 :(得分:0)
您的表单缺少方法和操作。该操作是将接收和处理数据的文件。方法是表单将如何发送数据。
<form method="POST" action="file.php">
答案 4 :(得分:0)
您应该为按钮name
添加submit
:
<input type="submit" name="submit">
之后,请检查isset
提交按钮:
if (isset($_POST['submit']) {
//enter code here
}