verif mail tou bête - PHP - Programmation
Marsh Posté le 24-05-2006 à 11:40:29
ReplyMarsh Posté le 24-05-2006 à 11:41:51
regarde du cote de strpos
edit : grillé
Marsh Posté le 24-05-2006 à 11:54:13
a noter, ce n'est pas parce qu'il y a un @ que l'adresse est valide ...
Marsh Posté le 24-05-2006 à 11:58:38
ok, j'ai bien compris la fonction strpos() mais juste un truc, dans l'exemple il disent ceci qui m'interpelle :
Code :
|
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 ?
Marsh Posté le 24-05-2006 à 12:01:07
jedebute75 a écrit : : |
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à |
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.
Marsh Posté le 24-05-2006 à 12:07:36
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 ?
Marsh Posté le 24-05-2006 à 12:17:36
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 : |
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.
Marsh Posté le 24-05-2006 à 12:24:11
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.
Marsh Posté le 24-05-2006 à 12:26:26
un conseil : remplace
$_POST["email"])==""
par
empty($_POST["email"]) cette méthode teste si email est déclaré et si pas vide
Marsh Posté le 24-05-2006 à 13:51:36
Et pour la validité du mail, pourquoi pas tout simplement une regex ?
Marsh Posté le 24-05-2006 à 14:01:04
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...
Marsh Posté le 24-05-2006 à 14:43:38
T'utilises quoi comme regexp ?
Marsh Posté le 24-05-2006 à 15:01:34
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...
Marsh Posté le 24-05-2006 à 15:02:03
Code :
|
renvoie toujours false (et j'en ai essayé plusieurs) c dingue!!!
sinon j'ai fait ça juste pour tester l'@ :
Code :
|
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...
Marsh Posté le 24-05-2006 à 15:24:33
Regarde ceci, ça devrait pouvoir t'aider : http://www.expreg.com/voir1
Marsh Posté le 24-05-2006 à 15:40:54
hum, ça fait un peu copié collé mais bon :
Code :
|
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 ??????
Marsh Posté le 24-05-2006 à 16:03:00
Code :
|
renvoie false avec email = moi.b@laposte.net ??????
Marsh Posté le 24-05-2006 à 16:13:19
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!
Marsh Posté le 24-05-2006 à 16:13:35
donc je laisse tomber les regex :-((( et j'opte pour strpos
Marsh Posté le 24-05-2006 à 16:15:23
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.
Marsh Posté le 24-05-2006 à 16:19:54
Du genre :
Code :
|
Mais c'est quand même mieux avec une regex!
Marsh Posté le 24-05-2006 à 16:21:13
Code :
|
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
Marsh Posté le 24-05-2006 à 16:22:52
Ligne 10 : if ( $message = "ok" )...
C'est pas == que tu voulais mettre???
Marsh Posté le 24-05-2006 à 16:24:34
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!!!
Marsh Posté le 24-05-2006 à 16:41:25
et le bou de code que je t'ai donné ne fonctionne-t-il pas?
Marsh Posté le 24-05-2006 à 16:46:45
:-)))) 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
Marsh Posté le 24-05-2006 à 16:47:54
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...
Marsh Posté le 24-05-2006 à 16:53:27
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.
Marsh Posté le 24-05-2006 à 17:01:51
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 ???
Marsh Posté le 24-05-2006 à 17:09:08
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.
Marsh Posté le 24-05-2006 à 17:28:46
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
Marsh Posté le 24-05-2006 à 18:08:01
Mais de rien, et en passant le code que je t'ai donné (avec explode) vérifie bien la longueure de l'extension.
Marsh Posté le 24-05-2006 à 11:37:58
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 ?