使用PDO和会话创建登录表单 [英] Using PDO and sessions to create a login form

查看:54
本文介绍了使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