Add diagnose_login.php for database query diagnostics

This commit is contained in:
Hamza-Ayed
2026-06-25 00:00:37 +03:00
parent a56e318e20
commit 8839a500fc

View File

@@ -0,0 +1,94 @@
<?php
header('Content-Type: text/plain; charset=UTF-8');
require_once __DIR__ . '/core/bootstrap.php';
echo "--- 🔍 SIRO LOGIN DIAGNOSTIC TOOL ---\n\n";
try {
$con = Database::get('main');
echo "✅ Database connection successful.\n";
} catch (Exception $e) {
echo "❌ Database connection failed: " . $e->getMessage() . "\n";
exit;
}
$targetId = 'e494c5750f95e1c26654';
echo "Target Passenger ID: " . $targetId . "\n\n";
// 1. Check passengers table
try {
$stmt = $con->prepare("SELECT * FROM passengers WHERE id = ?");
$stmt->execute([$targetId]);
$p = $stmt->fetch(PDO::FETCH_ASSOC);
if ($p) {
echo "✅ Passenger found in database:\n";
echo " - Phone (encrypted): " . $p['phone'] . "\n";
echo " - Phone (decrypted): " . $encryptionHelper->decryptData($p['phone']) . "\n";
echo " - First Name (decrypted): " . $encryptionHelper->decryptData($p['first_name']) . "\n";
echo " - Last Name (decrypted): " . $encryptionHelper->decryptData($p['last_name']) . "\n";
} else {
echo "❌ Passenger NOT found in database!\n";
}
} catch (Exception $e) {
echo "❌ Error querying passengers table: " . $e->getMessage() . "\n";
}
// 2. Check phone_verification_passenger table
try {
$decryptedPhone = '962798583052';
$encryptedPhone = $encryptionHelper->encryptData($decryptedPhone);
echo "\nSearching phone_verification_passenger for: $decryptedPhone ($encryptedPhone)\n";
$stmt = $con->prepare("SELECT * FROM phone_verification_passenger WHERE phone_number = ?");
$stmt->execute([$encryptedPhone]);
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (!empty($rows)) {
echo "✅ Phone verification rows found (" . count($rows) . "):\n";
foreach ($rows as $row) {
echo " - ID: " . $row['id'] . " | Verified: " . $row['verified'] . " | Expiration: " . $row['expiration_time'] . " | Created At: " . $row['created_at'] . "\n";
}
} else {
echo "❌ No phone verification rows found for this phone number!\n";
// Let's get any recent rows
$stmt2 = $con->prepare("SELECT * FROM phone_verification_passenger ORDER BY id DESC LIMIT 5");
$stmt2->execute();
$all = $stmt2->fetchAll(PDO::FETCH_ASSOC);
echo " Recent rows in table:\n";
foreach ($all as $row) {
$dec = $encryptionHelper->decryptData($row['phone_number']);
echo " - ID: " . $row['id'] . " | Phone (decrypted): $dec | Verified: " . $row['verified'] . "\n";
}
}
} catch (Exception $e) {
echo "❌ Error querying phone_verification_passenger: " . $e->getMessage() . "\n";
}
// 3. Test the exact SQL query from loginFromGooglePassenger.php
echo "\n--- 🧪 Testing loginFromGooglePassenger query (WITH verified = 1 constraint) ---\n";
try {
$sqlOld = "SELECT p.`id` FROM passengers p
LEFT JOIN phone_verification_passenger ON phone_verification_passenger.phone_number = p.phone
WHERE p.id = :id AND phone_verification_passenger.verified = '1'";
$stmt = $con->prepare($sqlOld);
$stmt->execute([':id' => $targetId]);
$count = $stmt->rowCount();
echo "Old query row count: $count\n";
} catch (Exception $e) {
echo "Old query error: " . $e->getMessage() . "\n";
}
echo "\n--- 🧪 Testing loginFromGooglePassenger query (WITHOUT verified = 1 constraint) ---\n";
try {
$sqlNew = "SELECT p.`id` FROM passengers p
LEFT JOIN phone_verification_passenger ON phone_verification_passenger.phone_number = p.phone
WHERE p.id = :id";
$stmt = $con->prepare($sqlNew);
$stmt->execute([':id' => $targetId]);
$count = $stmt->rowCount();
echo "New query row count: $count\n";
} catch (Exception $e) {
echo "New query error: " . $e->getMessage() . "\n";
}