Php 登录页面无法继续请求?
我有一个使用MVC模式的登录系统,虽然它仍然是程序化的,而且已经4个小时没有工作了。它继续执行最后一条“else”语句,该语句重定向回login.php。这是我的密码 登录页面:Php 登录页面无法继续请求?,php,Php,我有一个使用MVC模式的登录系统,虽然它仍然是程序化的,而且已经4个小时没有工作了。它继续执行最后一条“else”语句,该语句重定向回login.php。这是我的密码 登录页面: <?php include 'view/template/header.php' ?> <div class="container"> <div class="row"> <div class="col-lg-6 col-lg-offset-3">
<?php include 'view/template/header.php' ?>
<div class="container">
<div class="row">
<div class="col-lg-6 col-lg-offset-3">
<div class="login-style">
<h2>Silahkan Login</h2>
<form action="controller/controller-login-admin.php" method="POST">
<div class="form-group">
<label for="username">Username:</label>
<input type="text" name="username" class="form-control" id="username">
</div>
<div class="form-group">
<label for="pwd">Password:</label>
<input type="password" name="password" class="form-control" id="pwd">
</div>
<button type="submit" name="submit-admin-login" class="btn btn-primary">Submit</button>
</form>
</div>
</div>
</div>
</div>
<?php include 'view/template/footer.php' ?>
<?php
require_once $_SERVER['DOCUMENT_ROOT']. '/project-school-frontend/config/database.php';
function loginUser($username, $password){
global $koneksi;
if (empty($username) && !empty($password))
{
$_SESSION['pesan'] = 'Userid harus diisi';
$_SESSION['alert'] = 'info';
header('location:../login.php');
}
elseif (empty($password) && !empty($username))
{
$_SESSION['pesan'] = 'Password harus diisi';
$_SESSION['alert'] = 'info';
header('location:../login.php');
}
elseif (empty($username && $password))
{
$_SESSION['pesan'] = 'Userid dan password wajib diisi';
$_SESSION['alert'] = 'info';
header('location:../login.php');
}
else
{
$sql= "SELECT * FROM admin WHERE username='$username' AND password='$password'";
$query= mysqli_query($koneksi, $sql);
$result= mysqli_num_rows($query);
$row = mysqli_fetch_array($query);
if($result > 0)
{
session_start();
$_SESSION['username']=$row['username'];
$_SESSION['level'] = $row['level'];
header('Location: ../view/admin-dashboard.php');
}
else
{
header('Location: ../login.php');
}
}
}
Silahkan登录
用户名:
密码:
提交
控制器
<?php
require_once $_SERVER['DOCUMENT_ROOT']. '/project-school-frontend/admin/model/admin-model-master.php';
if (isset($_POST['submit-admin-login'])){
$username=mysqli_real_escape_string($koneksi, $_POST['username']);
$password=mysqli_real_escape_string($koneksi, md5($_POST['password']));
loginUser($username, $password);
}
我可以看到您有一些问题
此功能做得太多,需要重新安排
相比之下,你有一个错误
您必须在该sql语句上绑定参数,这是不安全的,并且可能会打乱查询,具体取决于这些字段中的内容
不要将会话\u start()
置于条件中
您应该使用password\u hash()
和password\u verify()
(或等效库)来存储和比较密码
/config.php
拥有一个包含基本内容的配置文件,并始终将页面作为第一件要加载的事情包含在每个顶级页面上
<?php
# Error reporting ON for development
error_reporting(E_ALL);
ini_set('display_errors',1);
# Define separators for full compatibility
define('DS',DIRECTORY_SEPARATOR);
define('ROOT_DIR',__DIR__);
define('FUNCTIONS',ROOT_DIR.DS.'functions');
# Start the session by default
session_start();
# Add the database
require_once(ROOT_DIR.DS.'project-school-frontend'.DS.'config'.DS.'database.php');
试试这个$query=mysqli_query($koneksi,$sql)或die(mysqli_error($koneksi))代码>非常感谢您的回复。非常感谢。不管怎样,它不起作用。我的登录页面仍然没有打开。没有消息,但重定向到登录页面,再次输入此$row=mysqli\u fetch\u数组($query);打印(行);退出再次感谢兄弟与我保持联系,但还是不行。无论如何,这是我的目录路径,以防你想知道。在报头之前,所有报头函数都回显“something1”;2,3,.. 退出();因此,您会发现页面重定向的位置以及哪个if语句失败。非常感谢您的大力支持。我知道这是意大利面代码。这只是一个“早期”发展。我正准备重构它,但你首先是来拯救这一天的。谢谢兄弟。别忘了SQL注入。
<?php
function setError($pesan,$alert,$redirect = false)
{
$_SESSION['pesan'] = $pesan;
$_SESSION['alert'] = $alert;
# Redirect if set
if($redirect) {
header("Location: {$redirect}");
exit;
}
}
<?php
function loginUser($koneksi, $username, $password){
# Add messaging error
include_once(FUNCTIONS.DS.'setError.php');
# Trim out values
$username = (!empty($username))? trim($username) : false;
$password = (!empty($password))? trim($password) : false;
# First check if either value is empty
if(empty($username) || empty($password)) {
# If both empty, set message
if(empty($username) && empty($password))
$msg = 'Userid dan password wajib diisi';
# If username empty, set message
elseif(empty($username))
$msg = 'Userid harus diisi';
# If password empty, set message
elseif(empty($password))
$msg = 'Password harus diisi';
# If something is really wrong, make unknown
else
$msg = 'Unknown error';
# Set session values, redirec
setError($msg,'info','../login.php');
}
else {
# Fetching the user from DB should be a function like getAdmin($koneksi,$username,$password)
# !***** BIND PARAMETERS HERE, THIS IS UNSAFE!!! ******!
$sql= "SELECT * FROM admin WHERE username='$username' AND password='$password'";
$query= mysqli_query($koneksi, $sql);
$result= mysqli_num_rows($query);
$row = mysqli_fetch_array($query);
if($result > 0){
$_SESSION['username'] = $row['username'];
$_SESSION['level'] = $row['level'];
header('Location: ../view/admin-dashboard.php');
exit;
}
else{
setError('Invalid Username or Password','info','../login.php');
}
}
}