Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2309 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  verif mail tou bête

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

verif mail tou bête

n°1373939
jedebute75
Posté le 24-05-2006 à 11:37:58  profilanswer
 

juste :  
 
if (($_POST["email"])=="" )
     {
      echo "email invalide";
     }
et rajouter si $_POST['email'] ne contient pas @
 
donc if (($_POST["email"])=="" || LE CODE DE VERIF)
 
j'ai trouvé essentiellement des fonctions toute faite mais ya pas juste une ligne de code à rajouter comme je veux faire ici ?

mood
Publicité
Posté le 24-05-2006 à 11:37:58  profilanswer
 

n°1373945
sielfried
Posté le 24-05-2006 à 11:40:29  profilanswer
 
n°1373948
flo850
moi je
Posté le 24-05-2006 à 11:41:51  profilanswer
 

regarde du cote de strpos
edit : grillé


Message édité par flo850 le 24-05-2006 à 11:42:02

---------------

n°1373962
anapajari
s/travail/glanding on hfr/gs;
Posté le 24-05-2006 à 11:54:13  profilanswer
 

a noter, ce n'est pas parce qu'il y a un @ que l'adresse est valide ...

n°1373968
jedebute75
Posté le 24-05-2006 à 11:58:38  profilanswer
 

ok, j'ai bien compris la fonction strpos() mais juste un truc, dans l'exemple il disent ceci qui m'interpelle :  
 

Code :
  1. $mystring = 'abc';
  2. $findme  = 'a';
  3. $pos = strpos($mystring, $findme);
  4. // Notez l'utilisation de ===.  Un simple == ne donnerait pas le résultat escompté
  5. // car la lettre 'a' est à la position 0 (la première).
  6. if ($pos === false) {
  7. bla bla bla }


 
pourquoi le '===' ?
 strpos vérifie que la chaine 'abc' contient 'a' ok mais vérifie la position de a dans la chaine aussi ?? je ne comprend pas. car dans mon cas, si je fais un $test_mail = strpos($_POST['email'] , @) , je ne peux pas deviner l'emplacement du @ vu que je ne connais pas l'email de la personne. donc moi je dois faire quoi là
if ($test_mail == false) suffira ?

n°1373974
sielfried
Posté le 24-05-2006 à 12:01:07  profilanswer
 

jedebute75 a écrit :

:  
pourquoi le '===' ?


 
Ca permet de vérifier que les types des deux opérandes, et pas seulement les valeurs, sont égales. Par exemple, FALSE == 0 renvoie vrai (deux valeur "équivalentes" ) mais FALSE === 0 renvoie faux.
 

Citation :

strpos vérifie que la chaine 'abc' contient 'a' ok mais vérifie la position de a dans la chaine aussi ?? je ne comprend pas. car dans mon cas, si je fais un $test_mail = strpos($_POST['email'] , @) , je ne peux pas deviner l'emplacement du @ vu que je ne connais pas l'email de la personne. donc moi je dois faire quoi là
if ($test_mail == false) suffira ?


 
strpos cherche la position, s'il ne trouve le @ nulle part, il renvoie FALSE, donc oui, ça suffit. Ceci dit c'est effectivement assez limité comme détection de la validité d'un mail.


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1373983
jedebute75
Posté le 24-05-2006 à 12:07:36  profilanswer
 

aaah ok, merci pour le '==='!!
sinon pour le test @ donc ça marche.*existe t'il un moyen de tester si le serveur à pu envoyer le mail:  
je m'explique, si le mail n'est pas partit parceque l'adresse n'existe pas (elle peut avoir l'air valide mais ne pas exister... totoafroidaupied@hotmail.fr va passer le test du mail valide par exemple), y a t(il moyen de renvoyer un message du genre : l'email que vous avez fournis n'existe pas ?

n°1373995
anapajari
s/travail/glanding on hfr/gs;
Posté le 24-05-2006 à 12:17:36  profilanswer
 

non ce n'est pas possible tout ce dont tu disposes via la fonction mail, c'est http://fr.php.net/manual/fr/function.mail.php

Citation :


Valeurs de retour
Retourne TRUE si le mail a été accepté pour livraison, FALSE sinon.
 
Il est important de noter que ce n'est pas parce que le mail a été accepté pour livraison qu'il arrivera à destination.


 
Et de toute façon tu n'as pas forcément le mail de retour t'informant que l'adresse n'existe pas dans l'instant.
 
C'est pour ça que sur de nombreux systèmes, un lien dans le mail envoyé "active" effectivement le compte de l'utilisateur.

n°1374006
jedebute75
Posté le 24-05-2006 à 12:24:11  profilanswer
 

oui, je m'en doutais un peu, vu que l'envoie ne se fait pas forcément dans la seconde!!!
tant pis pour les infos.

n°1374008
nemohp
Adepte du provisoire permanent
Posté le 24-05-2006 à 12:26:26  profilanswer
 

un conseil : remplace    
 
$_POST["email"])==""
 
par
 
empty($_POST["email"])    cette méthode teste si email est déclaré et si pas vide

mood
Publicité
Posté le 24-05-2006 à 12:26:26  profilanswer
 

