Maison > base de données > tutoriel mysql > 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
Libérer: 2024-11-26 11:56:10
original
176 Les gens l'ont consulté

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);
Copier après la connexion

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.";
    }
});
Copier après la connexion

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
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal