这是带会话的登录代码。我使用bootstrap。代码没有重定向到index.html,当我在Postman中测试它工作但它不能在这个bootstrap模板中工作。我没理由?请帮忙
<?php
if($_SERVER["REQUEST_METHOD"]=="POST") {
$email=$_POST["email"];
$password=$_POST["password"];
$sql = "SELECT * FROM login where email='$email' and password='$password'";
$result = mysqli_query($conn,$sql);
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
$count = mysqli_num_rows($result);
if ($count>0) {
// output data of each row
if($row['admin_role']==1) {
//$_SESSION["email"]=$email;
//$_SESSION["id"]=$row['user_id'];
//echo "Login successfull";
header('Location: index.html');
exit;
}
} else {
echo "0 results";
}
}
?>
<div class="row">
<div class="col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-4 col-md-offset-4">
<div class="login-panel panel panel-default">
<div class="panel-heading"> Admin Log in</div>
<div class="panel-body">
<form role="form">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="E-mail" name="email" type="email" autofocus="">
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" name="password" type="password" value="">
</div>
<div class="checkbox">
<label>
<input name="remember" type="checkbox" value="Remember Me">Remember Me
</label>
</div>
<a href="" class="btn btn-primary">Login</a>
</fieldset>
</form>
</div>
</div>
</div><!-- /.col-->
</div><!-- /.row -->
答案 0 :(得分:6)
您的表单是GET表单,您需要在method="POST"
标记上设置<form>
。
除此之外,您的代码非常容易受到攻击,您应该在数据库中对密码进行哈希处理,并且应该使用PDO,因为它更安全,您还应该使用预准备语句并关闭模拟语句。
目前,您的代码容易受到SQL注入攻击,这是Web应用程序最基本但最危险的安全威胁之一。
答案 1 :(得分:2)
OverCoder是对的,顺便说一句,你应该在分配值之前检查两个POST变量的isset:
if (isset($_POST["email"]) && isset($_POST["password"])) {
//bla bla
}
答案 2 :(得分:2)
您忘记了提交按钮,您忘记了表单方法和类型,所以: action =“#”告诉你,来自同一个php文件。 非常重要的是改变这个: $电子邮件= $ _ POST [ “电子邮件”]; 上 $电子邮件=用strip_tags($ _ POST [ “电子邮件”]);
了解strip_tags()函数:)
<div class="row">
<div class="col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-4 col-md-offset-4">
<div class="login-panel panel panel-default">
<div class="panel-heading"> Admin Log in</div>
<div class="panel-body">
<form role="form" action="#" method="post">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="E-mail" name="email" type="email" autofocus="">
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" name="password" type="password" value="">
</div>
<div class="checkbox">
<label>
<input name="remember" type="checkbox" value="Remember Me">Remember Me
</label>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</fieldset>
</form>
</div>
</div>
</div><!-- /.col-->
答案 3 :(得分:0)
我认为
步骤1:您可以使用POST设置表单方法,如method="post"
并使用按钮类型提交(不使用锚点和类型=&#34;按钮&#34;对于从表单发送的数据不起作用)。仅使用了提交按钮。
Step2:您可以使用条件输入字段来登录。 isset()
表示字段不是空数据(PHP函数),而&&
表示这两种情况。
步骤3:如果可以在会话中存储数据,则需要启动会话(session_start()
)。如果您无法开始会话,则无法存储数据。
if(isset($_POST["email"]) && isset($_POST["password"])) {
$email = trim($_POST["email"]);
$password = trim($_POST["password"]);
$sql = "SELECT * FROM login where email='$email' and password='$password'";
$result = mysqli_query($conn,$sql);
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);
$count = mysqli_num_rows($result);
if ($count>0) {
// output data of each row
if($row['admin_role']==1) {
//session_start();
//$_SESSION["email"] = $email;
//$_SESSION["id"] = $row['user_id'];
//echo "Login successfull";
header('Location: index.html');
}
} else {
echo "0 results";
}
}
<div class="row">
<div class="col-xs-10 col-xs-offset-1 col-sm-8 col-sm-offset-2 col-md-4 col-md-offset-4">
<div class="login-panel panel panel-default">
<div class="panel-heading"> Admin Log in</div>
<div class="panel-body">
<form role="form" action="" method="POST">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="E-mail" name="email" type="email" autofocus="">
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" name="password" type="password" value="">
</div>
<div class="checkbox">
<label>
<input name="remember" type="checkbox" value="Remember Me">Remember Me
</label>
</div>
<button type="submit" class="btn btn-primary">Login</button>
</fieldset>
</form>
</div>
</div>
</div><!-- /.col-->
</div><!-- /.row -->