Vérifier qu'une adresse mail entrée appartient @exemple.com

Petit nouveau ! | 4 Messages

11 nov. 2005, 16:05

Bonjour à tous,

J'ai très peu de connaissances en PHP et les seules connaissances que j'ai ont été acquises en lisant des pages codées en PHP donc ca va pas très loin :lol:

Je travaille actuellement sur un projet de site sous PHPMaximus (une évolution de Nuke) que beaucoup d'entre vous doivent connaître. Malheureusement, les codeurs de ce portail sont en vacances et je me suis dit que vous pourriez m'aider (même si je sais que le codage en PHP est assez spécifique :?

C'est pour cela que je vais vous poster la fonction sur laquel j'aimerai apporter la modif, pour que vous compreniez la logique, ainsi qu'un début de réponse qui m'a été donnée sur le site "officiel" :wink:

En gros, sur mon site, les gens devront s'incrire en tant que membres afin de pouvoir accéder aux rubriques principales. Pour l'inscription, un mail est demandé au futur membre pour valider l'inscription (jusque là, tout va bien :mrgreen: ) et il y a une fonction qui permet de vérifier que le mail entré n'existe pas déjà dans la BD, ne contient pas de caractères interdits etc... Moi j'aimerai que les membres soit obligés de rentrer un mail en @exemple.com pour pouvoir mieux gérer les membres (leur e-mail d'étudiant de l'école don je fais partie).

Voici donc la fonction concernée :
function ya_mailCheck($user_email) {
    global $stop, $user_prefix, $db, $ya_config;
    $user_email = strtolower($user_email);
    if ((!$user_email) || ($user_email=="") || (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$",$user_email))) $stop = "<center>"._ERRORINVIP."</center><br>";
    if ($ya_config['bad_mail'] > "") {
        $BadMailList = explode("\r\n",$ya_config['bad_mail']);
        for ($i=0; $i < count($BadMailList); $i++) {
            if (eregi($BadMailList[$i], $user_email)) $stop = "<center>"._IPBLOCKED." <b>".$BadMailList[$i]."</b></center><br>";
        }
    }
    if (strrpos($user_email,' ') > 0) $stop = "<center>"._ERROREMAILSPACES."</center><br>";
    if ($db->sql_numrows($db->sql_query("SELECT user_email FROM ".$user_prefix."_users WHERE user_email='$user_email'")) > 0) $stop = "<center>"._EMAILREGISTERED."</center><br>";
    if ($db->sql_numrows($db->sql_query("SELECT user_email FROM ".$user_prefix."_users WHERE user_email='".md5($user_email)."'")) > 0) $stop = "<center>"._EMAILNOTUSABLE."</center><br>";
    if ($db->sql_numrows($db->sql_query("SELECT user_email FROM ".$user_prefix."_users_temp WHERE user_email='$user_email'")) > 0) $stop = "<center>"._EMAILREGISTERED."</center><br>";
    return($stop);
}
J'aimerai donc insérer dans cette fonction un script qui déclencherait une erreur lorsque l'e-mail n'est pas en @exemple.com .

Voici ce que m'a répondu un forumeurs sur le site officiel :

Code : Tout sélectionner

$adresse_mail = "[email protected]"; $max_clip = explode("@", $adresse_mail); if($max_clip[1] == "exemple.com") { echo "ok le nom de domaine est correct"; } else { echo "pas correct"; }
Cette réponse permets d'avoir quelques éléments mais je pense qu'il faut retravailler dessus car la fonction que j'ai donné plus haut n'est pas prise en compte et ce script est indépendant et ne permet que de dire si l'adresse est bonne ou pas (enfin ca c'est ce que j'en ai déduit en le lisant :mrgreen: ).

Qu'en pensez-vous ?
Merci d'avance :wink:
A+

Petit nouveau ! | 4 Messages

12 nov. 2005, 16:08

Image

Eléphant du PHP | 90 Messages

12 nov. 2005, 19:00

Bonjour

et en modifant cette partie de code et en y inserant le @monsite.com
 if ((!$user_email) || ($user_email=="") || (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$",$user_email))) $stop = "<center>"._ERRORINVIP."</center><br>"; 
faudrait juste tester ce qu'il y a avant

@+ Dgse
Je ne tiens pas a etre un genie. J'ai suffisamment de probleme a etre un homme.

Petit nouveau ! | 4 Messages

12 nov. 2005, 22:33

Oui mais apparamment, il y aurait deux parties :
$max_clip = explode("@", $adresse_mail)
et
if($max_clip[1] == "exemple.com")
C'est donc la 2e qu'il faudrait que j'insère dans les lignes que tu as citées mais comment j'insère la première partie ?

Je pense que je devrais plutôt utiliser une fontion avec =! plutôt que == pour ce dont j'ai besoin puisque je n'ai besoin d'afficher une erreur que si l'adresse n'est pas bonne, qu'en pensez-vous ?

Merci :wink:

Eléphant du PHP | 90 Messages

13 nov. 2005, 10:42

Bonjour

Je pense que tu devrais tester le nom de domaine dans ce code au moment d'envoyer , si le nom est correct tu l'insere ensuite dans la base.
$maxclip= substr($user_mail,-11);
if ((!$user_email) || ($user_email=="") || ($maxclip !="exemple.com") ||(!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$",$user_email))) $stop = "<center>"._ERRORINVIP."</center><br>";


PS : je ne peut pas tester..

@+ Dgse
Je ne tiens pas a etre un genie. J'ai suffisamment de probleme a etre un homme.

Invité
Invité n'ayant pas de compte PHPfrance

15 nov. 2005, 01:07

Bon un des condeurs m'a donnée la solution :
function ya_mailCheck($user_email) { 
    global $stop, $user_prefix, $db, $ya_config; 
    $user_email = strtolower($user_email); 
    $email = explode("@", $user_email); 
    if ((!$user_email) || ($user_email=="") || (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$",$user_email))) $stop = "<center>"._ERRORINVIP."</center><br>"; 
    if ($ya_config['bad_mail'] > "") { 
        $BadMailList = explode("\r\n",$ya_config['bad_mail']); 
        for ($i=0; $i < count($BadMailList); $i++) { 
            if (eregi($BadMailList[$i], $user_email)) $stop = "<center>"._IPBLOCKED." <b>".$BadMailList[$i]."</b></center><br>"; 
        } 
    } 
    if ($email[1] != "espeme.com") $stop = "<center>"._EMAILNOTUSABLE."</center><br>"; 
    if (strrpos($user_email,' ') > 0) $stop = "<center>"._ERROREMAILSPACES."</center><br>"; 
    if ($db->sql_numrows($db->sql_query("SELECT user_email FROM ".$user_prefix."_users WHERE user_email='$user_email'")) > 0) $stop = "<center>"._EMAILREGISTERED."</center><br>"; 
    if ($db->sql_numrows($db->sql_query("SELECT user_email FROM ".$user_prefix."_users WHERE user_email='".md5($user_email)."'")) > 0) $stop = "<center>"._EMAILNOTUSABLE."</center><br>"; 
    if ($db->sql_numrows($db->sql_query("SELECT user_email FROM ".$user_prefix."_users_temp WHERE user_email='$user_email'")) > 0) $stop = "<center>"._EMAILREGISTERED."</center><br>"; 
    return($stop); 
} 
Merci pour votre aide :wink:

Petit nouveau ! | 4 Messages

15 nov. 2005, 01:09

Arg, j'étais pas loggé :roll:
Le message précédent était donc le miens, vous auvez compris :wink:

Administrateur PHPfrance
Administrateur PHPfrance | 149 Messages

15 nov. 2005, 01:27

Si tu es full admin de ton serveur il y a un package PECL pour filtrer les entrées
--
Moosh - ancêtre de la communauté
http://www.phpfrance.com

Eléphant du PHP | 153 Messages

15 nov. 2005, 10:25

Sinon tu pourrais écrire un javascript qui verifierait au moment de la validation du formulaire l'email
si bon->on va a la page d'inscription
sinon->alerte qui dit qu'il faut que le mail se termine par @exemple.com

Administrateur PHPfrance
Administrateur PHPfrance | 149 Messages

15 nov. 2005, 10:59

Sinon tu pourrais écrire un javascript qui verifierait au moment de la validation du formulaire l'email
la validation par javascript doit toujours être revérifiée par le php de toute façon.

Si je désactive javascript

1° ca doit encore fonctionner
2° les mêmes contrôles doivent être fait.

Donc ca ne fait que "compliquer" le problème (mais améliorer l'ensemble si c bien fait)

entre () j'ai du mal à croire que tu sois le premier a te poser la question

As-tu regardé les anciens posts ?
--
Moosh - ancêtre de la communauté
http://www.phpfrance.com

Eléphant du PHP | 153 Messages

15 nov. 2005, 11:32

Toutes mes excuses

Administrateur PHPfrance
Administrateur PHPfrance | 149 Messages

15 nov. 2005, 12:52

Toutes mes excuses
Il ne faut pas :-)

et

le "as-tu lu les anciens post" n'est pas pour toi
--
Moosh - ancêtre de la communauté
http://www.phpfrance.com

Administrateur PHPfrance
Administrateur PHPfrance | 149 Messages

15 nov. 2005, 13:49

--
Moosh - ancêtre de la communauté
http://www.phpfrance.com