使用PDO和会话创建登录表单 [英] Using PDO and sessions to create a login form
本文介绍了使用PDO和会话创建登录表单的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经使用PDO和php会话创建了一个登录注销表单.这是不同页面的完整代码
I have created a login-logout form using PDO and php session. Here is the entire code for different pages
登录表格
<form role="form" class="omb_loginForm" action="login.php" autocomplete="off" method="POST">
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-user"></i></span>
<input type="email" class="form-control" name="email" placeholder="Email">
</div>
<span class="help-block"></span>
<div class="input-group">
<span class="input-group-addon"><i class="fa fa-lock"></i></span>
<input type="password" class="form-control" name="password" placeholder="Password">
</div>
<span class="help-block"></span>
<button class="btn btn-lg btn-primary btn-block" name="submit" type="submit">Login</button>
</form>
login.php
login.php
<?php
session_start();
if (isset($_POST['submit'], $_POST['email'], $_POST['password']))
{
try
{
$email = $_POST['email'];
$password = $_POST['password'];
$dbhost = "localhost";
$dbname = "abc";
$dbuser = "abc";
$dbpass = "pwd";
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM register WHERE `email` = :email AND `password` = :password ";
$stmt = $conn->prepare($sql);
$stmt->execute(array(':email' => $_POST['email'], ':password'=> $_POST['password']));
$num=$stmt->rowCount();
if($num > 0)
{
header("location:dashboard.php");
}
else
{
header("location:login_form.html");
}
}
catch (Exception $e)
{
echo 'Caught exception: ', $e->getMessage(), "\n";
}
}
?>
session.php
session.php
<?php
$dbhost = "localhost";
$dbname = "abc";
$dbuser = "abc";
$dbpass = "pwd";
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass);
session_start();
$user_check=$_SESSION['login_user'];
$result = $conn->prepare("SELECT * FROM register WHERE email= :$user_check");
$result->execute(array(":usercheck"=>$user_check));
$row = $result->fetch(PDO::FETCH_ASSOC);
$login_session =$row['email'];
$user_id =$row['id'];
$user_passwords = $row['password'];
if(!isset($login_session))
{
$conn = null;
header('Location: login_form.html');
}
?>
dashboard.php
dashboard.php
<?php
include('session.php');
?>
<!DOCTYPE html>
<html>
<head>
<title>Your Home Page</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="profile">
<b id="welcome">Welcome : <i><?php echo $login_session; ?></i></b>
<b id="logout"><a href="logout.php">Log Out</a></b>
</div>
</body>
</html>
logout.php
logout.php
<?php
session_start();
if(session_destroy())
{
header("Location: index.php");
}
?>
我面临的问题是,当我尝试使用正确的凭据登录时,该表单将重定向到login_form.html,而它应该转到dashboard.php页面.
the problem that i am facing is that when the i try to login with the correct credentials the form gets redirected to login_form.html whereas it should go to dashboard.php page.
推荐答案
您的错误是:$user_check
.建议您进行如下更改.
Your error is :$user_check
. Sugget you to change like below.
$result = $conn->prepare("SELECT * FROM register WHERE email = :user_check");
/*^^^*/
$result->execute(array(":usercheck"=>$user_check));
这篇关于使用PDO和会话创建登录表单的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文