Maison  >  Article  >  base de données  >  Pourquoi mes messages d'erreur de connexion MySQLi personnalisés ne s'affichent-ils pas dans PHP 8.1 ?

Pourquoi mes messages d'erreur de connexion MySQLi personnalisés ne s'affichent-ils pas dans PHP 8.1 ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-26 11:56:10106parcourir

Why Aren't My Custom MySQLi Connection Error Messages Displaying in PHP 8.1 ?

Pourquoi PHP n'affiche-t-il pas mon message d'erreur personnalisé lorsque Mysqli_connect échoue ?

Comprendre le problème :

Dans votre code fourni, vous essayez de vous connecter à une base de données à l'aide de mysqli_connect et imprimez un message d'erreur personnalisé en cas d'échec de la connexion. Cependant, PHP 8.1 et versions ultérieures gèrent les erreurs différemment, générant des exceptions au lieu de nécessiter une gestion manuelle.

Message d'erreur personnalisé caché :

À partir de PHP 8.1, mysqli_connect génère une exception lorsqu'une erreur se produit, ce qui signifie que votre code n'a plus besoin de vérifier manuellement l'état de la connexion. De plus, vous devez éviter d’afficher des messages d’erreur personnalisés aux utilisateurs. Utilisez plutôt les mécanismes de gestion des erreurs de PHP ou fournissez une page d'erreur générique.

Configuration des erreurs d'affichage :

Pour empêcher PHP d'afficher des messages d'erreur aux utilisateurs, définissez le paramètre 'display_errors 'option dans php.ini ou votre code à 0 :

ini_set('display_errors', 0);

Gestionnaire d'erreurs pour Utilisateurs du site :

Pour une page d'erreur conviviale, utilisez un gestionnaire d'erreurs qui enregistre l'erreur, définit un code d'état HTTP 500 et affiche un message d'erreur générique ou redirige vers une page d'erreur.

set_exception_handler(function ($e)
{
    error_log($e);
    http_response_code(500);
    if (ini_get('display_errors')) {
        echo $e;
    } else {
        echo "<h1>500 Internal Server Error</h1>
              An internal server error has been occurred.<br>
              Please try again later.";
    }
});

Gérer les erreurs de connexion séparément :

Si vous souhaitez gérer spécifiquement les erreurs de connexion, telles que pour tester les informations d'identification de l'utilisateur, utilisez les blocs try..catch dans un code de test de connexion dédié :

try {
    $conn = mysqli_connect(...);
} catch (mysqli_sql_exception $e) {
    // Handle connection error
}

Masquage des informations d'identification de connexion :

PHP 8.2 masque le mot de passe de la base de données à partir des traces de pile pour une sécurité améliorée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn