Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
RefStats : Analysez votre positionnement sur les moteurs de recherche
 

#1 19-06-2009 07:49:58

johanndiablo
Membre
Date d'inscription: 19-06-2009
Messages: 2

Fichier .txt, ne pas entrer la variable si elle y est deja?

Bonjour,

Mon site dispose d'un formulaire d'envoi de devis par email.
A l'issue de l'envoi du mail, je fait enregistrer l'email dans un fichier .txt afin de contituer un listing des email pour pouvoir, eventuellement, plus tard, envoyer un email d'information.
L'ecriture de l'email dans le fichier txt fonctionne bien.
Mais ce que je voudrais faire c'est que dans le cas ou une adresse email est deja presente, je voudrais qu'elle ne s'inscrive pas plusieur fois ...
J'ai deja une piste mais sa n'a pas l'aire de fonctionner...

Si vous avez une idée, j'en serais ravi .
Merci d'avance


Voici le script pour la sauvegarde de l'email:

Code:

<?php //listing
 
$user= fopen('mailing.txt', 'a+');
 
if (in_array"$email") 
Header("Location: http://#/contenu/confirm.php");
else fputs($user, "$email\n" );
 
fclose($user);
 
Header("Location: http://#/contenu/confirm.php"); ?>

Voici l'action du formulaire d'envoi complet:

Code:

<?php
                
$msg = "Type:\t$type\n";
$msg .= "Nom:\t$lastname\n";
$msg .= "Prenom:\t$firstname\n";
$msg .= "Fonction:\t$fonction\n";
$msg .= "Societe:\t$societe\n";
$msg .= "Adresse:\t$address\n";
$msg .= "Code postal:\t$zipcode\n";
$msg .= "Ville:\t$city\n";
$msg .= "Pays:\t$country\n";
$msg .= "Telephone:\t$phone\n";
$msg .= "E-Mail:\t$email\n";
$msg .= "Fax:\t$fax\n";
$msg .= "Produit:\t$product\n";
$msg .= "Dimensions:\t$dim\n";
$msg .= "Quantité:\t$quantity\n";
$msg .= "Message:\t$message\n\n";
 
$recipient = "#@#.com";
$subject = "Devis $type - $societe du $date à $heure";
 
$mailheaders = "From: AES - Devis<#@#.com> \n";
$mailheaders .= "Reply-To: $email\n\n";
 
mail($recipient, $subject, $msg, $mailheaders);
 
//listing
 
$user= fopen('mailing.txt', 'a+');
 
if (in_array"$email") 
Header("Location: http://#/contenu/confirm.php");
else fputs($user, "$email\n" );
 
fclose($user);
 
Header("Location: http://#/contenu/confirm.php"); ?>

Dernière modification par johanndiablo (19-06-2009 07:51:28)

Hors ligne

 

#2 20-06-2009 07:02:33

carlito brigante
Membre
Date d'inscription: 06-04-2009
Messages: 39

Re: Fichier .txt, ne pas entrer la variable si elle y est deja?

En général on utilise une base de données pour faire ça.

Un simple SELECT ... WHERE email = '<email>' te dirait si l'adresse est déjà présente.

Avec un fichier c'est plus compliqué, il faut d'abord lire le fichier et le stocker dans un tableau en PHP (ça s'appelle parser, et ça implique que ton fichiers texte soit un minimum structuré, avec des séparateurs un peu à la manière d'un fichier CSV).

Après t'as plus qu'à tester la présente de l'email dans le tableau avec des fonctions comme in_array().


Mais c'est bourrin comme solution, les SGBD sont conçus pour faire ça, pas PHP.

Hors ligne

 

#3 20-06-2009 10:43:45

gogocopter
Membre
Lieu: Matane (Qc)
Date d'inscription: 02-06-2009
Messages: 38

Re: Fichier .txt, ne pas entrer la variable si elle y est deja?

Bonjour,

  même si cette façon de faire est exigeante en ressources, je vais te montrer comment la faire fonctionner. Si pour toi, comme pour moi, la programmation est un passe-temps et que la performance n'est pas d'un grand intérêt, tu peux procéder ainsi:

Code:

if (!strstr($email, file_get_contents("mailing.txt")))
{
  $user = fopen("mailing.txt", "a+");
  fputs($user, "$email\n" );
  fclose($user);
}

file_get_contents() fabrique une chaîne à partir du contenu entier de mailing.txt.
strstr() vérifie si une occurence de $email est présente dans la chaìne.

Puisque la condition commence par !, strstr() devra retourner false pour que le bloc s'exécute. Autrement dit, si aucune occurence de $email n'est trouvée, $email sera ajouté à la fin de mailing.txt.

N.B. Je ne suis pas certain que file_get_contents() comprend les chemins relatifs. Il te faudra p-e entrer le chemin absolu et/ou spécifier un "wrapper".

Dernière modification par gogocopter (20-06-2009 11:16:26)

Hors ligne

 

#4 22-06-2009 04:29:58

johanndiablo
Membre
Date d'inscription: 19-06-2009
Messages: 2

Re: Fichier .txt, ne pas entrer la variable si elle y est deja?

Merci beaucoup pour ta reponse, je vais essayer de le faire fonctionner!

Hors ligne