我遇到登录验证问题。问题是当我尝试使用admin登录时,页面在checklogin.php上停止,并且不会告诉它是否成功。这是我的代码。
的index.html
<body>
<section class="container">
<div class="login">
<h1>Aplikasi Pengelola Data Pelatihan dan Seminar</h1>
<form method="post" action="checklogin.php">
<p><input type="text" name="username" value="" placeholder="Username or Email"></p>
<p><input type="password" name="password" value="" placeholder="Password"></p>
<p class="remember_me">
<label>
<input type="checkbox" name="remember_me" id="remember_me">
Remember me on this computer
</label>
</p>
<p class="submit"><input type="submit" name="commit" value="Login"></p>
</form>
</div>
<div class="login-help">
<p>Forgot your password? <a href="index.html">Click here to reset it</a>.</p>
</div>
</section>
</body>
checklogin.php
<?php
if (isset($_POST['login']))
{
if(isset($_POST['username']))
{
$username=$_POST['username'];
}
if(isset($_POST['password']))
{
$password=$_POST['password'];
}
// Connect to database.
$host="localhost"; // Host name.
$db_user="root"; // MySQL username.
$db_password=""; // MySQL password.
$db="seminardanpelatihan"; // Database.
$con = mysqli_connect($host,$db_user,$db_password,$db);
if(mysqli_connect_errno())
{
echo "Failed to connect : " . mysqli_connect_error();
}
else
{
mysqli_select_db($con, $db);
$result = mysqli_query($con, "SELECT * FROM login WHERE username='$username' and password='$password'");
$count=mysqli_num_rows($result);
if($count==1)
{
$_SESSION['username']= "username";
$_SESSION['password']= "password";
header("login_success.php"); // Re-direct to login_success.php
}
else
{
echo "Something wrong";
}
mysqli_close($con);
}
}
?>
感谢您的帮助。
答案 0 :(得分:2)
变化
if (isset($_POST['login']))
到
if (isset($_POST['commit']))
我测试了。
的修改
也改变(不要跳过以前的改变)
$_SESSION['username']= "username";
$_SESSION['password']= "password";
header("login_success.php");
到
$_SESSION['username']= $username;
$_SESSION['password']= $password;
header("Location: login_success.php"); //Proper Redirect Method
1)重定向需要Location:
前缀
2)您使用"username"
代替$username
答案 1 :(得分:0)
首先更改代码的第一行:
<?php
if (isset($_POST['login']))
到
<?php
if (isset($_POST['username']))
如果用户至少发布用户名,这将为您提供执行页面所有代码的选项。我更愿意采取更严格的措施:
<?php
if (isset($_POST['username'])&&isset($_POST['password'])
因此,如果用户未提交这两个值,您将无法运行代码。 (只有用户名或密码才能通过验证!)
然后:您的问题是您没有从查询中检索值。
mysqli_select_db($con, $db);
$result = mysqli_query($con, "SELECT * FROM login WHERE username='$username' and password='$password'");
$count=mysqli_num_rows($result);
if($count==1)
{
可以检查你是否只有一个结果但是你必须在这些行之后添加:
$row=mysqli_fetch_array($result);
$username = $row['username'];
$password = $row['password'];
session_start();
然后以这种方式编辑以下两个:
$_SESSION['username']= $username;
$_SESSION['password']= $password;
另请注意,我不会将密码存储在$_SESSION
数组或代码中的任何其他值中,并建议您对密码使用某种加密方法。