php - PHP登录系统不起作用
问题描述
我正在用 PHP 做一个登录系统,但它不能正常工作
这是我的登录页面:
<div class="container">
<form method="post" action="index.php?page=login">
<div class="form-group row">
<label for="loginFormInputEmail" class="col-sm-2 col-form-label">Email:</label>
<div class="col-sm-10">
<input id="loginFormInputEmail" class="form-control" type="email" name="email" value="<?php if(!empty($_POST['email'])) echo $_POST['email'];?>" />
</div>
</div>
<div class="form-group row">
<label for="loginFormInputPass" class="col-sm-2 col-form-label">Pass:</label>
<div class="col-sm-10">
<input id="loginFormInputPass" class="form-control" type="password" name="password" />
</div>
</div>
<div class="form-group row">
<div class="offset-sm-2 col-sm-10">
<input class="btn btn-primary" type="submit" value="login" />
</div>
</div>
</form>
</div>
在这里,我有放置登录系统的 Usercontroller 文件:
public function login() {
if(!empty($_POST)) {
if(!empty($_POST['email']) && !empty($_POST['password'])) {
$existing = $this->userDAO->selectByEmail($_POST['email']);
if(!empty($existing)) {
if (password_verify($_POST['password'], $existing['password'])) {
$_SESSION['user'] = $existing;
} else {
$_SESSION['error'] = 'Unknown username / password';
}
} else {
$_SESSION['error'] = 'Unknown username / password';
}
} else {
$_SESSION['error'] = 'Unknown username / password';
}
}
header('Location: index.php');
exit();
}
问题是,如果我进入登录页面,它会自动返回索引页面,因为我有位置:index.php。但我不知道如何改变它以使其工作。
解决方案
验证用户时需要添加 header()。当用户通过您的验证时,您应该去任何地方的标题。
public function login() {
if(!empty($_POST)) {
if(!empty($_POST['email']) && !empty($_POST['password'])) {
$existing = $this->userDAO->selectByEmail($_POST['email']);
if(!empty($existing)) {
if (password_verify($_POST['password'], $existing['password'])) {
$_SESSION['user'] = $existing;
header('Location: some_where_else.php');
// dont forget the exit as header does not stop the flow of execution
exit;
} else {
$_SESSION['error'] = 'Unknown username / password';
}
} else {
$_SESSION['error'] = 'Unknown username / password';
}
} else {
$_SESSION['error'] = 'Unknown username / password';
}
}
// This is now run only when validation failed
header('Location: index.php');
exit();
}
推荐阅读
- python-2.7 - python 2.7错误:在课堂上使用urlopen时出现'raise HTTPError(req.get_full_url(), code, msg, hdrs, fp) HTTPError'
- spring-security-oauth2 - AccessTokenProviderChain 和 OAuth2RestOperations
- function - 如何通过 Firebase 管理员访问 Google Cloud Storage 中的存储桶
- scala - Spark Scala 中的模棱两可的模式
- python - 将文本文件中的行写入 .csv 文件
- python - 协助芹菜伐木
- javascript - Javascript函数 - 将字符串参数转换为运算符
- python - 通过 iloc 分配 pandas df 切片是通过引用吗?
- amazon-web-services - hadoop s3a中的Amazon s3Exception错误请求和位置约束
- java - JCache:指定了不兼容的缓存键类型,预期类 java.lang.Object 但类 java.lang.String