n°1374094
$man
Posté le 24-05-2006 à 13:51:36  profilanswer
 

Et pour la validité du mail, pourquoi pas tout simplement une regex ?


Message édité par $man le 24-05-2006 à 13:51:48
n°1374105
jedebute75
Posté le 24-05-2006 à 14:01:04  profilanswer
 

merci nemoph!!
$man oui une regex mais je sais pas pourquoi ça marche pas chez moi ???, il renvoie toujours false même quand l'adresse est valide...

n°1374173
sielfried
Posté le 24-05-2006 à 14:43:38  profilanswer
 

T'utilises quoi comme regexp ?


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
n°1374208
dwogsi
Défaillance cérébrale...
Posté le 24-05-2006 à 15:01:34  profilanswer
 

Petite question, en passant, quelqu'un a déjà essayé de d'établir une connexion avec le serveur indiqué dans l'adresse e-mail pour vérifier la l'existance de celui-ci?
 
Je demande parce qua franchement je l'ai jamais fait de peur qu'il mette trop de temps à répondre par exemple et que je me mange un timeout...

n°1374210
jedebute75
Posté le 24-05-2006 à 15:02:03  profilanswer
 

Code :
  1. function validation()
  2.         {
  3.             var email     = document.formulaire.EMAIL.value;
  4.                var verif     = /^[^@]+@(([w-]+.){1,4}[a-zA-Z]{2,4}|(([01]?d?d|2[0-4]d|25[0-5]).){3}([01]?d?d|2[0-4]d|25[0-5]))$/
  5.                if (verif.exec(email) == null)
  6.             {
  7.                 alert("Votre email est incorrecte" );
  8.                 return false;
  9.             }
  10.             else
  11.             {
  12.                 alert("Votre email est correcte" );
  13.                 return true;
  14.             }   
  15.  
  16.  
  17.         }


 
