如何将会话放入登录php

时间:2017-08-01 06:46:55

标签: php mysql

我想问一下如何在login.php中输入和写入会话?我希望我的应用程序可以知道我的应用程序中的当前帐户登录。我想使用session方法来实现我的登录php。因为用户登录后,用户将键入他们的数据,数据将发送到数据库,该用户输入的数据将仅显示在该用户帐户中。 这是我的Login.php

<?php 
require_once '../includes/DbOperations.php';
$response = array(); 

if($_SERVER['REQUEST_METHOD']=='POST'){
if(isset($_POST['username']) and isset($_POST['password'])){
    $db = new DbOperations(); 

    if($db->userLogin($_POST['username'], $_POST['password'])){
        $user = $db->getUserByUsername($_POST['username']);
        $response['error'] = false; 
        $response['id'] = $user['id'];
        $response['email'] = $user['email'];
        $response['username'] = $user['username'];
    }else{
        $response['error'] = true; 
        $response['message'] = "Invalid username or password";          
    }

}else{
    $response['error'] = true; 
    $response['message'] = "Required fields are missing";
}
}
echo json_encode($response);

?>

这是我的DbOperations.php

<?php 

class DbOperations{

    private $con; 

    function __construct(){

        require_once dirname(__FILE__).'/DbConnect.php';

        $db = new DbConnect();

        $this->con = $db->connect();

    }

    /*CRUD -> C -> CREATE */

    public function createUser($username, $pass, $email){
        if($this->isUserExist($username,$email)){
            return 0; 
        }else{
            $password = md5($pass);
            $stmt = $this->con->prepare("INSERT INTO `users` (`id`, `username`, `password`, `email`) VALUES (NULL, ?, ?, ?);");
            $stmt->bind_param("sss",$username,$password,$email);

            if($stmt->execute()){
                return 1; 
            }else{
                return 2; 
            }
        }
    }

    public function userLogin($username, $pass){
        $password = md5($pass);
        $stmt = $this->con->prepare("SELECT id FROM users WHERE username = ? AND password = ?");
        $stmt->bind_param("ss",$username,$password);
        $stmt->execute();
        $stmt->store_result(); 
        return $stmt->num_rows > 0; 
    }

    public function getUserByUsername($username){
        $stmt = $this->con->prepare("SELECT * FROM users WHERE username = ?");
        $stmt->bind_param("s",$username);
        $stmt->execute();
        return $stmt->get_result()->fetch_assoc();
    }


    private function isUserExist($username, $email){
        $stmt = $this->con->prepare("SELECT id FROM users WHERE username = ? OR email = ?");
        $stmt->bind_param("ss", $username, $email);
        $stmt->execute(); 
        $stmt->store_result(); 
        return $stmt->num_rows > 0; 
    }

}
?>

2 个答案:

答案 0 :(得分:0)

要在PHP中使用会话,首先需要使用session_start()启动会话。您应该在要使用会话的每个页面上执行此操作。

session_start();

会话开始后,您可以在其中存储变量,例如

if($db->userLogin($_POST['username'], $_POST['password'])){
    $user = $db->getUserByUsername($_POST['username']);
    $response['error'] = false; 
    $response['id'] = $user['id'];
    $response['email'] = $user['email'];
    $response['username'] = $user['username'];
    $_SESSION['loggedin'] = true;
    $_SESSION['userid'] = $user['id'];
}else{
    $response['error'] = true; 
    $response['message'] = "Invalid username or password";          
}

完成会话后想要销毁它,例如当用户退出时,您应该运行session_destroy()

答案 1 :(得分:0)

  • session_start();开始会话,
  • $_SESSION['username'] = $user['username'];设置会话中的变量,
  • session_unset();释放会话变量,
  • session_destroy();删除会话。