Filter_var()
Mickael86480
Messages postés
660
Date d'inscription
Statut
Membre
Dernière intervention
-
Mickael86480 Messages postés 660 Date d'inscription Statut Membre Dernière intervention -
Mickael86480 Messages postés 660 Date d'inscription Statut Membre Dernière intervention -
Bonjour, après avoir chercher sur internet, j'utilise la fonction filter_var() pour filtrer des adresses mail lors de l'inscription pour mon site. Seulement j'ai une erreur que je n'arrive pas à résoudre donc je fais appel à vous.
Fatal error: Call to undefined function: filter_var() in ....
merci votre aide.
Fatal error: Call to undefined function: filter_var() in ....
merci votre aide.
8 réponses
j'ai utilisé phpinfo() pour connaitre ma version et il m'indique que je suis en version 1 donc comment puis-je faire pour passer à une version qui accepte cette fonction stp?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Vu ici https://bytes.com/topic/php/answers/645723-function-similar-filter_var-php4-3-a qu'il faut tester ceci : parse_url
Ou une variante de la fonction vue ici https://stackoverflow.com/questions/1544214/filter-var-versus-preg-match : preg_match
Ou une variante de la fonction vue ici https://stackoverflow.com/questions/1544214/filter-var-versus-preg-match : preg_match
C'est sur ce site que je suis, voici ce que j'ai écrit et le résultat :
$mail = preg_match('hotmail.fr', $_POST['mail']);
echo'mail:'.$mail.'';
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in /mnt/104/sdb/b/4/mickael.bernaudeau/identification.php on line 37
mail:
$mail = preg_match('hotmail.fr', $_POST['mail']);
echo'mail:'.$mail.'';
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash in /mnt/104/sdb/b/4/mickael.bernaudeau/identification.php on line 37
mail:
Donc après vérification le mail est bien envoyé, mais j'aimerai afficher un lien qui renvoie directement sur mon site (pour activer son compte). Seulement voila quand j'ouvre le mail je vois le code HTML au lieu d'un simple lien. Voici se que j'ai fais :
merci de vos lumières.
$message = ' <html> <head> </head> <body> <a href="mickael.bernaudeau.free.fr">Je confirme mon inscription</a> </body> </html> '; mail($_POST['mail'], 'Confirmation d\'inscription', $message);
merci de vos lumières.
oui c'est tout à fait normal, contenu du mail n'est que du texte et ne sera pas donc affiché comme un élément html.
Mais si j'ai bon souvenir, je crois qu'on met une page html contenant le code html que tu veux voir s'afficher en pièce jointe du mail à envoyer. La page html sera affichée comme message lors de la réception du mail et non comme pièce jointe.
Mais si j'ai bon souvenir, je crois qu'on met une page html contenant le code html que tu veux voir s'afficher en pièce jointe du mail à envoyer. La page html sera affichée comme message lors de la réception du mail et non comme pièce jointe.
ça c'est le plus dur, c'est tout un protocole. Fait des recherches tu trouveras des bons tutos là dessus . Oui c'est toujours avec la fonction mail(), mais là on séparer le corps et la pièce jointe par une frontière. C'est vraiment pas évident donc il faut prendre du temps de lire un bon tuto avant de s'y lancer. Mais si tu as la moindre question n'hésite pas.
Tu n'y comprends rien parce que c'est du copier coller ton code. On va va pas faire le travail à ta place, il faut chercher et faire plusieurs test pour arriver au résultat souhaité.
il faut deja au depart definir la frontiere par
$file = "confirmer_compte.html";
$fp = fopen($file, "rb"); // b c'est pour les windowsiens
$attachment = fread($fp, filesize($file));
fclose($fp);
tu peux remplacer ça par:
$attachment=file_get_contents('ton_fichier htmll');
pas besoin d'encodage
tu peux aussi mettre les entetes
il faut deja au depart definir la frontiere par
$boundary=md5(uniqid(rand()));
$file = "confirmer_compte.html";
$fp = fopen($file, "rb"); // b c'est pour les windowsiens
$attachment = fread($fp, filesize($file));
fclose($fp);
tu peux remplacer ça par:
$attachment=file_get_contents('ton_fichier htmll');
pas besoin d'encodage
tu peux aussi mettre les entetes
$entete = "From: adresse@domaine.com \r\n"; $.= "MIME-Version: 1.0\r\n"; $entete .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n\n"; //corps $msg ="--". $boundary ."\n"; $msg .="Content-Type: text/html; name=\"nom.html\"\r\n"; $msg.= "Content-Disposition: inline; filename=\"nom_fichier.html\"\r\n\n $attachment"; //envoi mail('adresse_destinataire','sujet',$msg,$entete);
Ok merci donc voici ce que j'ai fais :
seulement il me signale qu'il s'agit d'un spam donc le mail n'a pas été envoyé.
$boundary=md5(uniqid(rand())); $attachment=file_get_contents('confirmer_compte.html'); $attachment = chunk_split(base64_encode($attachment)); $msg .= "--$boundary--\r\n"; $msg .= "Content-Disposition: inline; filename=\"$file\"\r\n"; $msg .= "\r\n"; $msg .= $attachment . "\r\n"; $msg .= "\r\n\r\n"; $msg .= "--$boundary--\r\n"; $entete = "From: bernaudeau.mickael.free.fr \r\n"; $entete .= "MIME-Version: 1.0\r\n"; $entete .= "Content-Type: multipart/mixed; boundary=\"$boundary\"\r\n\n"; //corps $msg ="--". $boundary ."\n"; $msg .="Content-Type: text/html; name=\"confirmer_compte.html\"\r\n"; $msg.= "Content-Disposition: inline; filename=\"confirmer_compte.html\"\r\n\n $attachment"; //envoi mail(''.$_POST['mail'].'','test',$msg,$entete);
seulement il me signale qu'il s'agit d'un spam donc le mail n'a pas été envoyé.