iniciando session como usuario o administrador desde 2 tablas diferentes

está bien, así que quiero iniciar session como usuario y administrador, mi tabla de usuarios se llama "sollicitant" y mi administrador es "bedrijf" (esto es holandés, lo siento). el código que tengo ahora funciona solo para 1 tabla, pero ¿cómo puedo tener una consulta SQL que se vea en ambas tablas para iniciar session?

<?php if(isset($_POST['email'])) { $inputEmail = htmlspecialchars($_POST['email']); $inputWachtwoord = htmlspecialchars($_POST['wachtwoord']); $servername = "localhost"; $databasename = "vacaturebank."; $username = "root"; $password = ""; try { $conn = new PDO("mysql:host=$servername; dbname=$databasename", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); return; } try { $stmt = $conn->prepare("SELECT * FROM sollicitant WHERE email = '$inputEmail'"); $stmt->execute(); $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); $row = $stmt->fetch(); $rowCount = $stmt->rowCount(); if ($rowCount) { if ($inputWachtwoord == $row['wachtwoord']) echo "<br/>Successvol ingelogd"; else echo "<br/>Gebruikersnaam en wachtwoord komen niet overeen."; header("Location: inloggen.html"); } else { echo "<br/>Login failed, no record found"; } } catch(PDOException $e) { echo "Error: " . $e->getMessage(); } $conn = null; session_start(); $_SESSION["login"] = true; $_SESSION["email"] = $inputEmail; } ?> 

Debe especificar ambas tablas con la columna de email :

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

Otra posibilidad es usar un JOIN explícito con alias '(Los alias' son solo para acortar cosas, no tienes que usarlos):

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

Hacer esto significa que solo debe contabilizar el eamil en una columna de una tabla, ya que JOIN se asegura de que solo obtenga esas filas con un correo electrónico coincidente. Si la consulta está vacía, el correo electrónico no existe en ambos.

Editar

Si desea decidir a dónde ir en function del rol de un usuario, debe consolidar a todos los usuarios en una tabla con una columna que delinea el rol del usuario:

 SELECT * FROM users WHERE email = '$inputEmail' 

Luego, el PHP una vez que haya obtenido los datos:

 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.'; } 

¡Advertencia!

… como otros han dicho …

Little Bobby dice que tu script está en riesgo de ataques de inyección SQL. . ¡Incluso escaping de la string no es seguro!

Odio cuando la gente dice "no estoy tan lejos …" o "este sitio no será público …" o "es solo para la escuela, por lo que la security no importa …" . Si los maestros y los profesores no están hablando de security desde el primer día, lo están haciendo mal. Desafiarlos. Están enseñando prácticas de encoding descuidadas y peligrosas que los estudiantes tendrán que desaprender más adelante. También lo odio cuando la gente dice: "Voy a agregar security más tarde …" o "La security no es importante ahora …" o "Ignorar el riesgo de security …" .

¡Nunca almacene passwords de text sin formatting! Utilice las funciones incorporadas de PHP para manejar la security de las passwords. Si usa una versión PHP de less de 5.5, puede usar el package de compatibilidad password_hash() . No es necesario escaping passwords o utilizar cualquier otro mecanismo de limpieza antes de hash. Al hacerlo, cambia la contraseña y causa una encoding adicional innecesaria.

    Intereting Posts