Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Đăng nhập liên tục PHP và SQL

Đầu tiên, tạo một tệp mới có tên constants.php .

<?php
//This is constants.php file
define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', 'password');
define('DB_NAME', 'conference');
?>

Bạn nên xác định một cột mới có tên idint type và đó là auto_increment vì vậy nó sẽ là khóa chính của bạn. Các khóa chính phải là duy nhất và bảng của bạn thiếu một cột như vậy. Vì vậy, trong phpMyAdmin của bạn, hãy viết trong tab SQL:

ALTER TABLE `users` ADD `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST ;

Sau đó, trong tệp đăng nhập của bạn, bạn có thể sử dụng PDO như đã đề cập ở trên từ những người dùng khác (nếu bạn chưa sẵn sàng cho việc này, bạn có thể xem tại đây tại đây ).

<?php
function SignIn() {
    require_once("constants.php"); //Now constants will be accessible
    session_start(); 
    try {
        $link = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASSWORD);
        $username = $_POST['username']; //no need to esaping as we will use prepared statements
        $password = $_POST['password'];
        if (!empty($username) && !empty($password)) {
            //You need to define a new column named "id" which will be int auto_increment and it will be your primary key

            $sql = "SELECT id, username, password FROM users where username = :username AND password = :password";
            //Prepare your query
            $stmt = $link->prepare($sql);
            //Execute your query binding variables values
            $stmt->execute(array(':username'=>$username, ':password'=>$password));
            //Fetch the row that match the criteria
            $row = $stmt->fetch();

            if (!empty($row['username']) && !empty($row['password'])) {
                $_SESSION['is_logged'] = true; //Now user is considered logged in
                $_SESSION['username'] = $row['username'];
                $_SESSION['id'] = $row['id'];

                //Never store passwords in $_SESSION

                echo "Welcome to your User Account for CSIT Conference. Click to go home: ";
                echo '<a href="index.html"> Home Page </a>. ';
                echo "Or here to go to your assigned papers: ";
                echo '<a href="assigned.php"> Assigned Papers </a>. ';
            } else {
                echo "SORRY... YOU ENTERED WRONG ID AND PASSWORD... PLEASE RETRY...";
            }

            $link = null;
        } else {
            echo 'Please enter username and password.';
        }
    } catch(PDOException $e) {
        echo $e->getMessage();
    }
}

if (isset($_POST['submit'])) {
    SignIn();
}
?>

Cuối cùng, trong tệp của bạn assigned_papers.php bạn có thể truy cập $_SESSION các biến bạn đã lưu trữ và sau đó tìm nạp tất cả các giấy tờ được chỉ định cho người dùng vừa đăng nhập.

<?php
//assigned_papers
session_start();
require_once("constants.php"); //Now constants will be accessible
if (!empty($_SESSION['is_logged'])) {
    echo 'Hello, '.$_SESSION['username'].'! Here are your assigned papers: ';

    try {
        $link = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME, DB_USER, DB_PASSWORD);
        $sql = "SELECT * FROM assigned_papers where users_id = :users_id";
        $stmt = $link->prepare($sql);
        //We want all assigned papers for the particular user
        $stmt->execute(array(':users_id'=>$_SESSION['id']));
        $result = $stmt->fetchAll();
        foreach ($result as $row) {
            //You can echo what you want from table assigned_papers
            //echo '<p>'.$row['paper_name'].'</p>';
        }
    } catch(PDOException $e) {
        echo $e->getMessage();
    }

} else
    header("Location: login.php"); //If user isn't logged in then redirect him to login page
    die();
}
?>


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysqli ::mysqli ():(HY000 / 2002):Không thể kết nối với máy chủ MySQL cục bộ thông qua socket 'MySQL' (2)

  2. pymssql.OperationalError:Thông báo lỗi DB-Lib 20009, mức độ nghiêm trọng 9

  3. PHP:Cảnh báo:sort () yêu cầu tham số 1 là mảng, tài nguyên đã cho

  4. Nối chuỗi với giá trị trường trong MySQL

  5. Quay lại quá trình di chuyển Rails không thành công