[RESOLU] Php / Ajax gestion des erreurs Try/Catch ou non?

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Php / Ajax gestion des erreurs Try/Catch ou non?

Re: Php / Ajax gestion des erreurs Try/Catch ou non?

par moogli » 28 nov. 2015, 23:17

salut,

if(isset($_GET['email']) && !empty($_GET['email'])) : le isset est inutile empty prends en compte le fait que la variable peu ne pas exister ;)

perso je retournerais un objet c'est aussi simple à utiliser en js et tu pourras tenter le typage pour avoir un truc générique sur tout tes requêtes ajax.
exemple d'objet pour le message d'erreur.
<?php
class Error {
    private $message;
    private $code;
// getter / setter
}
Sinon coté fonctionnement si tu utilises la poo ok pour les exceptions, sinon reste sur du procédural.

y a moyen de faire quelque chose de relativement générique pour être facilement réemployable ;)

@+

Php / Ajax gestion des erreurs Try/Catch ou non?

par deuxk » 27 nov. 2015, 19:41

Bonjour,

J'aimerais savoir votre avis sur la meilleur méthode a utilisé pour les envoies de formulaire en ajax avec retour d'erreur. J'ai fais le tour de la question et je suis toujours en interrogation...

Sur mon site, j'ai plusieurs formulaires ressemblant a celui ci :

Code : Tout sélectionner

<form id="forgotPwd" method="get" onSubmit="return false;"> <fieldset class="plain"> <legend><span>Changer votre mot de passe</span></legend> <div class="row"> <label for="email" class="required">Votre courriel*</label> <input type="text" name="email" id="email" placeholder="[email protected]" /> </div><br> <div><br> <input type="submit" value="Envoyer" /> </div> <br> </fieldset> </form>
Avec du jquery comme suit :

Code : Tout sélectionner

<script type="text/javascript"> $(function() { $('form#forgotPwd').on('submit',function(e) { var d = $(this).serialize(); $.ajax({ url: "modules/users/handles/forgotPwd.php", dataType: 'json', type: "GET", data: d, success: function(data, status, xhr) { if(data.error) { alert(data.error.message); } else { alert('Success message'); } }, error: function (request, status, error) { alert(request.responseText); } }); }); }); </script>
Je m'interroge a savoir pour le coté PHP, qu'elle serait la meilleur méthode a utilisé? Voici les 2 façons et dites moi vous, vous feriez quoi?

Version 1

Code : Tout sélectionner

header('Content-Type: application/json'); try { if(isset($_GET['email']) && !empty($_GET['email'])) { if( filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) ) { echo json_encode(array('results' => 'ok')); } else throw new Exception('Address courriel invalide',2); } else throw new Exception('Address courriel vide',1); } catch(Exception $e) { echo json_encode(array('error' => array('message' => $e->getMessage(), 'code' => $e->getCode() ) )); }
Version 2:

Code : Tout sélectionner

public function throwJsonException($msg,$code) { echo json_encode(array('error'=> array('code' => $code, 'message' => $msg )); } if(isset($_GET['email']) && !empty($_GET['email'])) { if( filter_var($_GET['email'], FILTER_VALIDATE_EMAIL) ) { echo json_encode(array('results' => 'ok')); } else throwJsonException('Address courriel invalide',2); } else throwJsonException('Address courriel vide',1);
Merci de vos avis, vos suggestions.