AOP test si connecté
Je ne peux pas trouver une réponse à ce n'importe où. Peut-être que c'est vraiment simple
J'ai mon mysql PDO connexion comme ceci:
try{
$DBH = new PDO("mysql:host=$db_hostname;dbname=$db_database", $db_username, $db_password);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
}
catch (PDOException $e){
echo $e->getMessage();
exit;
}
je veux juste tester si la connexion a fonctionné, c'est à dire. si le mot de passe, nom d'utilisateur, databasename & nom d'hôte ont été correctement orthographié.
les essayer, de les jeter semble juste pour ramasser des erreurs fondamentales, comme si le pilote est épeautre mal. il ne marche pas lever une erreur si le mot de passe est erroné.
grâce
OriginalL'auteur Lan | 2013-08-14
Vous devez vous connecter pour publier un commentaire.
En un seul clic à partir de cette question, dans le AOP balise wiki se trouve exactement comment:
Ainsi que d'un avertissement
Vous n'avez pas besoin de test. C'est inutile. Vous avez seulement besoin d'un gestionnaire d'erreurs qui va envoyer 500-tête, le journal de l'erreur et de tuer le script.
vous confondez plusieurs choses ici. Tout d'abord, il n'est pas MS SQL déversements le mot de passe, mais PHP. Et il le fait pour n'importe quel SGBD. Pour éviter PHP en faisant écho à des erreurs sur l'écran, vous devez activer l'affichage des erreurs off.
personne ne intentionnellement révèle un mot de passe, ni mysql, ni ms sql. si vous voyez le message d'erreur vous remarquerez que c'est juste un message d'erreur PHP contient une trace de la pile. Et les traces de pile devrait afficher une pile d'appel... y compris les paramètres de la fonction. Et un mot de passe entre eux. Pas de magie ici. Pour éviter PHP à partir de révéler des informations sensibles avec des messages d'erreur, vous devez le configurer correctement.
ils vous ont enseigné la bonne chose - exactement ce que je dis dans l'article. Mais presque tous les autres source en ligne vous indique, pour rattraper une erreur de connexion juste pour l'empêcher de s'afficher. Alors que, à mon avis, ils sont les aboiements le mauvais arbre, que l'affichage des erreurs est une autre affaire et pour empêcher qu'elles ont à traiter avec les paramètre ini au lieu de l'interception d'une exception. C'est pourquoi je suis un peu trop sensible au sujet de cette question 🙂
OriginalL'auteur Your Common Sense
J'utilise le code suivant pour vous connecter:
Si je donne un mauvais mot de passe, je reçois
Que Votre bon sens l'a souligné, une exception est déjà jeté dans le cas où la connexion n'est pas couronné de succès, qui sera également déclencher si le mot de passe est erroné. Si vous souhaitez formater le texte du message d'erreur ou de le manipuler, il suffit de définir un gestionnaire d'erreur personnalisé comme décrit ici
Pour la capture des erreurs de connexion. Il est de très mauvaise pratique à utiliser try..catch pour gérer le message d'erreur, rend le code overbloated. Faites votre
errorHandler
fonction d'un réel gestionnaire d'exception à agir exactement de la même façon, mais sans la nécessité de l'écriture essayer..cach pour la tous de la requête, et vous serez d'accord.Merci pour cette remarque, j'ai corrigé la réponse et appris quelque chose de nouveau dans le processus 🙂
Regarde, même sans l'attraper, vous aurez votre exception gérée à la perfection: elle sera soit connecté ou affichée sur l'écran suivant ini. les paramètres. Et même avoir un backtrace avec elle. Et PHP envoi de 500 automatiquement l'état ainsi
Oui, vous avez raison; j'ai ajouté une note pour ajouter le gestionnaire d'erreur personnalisé dans le cas où vous souhaitez envoyer un code de réponse http, ou peut-être rediriger l'utilisateur vers d'un générique de "oops", page après l'enregistrement de l'erreur.
OriginalL'auteur coderkane