|
arnodu59 437
| Posté : 28-01-2005 01:47
Hello all :)
Voilà, je suis dans le dev d'un site pour mon association, mais j'ai un p'tit prob
J'ai un formulaire de contact qui vérifie l'adresse email, mais certaine vérification plante avec l'erreur :
Fatal error: Call to a member function on a non-object in /home/servlan/www/mainfile.php on line 52
Voici un bout de code :
if (strrpos($email,' ') > 0) { $erreur->email("espace", ""); }
if (strlen($email) < 6) { $erreur->email("court", ""); }
if (strlen($email) > 255) { $erreur->email("long", ""); }
if (!ereg("@", $email)) { $erreur->email("arobase", ""); }
if (preg_match_all("/([^a-zA-Z0-9_\@\.\-])/i", $email, $trouve)) { $erreur->email("interdit", implode(", ", $trouve[0])); }
if (!preg_match("/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$/i", $email)) { $erreur->email("incorrect", ""); }
list($compte, $domaine)=split("@", $email, 2);
if (!checkdnsrr($domaine, "MX")) { $erreur->email("incorrect_domaine", "$domaine");}
La ligne 2 et 4 sont les lignes qui pose problème...
Voici donc la Class :
<?
class Erreur
{
function email($type_erreur, $autre) {
switch ($type_erreur) {
case "espace":
tableau("L'email ne doit pas contenir d'espace", FALSE);
exit;
case "court":
tableau("Adresse email trop courte", FALSE);
exit;
case "long":
tableau("Adresse email trop longue", FALSE);
exit;
case "arobase":
tableau("L'adresse email n'a pas d'arobase (@)", FALSE);
exit;
case "interdit":
tableau("Caractère(s) interdit dans l'email ($autre)", FALSE);
exit;
case "incorrect":
tableau("Adresse email incorrect", FALSE);
exit;
case "incorrect_domaine":
tableau("Ce domaine ($autre) n'accepte pas les emails", FALSE);
exit;
}
}
}
Et là, j'avoue que je séche Si quelqu'un c'est d'ou peux venir le problème... Thanks you
Message édité par : arnodu59 |  Profil www
|
|
snipe 2450
| Posté : 28-01-2005 06:49
question con
tu a bien avant d apeler t $erreur->email mit une ligne qui fait :
$erreur = new Erreur();
parceque sinon c normal que sa merde :) |  Profil E-mail
|
|
arnodu59 437
| Posté : 28-01-2005 15:45
Je te rassure, oui, elle est mise |  Profil www
|
|
zyegfryed 2308
| Posté : 28-01-2005 17:39
Elle sort d'où la fonction "tableau" ? |  Profil
|
|
developpeur 24581
| Posté : 28-01-2005 22:44
chnage $erreur par $this peut-être |  Profil E-mail www
|
|
zyegfryed 2308
| Posté : 28-01-2005 23:50
Dev, $this fait référence à l'instance de l'objet. Il est donc utilisé dans la définition de la classe, pas à l'extérieur |  Profil
|
|
arnodu59 437
| |
arnodu59 437
| Posté : 29-01-2005 03:04
XDR !!!
La vieille erreur sur laquel on perd plein de temps
un global $erreur;
a résolu mon problème |  Profil www
|
|
zyegfryed 2308
| Posté : 29-01-2005 11:45
Pas super propre tout ça... |  Profil
|
|
arnodu59 437
| Posté : 29-01-2005 14:44
Comment ça pas super propre ?
<?
// Vérifie la validité d'un email
function verifie_email($email){
global $erreur;
if (strrpos($email,' ') > 0) { $erreur->email("espace", ""); }
if (strlen($email) < 6) { $erreur->email("court", ""); }
if (strlen($email) > 255) { $erreur->email("long", ""); }
if (!ereg("@", $email)) { $erreur->email("arobase", ""); }
if (preg_match_all("/([^a-zA-Z0-9_\@\.\-])/i", $email, $trouve))
{
$erreur->email("interdit", implode(", ", $trouve[0]));
}
if (!preg_match("/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,4}\$/i", $email))
{
$erreur->email("incorrect", "");
}
list($compte, $domaine)=split("@", $email, 2);
if (!checkdnsrr($domaine, "MX")){
$erreur->email("incorrect_domaine", "$domaine");
}
return TRUE;
}
?>
Ca me parais propre... Non |  Profil www
|
|
zyegfryed 2308
| Posté : 29-01-2005 16:47
C'est surtout que je suis très chipotteur sur le code (avec le mien en premier).
Utiliser une variable globale pour garder une instance de classe n'est pas des plus propre, tout comme créer une classe qui fait appel à une fonction global dans tout son code... |  Profil
|
|
developpeur 24581
| Posté : 30-01-2005 21:54
vraie .. ou créer un instance en global plsutot |  Profil E-mail www
|
|
arnodu59 437
| |
zyegfryed 2308
| |
developpeur 24581
| Posté : 31-01-2005 21:30
si les static existe en PHP 4 , NPDS s'en sert même (meta-lang par exemple) |  Profil E-mail www
|
|
Aller à la page : [ 1 | 2 ] |