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

đăng nhập với tư cách người dùng hoặc quản trị viên từ 2 bảng khác nhau

Bạn cần chỉ định cả hai bảng bằng email cột:

SELECT * 
FROM sollicitant, bedrijf 
WHERE sollicitant.email = '$inputEmail' 
AND bedrijf.email = '$inputEmail'

Một khả năng khác là sử dụng JOIN rõ ràng với bí danh '(Bí danh' chỉ để rút ngắn mọi thứ, bạn không cần phải sử dụng chúng.):

SELECT *
FROM sollicitant s, bedrijf b
ON s.email = b.email
WHERE s.email = '$inputEmail' 

Làm điều này có nghĩa là bạn chỉ phải tính khoản eamil trong một cột của một bảng là JOIN đảm bảo rằng bạn chỉ nhận được những hàng có email phù hợp. Nếu truy vấn trống, email không tồn tại trong cả hai.

Chỉnh sửa

Nếu bạn muốn quyết định đi đâu dựa trên vai trò của người dùng, bạn nên hợp nhất tất cả người dùng vào một bảng có cột phân định vai trò của người dùng:

SELECT * FROM users WHERE email = '$inputEmail' 

Sau đó, PHP khi bạn đã tìm nạp dữ liệu:

if('sollicitant' == $row['role']) {
    header('Location: sollicitant.php');
    exit();
} elseif ('bedrijf' == $row['role']) {
    header('Location: befrijf.php');
    exit();
} else {
    echo 'There is a problem with your login.';
}        

Cảnh báo!

... như những người khác đã nói ...

Little Bobby nói tập lệnh của bạn có nguy cơ bị tấn công SQL Injection. . Ngay cả thoát khỏi chuỗi không an toàn!

Tôi ghét khi mọi người nói "Tôi không xa đến mức đó ..." hoặc "Trang web này sẽ không được công khai ..." hoặc "Nó chỉ dành cho trường học, vì vậy an ninh không quan trọng ..." . Nếu các giáo viên và giáo sư không nói về bảo mật ngay từ ngày đầu tiên, họ đang làm sai. Thách thức họ. Họ đang dạy những cách viết mã cẩu thả và nguy hiểm mà sinh viên sẽ phải bỏ học sau này. Tôi cũng rất ghét khi mọi người nói, "Tôi sẽ bổ sung bảo mật sau ..." hoặc "Bảo mật hiện không quan trọng ..." hoặc "Bỏ qua rủi ro bảo mật ..." .

Không bao giờ lưu trữ mật khẩu văn bản thuần túy! Vui lòng sử dụng các hàm tích hợp sẵn của PHP để xử lý bảo mật mật khẩu. Nếu bạn đang sử dụng phiên bản PHP nhỏ hơn 5.5, bạn có thể sử dụng password_hash() gói tương thích . Không cần thiết phải thoát mật khẩu hoặc sử dụng bất kỳ cơ chế làm sạch nào khác trên chúng trước khi băm. Làm như vậy thay đổi mật khẩu và gây ra mã hóa bổ sung không cần thiết.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để lấy các kiểu số từ MySQL bằng PDO?

  2. 50 câu hỏi phỏng vấn MySQL hàng đầu bạn phải chuẩn bị vào năm 2022

  3. Làm cách nào để sử dụng lại các giá trị auto_increment?

  4. Tại sao nosql với cassandra thay vì mysql?

  5. pha cài đặt mysql trên macOS