renvoie toujours false  (et j'en ai essayé plusieurs)  c dingue!!!
 
sinon j'ai fait ça juste pour tester l'@ :
 

Code :
  1. if (!empty($_POST['email'])) {
  2. $test_email = strpos ($_POST['email'] , '@') ;  }
  3. et quand je fais un if ($test_mail == false; {echo 'email invalide'}
  4. else {j'envoie le mail}


bah toujours il envoie le mail même si pas d'@ dans le mail (du coup horrible message d'erreur à la validation forcément : Warning: mail(): SMTP server response: 550 unknown user <bb> in...
 
bon, je ne comprend pas trop mais bon...
 
 

n°1374269
dwogsi
Défaillance cérébrale...
Posté le 24-05-2006 à 15:24:33  profilanswer
 

Regarde ceci, ça devrait pouvoir t'aider : http://www.expreg.com/voir1

n°1374305
jedebute75
Posté le 24-05-2006 à 15:40:54  profilanswer
 

hum, ça fait un peu copié collé mais bon :  
 

Code :
  1. if(!ereg("^[[:alnum:]]([-_.]?[[:alnum:]])*@
  2. [[:alnum:]]([-.]?[[:alnum:]])*\.([a-z]{2,4})$",$_POST['email']))
  3.     {
  4.      echo 'mail invalide'     }


 
devrait donner à l'ecran avec saisie du champs email = vvvv
 
mail invalide
 
ou je perd la tête :-(
 
parceque la c'est le else {tout baigne tu peux envoyer le mail} qui s'execute  ??????

n°1374325
jedebute75
Posté le 24-05-2006 à 15:48:59  profilanswer
 

heuu je délire c toujours false qui est renvoyé pardon

n°1374326
jedebute75
Posté le 24-05-2006 à 15:49:12  profilanswer
 

enfin le même soucis qu'au debut quoi

n°1374341
jedebute75
Posté le 24-05-2006 à 16:03:00  profilanswer
 

Code :
  1. if(!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])*
  2. @[[:alnum:]]([-.]?[[:alnum:]])*\.([a-z]{2,4})$`',$_POST['email'])  ||( $_POST['email'] == "" ))


 
renvoie false avec email =  moi.b@laposte.net ??????

n°1374354
dwogsi
Défaillance cérébrale...
Posté le 24-05-2006 à 16:13:19  profilanswer
 

Le code qu'ils donnent marche très bien chez moi avec l'adresse moi.b@laposte.net. Montre un peu plus de code,  parce que je vois pas ce  qui ne va pas!

n°1374356
jedebute75
Posté le 24-05-2006 à 16:13:35  profilanswer
 

donc je laisse tomber les regex :-((( et j'opte  pour strpos

n°1374357
dwogsi
Défaillance cérébrale...
Posté le 24-05-2006 à 16:15:23  profilanswer
 

Sinon tu fait deux explode sur ton adresse e-mail, un avec le @ et l'autre avec le . et tu vérifie les trois valeurs que tu obtiens. c'est ce que je faisais avant de découvrire les regex et ça marche très bien.

n°1374362
dwogsi
Défaillance cérébrale...
Posté le 24-05-2006 à 16:19:54  profilanswer
 

Du genre :

Code :
  1. $mail = "moi@eux.ext";
  2. $temp = explode("@",$mail);
  3. $temp2 = explode(".",$temp[1]);
  4. if ( $mail == $temp[0]."@".$temp2[0].".".$temp2[1] && strlen($temp2[1]) <= 6 && strlen($temp2[1]) > 0 )
  5.      echo "ok ok";
  6. else echo "non c pas bon!!";

Mais c'est quand même mieux avec une regex!

Message cité 1 fois
Message édité par dwogsi le 24-05-2006 à 16:21:19
n°1374364
jedebute75
Posté le 24-05-2006 à 16:21:13  profilanswer
 

Code :
  1. if(isset($_POST["post"])) {
  2. $message= "ok";
  3. if(!preg_match('`^[[:alnum:]]([-_.]?[[:alnum:]])* @[[:alnum:]]([-.]?[[:alnum:]])*\.([a-z]{2,4})$`',$_POST['email'])  ||( $_POST['email'] == "" ))  {
  4. $message= 'email invalide';   }
  5. if ( traitement de autres champs du formulaire )
  6. if ($message = "ok" ) ' {
  7. envoie du mail
  8. mail($_Post['email'], $subject, $messages, $h);
  9. }


 
donc juste avec le test if $_POST['email'] == "" ça fonctionne.
avec le strpos ça marche aussi (mais moins fiable je pense)
mais alors avec ce code toujours false

n°1374366
dwogsi
Défaillance cérébrale...
Posté le 24-05-2006 à 16:22:52  profilanswer
 

Ligne 10 : if ( $message = "ok" )...
C'est pas == que tu voulais mettre???


Message édité par dwogsi le 24-05-2006 à 16:23:11
n°1374372
jedebute75
Posté le 24-05-2006 à 16:24:34  profilanswer
 

dwogsi a écrit :

Mais c'est quand même mieux avec une regex!


 
 
bah oui heinnn c'est pour ça que j'ai insité mais bon... ça veut vraiment pas chez moi et pourtant!!!

n°1374376
jedebute75
Posté le 24-05-2006 à 16:25:57  profilanswer
 

oui pour la ligne 10 c une erreur de frappe!!!

n°1374403
dwogsi
Défaillance cérébrale...
Posté le 24-05-2006 à 16:41:25  profilanswer
 

et le bou de code que je t'ai donné ne fonctionne-t-il pas?

n°1374410
jedebute75
Posté le 24-05-2006 à 16:46:45  profilanswer
 

:-)))) ouaip ça marche MERCI.    
 
bah adieu regex mais tu vois c bizzard que ça marche pas chez moi... si le même code marcge chez toi

n°1374413
jedebute75
Posté le 24-05-2006 à 16:47:54  profilanswer
 

explode je connaissais pas  ;-)
d'autant que je cherchais dernièrement à récupérer des données d'un tableau dans un même champ d'une BBD et ça me semble parfait pour faire ça...


Message édité par jedebute75 le 24-05-2006 à 16:50:51
n°1374420
dwogsi
Défaillance cérébrale...
Posté le 24-05-2006 à 16:53:27  profilanswer
 

Au fait, pour le TLD dans la regex qu'ils donne il définissent un max de 4 caractère et il semblerait que cela soit faux.

n°1374426
jedebute75
Posté le 24-05-2006 à 17:01:51  profilanswer
 

hum, oui alors je vais être honnête pour le regex je l'ai copié collé et je n'y dechiffre pas grand chose , j'ai juste compris qu'il testait le mail, que tout les caractères obligatoire étaient présent et à la bonne place :-))
donc : "le TLD dans la regex qu'ils donne il définissent un max de 4 caractère"  hum ???

n°1374435
dwogsi
Défaillance cérébrale...
Posté le 24-05-2006 à 17:09:08  profilanswer
 

Je parlais de "l'extension" du domaine si tu préfére et si l'on en croit cett page http://fr.wikipedia.org/wiki/Tld on se rend compte que la longueure de celle-ci ne se limite plus à 4 caractères.

n°1374447
jedebute75
Posté le 24-05-2006 à 17:28:46  profilanswer
 

ah oui effectivement, ça doit en passer à la trappe du coup!!! merci pour l'info, dans mon cas le regex a pas marché donc ... mais pour ceux qui passe par là, pensez à modifier ;-)
 
MERCI dwogsi

n°1374492
dwogsi
Défaillance cérébrale...
Posté le 24-05-2006 à 18:08:01  profilanswer
 

Mais de rien, et en passant le code que je t'ai donné (avec explode) vérifie bien la longueure de l'extension.

n°1374514
jedebute75
Posté le 24-05-2006 à 18:19:47  profilanswer
 

oui, j'y ai pensé aussi ;-)

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  verif mail tou bête

 

Sujets relatifs
envoyer un mail apres une recherchefonction mail
[javascript][Surement bete] Probleme avec symbole +signature mail
script tout bêteformulaire/ champs radio et chekbox verif php
petite question toute bête en java (synchronisation)je voudrait savoir ou trouver quel par pour envoyer ce mail
fonction mail()Comment avoir une adresse mail special
Plus de sujets relatifs à : verif mail tou bête


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR