Hi!
Ich habe ein Login PHP Skript daß anscheinend bei unterschiedlichen Usern NICHT funktioniert. Hier das Skript:
Im IF Block werden diverse Abfragen durchgeführt und dementsprechende HTTP Response-Codes / Jsons zurückgegeben ( Login erfolgreich, Falsches Passwort etc ) auf diese ich dann auf der Webseite darauf reagiere ( Angular SPA )
Jetzt ist es aber so, daß hier User sagten daß sie eine Meldung "Unbekannter User" erhalten haben, obwohl sie - laut eigener Aussage - die korrekten Daten eingegeben haben.
Und diese Meldung kommt definitv aus dem else Block.
Vorrausgesetzt die DB Verbindung wurde erfolgreich aufgebaut:
Wie könnte ich hier zudem Prüfen ob die Verbindung zur DB steht bzw. die Fehlermeldung aus der database.php checken ?
Bin für jeden Hinweis dankbar
Ich habe ein Login PHP Skript daß anscheinend bei unterschiedlichen Usern NICHT funktioniert. Hier das Skript:
PHP-Code:
include_once './config/database.php';
require "../vendor/autoload.php";
use \Firebase\JWT\JWT;
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");
$conn = null;
$email = '';
$password = '';
$databaseService = new DatabaseService();
$conn = $databaseService->getConnection();
// POST Variablen vom Eingabeformular ->
$data = json_decode(file_get_contents("php://input"));
$email = $data->email;
$password = $data->password;
$query = "SELECT id, name, pass FROM " . $table . " WHERE email = :email"; // $table kommt aus database.php
$stmt = $conn->prepare( $query );
$stmt->bindParam(':email', $email);
$stmt->execute();
$num = $stmt->rowCount();
if($num > 0)
{ ... }
else {
// DB Verbindung schließen ->
$conn = null;
http_response_code(401);
echo json_encode(array("message" => "Unbekannter User."
));
}
Jetzt ist es aber so, daß hier User sagten daß sie eine Meldung "Unbekannter User" erhalten haben, obwohl sie - laut eigener Aussage - die korrekten Daten eingegeben haben.
Und diese Meldung kommt definitv aus dem else Block.
Vorrausgesetzt die DB Verbindung wurde erfolgreich aufgebaut:
- Gibt es irgendeinen Grund, der dazu führen könnte daß es trotz korrekter Eingabe von Username & Passwort hier der else Block ausgeführt wird ?
- Ist es überhaupt möglich, daß sowohl der IF Block und anschließend auch der Else Block ausgeführt wird ?
Wie könnte ich hier zudem Prüfen ob die Verbindung zur DB steht bzw. die Fehlermeldung aus der database.php checken ?
PHP-Code:
$table = 'XXXXX';
class DatabaseService{
private $db_host = "XXXX";
private $db_name = "XXXXX";
private $db_user = "XXXX";
private $db_password = "XXXXX";
private $connection;
public function getConnection(){
$this->connection = null;
try{
$this->connection = new PDO("mysql:host=" . $this->db_host . ";dbname=" . $this->db_name, $this->db_user, $this->db_password);
}
catch(PDOException $exception){
echo "Verbindung fehlgeschlagen: " . $exception->getMessage();
}
return $this->connection;
}
}
Bin für jeden Hinweis dankbar
Kommentar