Voir la version complète : Récuperer les emails des visiteurs avant qu'ils n'arrivent sur une page
Coldfusion
14/02/2004, 18h54
Bonjour,
J'ai une page Web ou j'aimerais qu'avant que les gens puissent y entrer, ils aient à me donner leur email, un pseudo et un mot de passe.
ensuite ces informations devraient êtres enregistrées dans une table. (mysql)
Tout cela pour pouvoir ensuite afficher ces emails et pseudos pour me permettre de leurs envoyer des emails groupés.
Bien evidemment, ce serait facile d'utiliser vBulletin qui fait cela, mais je suis obligé de ne pas l'utiliser. Je doit passer juste via deux ou trois tables dans ma DB et faire cela.
Qui pourrait m'aider à faire cela ? Est-ce facile ?
Je sait déjà crée des formulaires, je sait aussi faire connecter mes pages .php à ma DB . C'est surtout le code php que je ne sait pas faire, ainsi que le code pour créer les tables dans ma base.
Merci d'avance, et..au fait...bravo pour ce forum qui m'aide bien. (les forums spécialisés dans le php sont nuls à mon gout, pas d'aide, beaucoup de snobisme...) :026:
Pitchoune
14/02/2004, 19h34
Tu as ton formulaire avec comme champs pseudo, mdp et email.
Pour l'envoi du formulaire, appelle une deuxième page auquel tu auras à peu près ça dedans :
<?php
if(empty($pseudo) OR empty($mdp) OR empty($email))
{
echo "Un des champs est vide. Veuillez revenir au formulaire d'enregistrement.";
}
else
{
require('fichier_avec_infos_de_connexion.php');
$db = @mysql_connect("$dbhost","$dbuser","$dbpass") OR DIE("Erreur : la base de données n'existe pas.");
@mysql_select_db("$dbbase", $db) OR DIE("Erreur : la base de données n'est pas accessible.");
$rqt = mysql_query("INSERT INTO $table VALUES ('','" . addslashes($pseudo) . "','" . addslashes($mdp) . "','" . addslashes(htmlspecialchars_uni($email)) . "')");
if(!$rqt) // Si requete echoue
{
echo "La requête a échoué, veuiller recommencer ou contactez l'administrateur.";
}
else
{
echo "L'enregistrement s'est réalisé avec succès !";
}
}
?>
Sachant que la première colonne sera l'userid crée avec la table et défini en auto_increment.
Et dans un fichier de config qui sera appelé, tu entres ceci :
<?php
$dbhost = ""; // Nom de l'hôte, généralement localhost
$dbuser = ""; // Nom d'utilisateur de la connexion à la base de données
$dbpass = ""; // Mot de passe de la même connexion
$table = ""; // Nom de la table auquel l'utilisateur sera enregistré
?>
Il est peut-être pas sécurisé (et j'en voudrais moi-même en savoir plus dessus), mais ça fonctionne bien :)
PS : pour les addslashes et htmlspecialchars_uni, je suis pas sûr, je voudrais des renseignements dessus (addslashes, stripslashes, trim, etc...).
Puis créé une fonction qui vérifiera si l'email à une forme valide. en l'appelant de cette façon
if (verif_email($email)) {
requete;
}
function verif_email($email) {
if (ereg("^.+@.+\\..+$",$email))
{
return 1;
} else {
return 0;
}
}
j'explicite l'expression régulière dans le ereg :
^ : pour dire que la chaine débute
.+ : suite de 1 ou plusieurs caractères (on exclue les sauts de ligne tabulation ...)
@ : on le connait celui là
\\. : pour désigner un point littéral
.+$ : chaine qui termine par une suite de 1 ou plusieurs caractères.
Coldfusion
14/02/2004, 20h05
super merci pour tes renseignements. J'ai l'impression de ne pas être seul dans ces problemes compliqués du php
Alors déjà j'avais commencé à faire un fichier : "_connexion.php"
Dedans il y a ça:
<?
//Paramètrespersos
$host="mysql.oxyd.fr";
$user="user_****";
$pass="*****";
$bdd="user_2538";
@mysql_connect($host,$user,$pass)
ordie("Impossibledeseconnecter");
@mysql_select_db("$bdd")
ordie("Impossibledeseconnecter");
?>
Coldfusion
14/02/2004, 20h07
Donc je crois que pour ça, c'est ok. comme ca je peut faire appel à ce fichier à chaque fois.
Ensuite j'ai réussit à trouver ce code qui me parait ressembler à ce que je veut :
<?include("_connexion.php");?>
//silechamp"email"n'estpasvide
if($email){
//onajoutelafiche
$table="photo";
$query="INSERTINTO$table(nom,email)";
$query.="VALUES('$nom','$email')";
$result=mysql_query($query);
//etonpréparelemessageàafficher
$message="Fiche<b>".$nom."-";
$message.=$email."</B>ajoutée!";
}?>
<HTML><HEAD><TITLE>Exemple</TITLE>
<scriptlanguage="JavaScript"><!--
functionverif(email){//Emailvalide?
vararobase=email.indexOf("@")
varpoint=email.lastIndexOf(".")
if((arobase<3)||(point+2>email.length)
||(point<arobase+3))returnfalse
returntrue
}
functiontest(nom,mail){//Vérifieleformulaire
if(nom.value==""){alert('Nomrequis!')
nom.focus();returnfalse}
if(!verif(mail.value)){alert('Emailinvalide!')
mail.focus();returnfalse}
returntrue//envoieleschamps
}
//--></script>
</HEAD><BODY>
<tablewidth=100%height=100%><tr><td><center>
<?echo$message;?>
<formmethod="post"action="<?echo$URL;?>"
onSubmit="returntest(this.nom,this.email)">
<table><tr>
<td>Nom</td>
<td><inputtype="text"name="nom"></td>
<td>E-mail</td>
<td><inputtype="text"name="email"></td>
</tr><tr>
<thcolspan=4>
<inputtype="Submit"value="Ajouter">
</th>
</tr></table>
</form>
</td></tr></table>
</BODY></HTML>
<?mysql_close();?>
Coldfusion
14/02/2004, 20h07
Dans ce code, il me manque le champ "mot de passe" qu'il m'est indispensable d'avoir.
De plus, quand je met tout cela en ligne, j'ai une erreur à la ligne 36, je ne comprends pas pourquoi.
Je vais donc tester ton code mais je ne sait pas comment integrer mon formulaire à ton code ...
Dit moi si c'est juste svp :
Dans un premier temps mon formulaire donc :
Je fait une page html qui s'appelle photo.htm
Dedans je met :
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form name="form1" method="post" action="page2.php">
<p>Pseudo
<input type="text" name="pseudo">
</p>
<p>Mot de passe
<input type="text" name="mdp">
</p>
<p>Email
<input type="text" name="email">
</p>
<p>
<input type="submit" name="Submit" value="Envoyer les informations et voir les photos">
</p>
</form>
</body>
</html>
Coldfusion
14/02/2004, 20h08
tu remarque que je fait appel à la page : page2.php . Dans cette page je mettrais donc ton code si j'ai bien compris.
Ton fichier s'appellera donc page2.php et son contenu sera :
<?php
if(empty($pseudo) OR empty($mdp) OR empty($email))
{
echo "Un des champs est vide. Veuillez revenir au formulaire d'enregistrement.";
}
else
{
require('_connexion.php');
$db = @mysql_connect("$dbhost","$dbuser","$dbpass") OR DIE("Erreur : la base de données n'existe pas.");
@mysql_select_db("$dbbase", $db) OR DIE("Erreur : la base de données n'est pas accessible.");
$rqt = mysql_query("INSERT INTO $table VALUES ('','" . addslashes($pseudo) . "','" . addslashes($mdp) . "','" . addslashes(htmlspecialchars_uni($email)) . "')");
if(!$rqt) // Si requete echoue
{
echo "La requête a échoué, veuiller recommencer ou contactez l'administrateur.";
}
else
{
echo "L'enregistrement s'est réalisé avec succès !";
}
}
?>
Ensuite je crée donc une table qui s'appelle comment ? Combien de champs ? 3 ? Comment définit l'auto increment ? Expliques moi mieux svp...
Voila, j'espere avoir été le plus clair possible pour que tu me réponde.
ensuite il me faudra juste faire un truc pour récuperer ces infos, mais c'est le moins dur je pense.
J'attends ta réponse avec impatience.
Coldfusion
14/02/2004, 20h10
PS , j'ai dû faire 4 message parceque quand j'ai lancé mon premier message qui contenait les 4, et bien vB à coupé mon texte. Comme si je dépassait le max des caracteres... ou comme si des balises bloquaient...
Pitchoune
14/02/2004, 20h12
4 champs :
CREATE TABLE choisis_le_nom_de_ta_table (
userid INT(10) NOT NULL AUTO_INCREMENT,
pseudo VARCHAR(20) NOT NULL,
mdp VARCHAR(20) NOT NULL,
email VARCHAR(40) NOT NULL,
PRIMARY KEY (userid)
);
Coldfusion
14/02/2004, 23h24
ok merci !
juste deux trucs :
j'ai ce message d'erreur :
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in /usr/local/www/data.users/*****.com/www/_connexion.php on line 3
Erreur : la base de donnÈes n'existe pas
et la ligne 3 est :
[QUOTE]$host="mysql.oxyd.fr";//voirhébergeur
Coldfusion
14/02/2004, 23h26
pourtant tout est ok à mon avis. Dans le config.php de vB il y a :
[QUOTE]// hostname or ip of server
$servername='mysql.oxyd.fr';
Coldfusion
14/02/2004, 23h26
et vB marche !
Sinon deuxieme probleme, je ne sait pas ou mettre le nom de la table que j'ai crée dans phpmyadmin. La table "photo" est bien créee mais dans quel fichier dois-je mettre ce nom ? "page2.php" ????
Merci de ton aide
Pitchoune
15/02/2004, 20h05
Mets le nom de la table dans le fichier auquel se trouve les informations de connexion à la base :)
Coldfusion
16/02/2004, 14h19
merci pour ta réponse...2 jours que je galere dessus et ca marche pas...
voici l'erreur :
____
Parse error: parse error in /usr/local/www/data.users/*(domaine)*.com/www/_connexion.php on line 3
Erreur : la base de donnÈes n'existe pas.
____
Je comprends pas... ma DB existe, la table "photo" aussi...
Dans ton fichier page2.php j'ai pourtant remplacé :
$rqt = mysql_query("INSERT INTO $table VALUES ('','" . addslashes($pseudo) . "','" . addslashes($mdp) . "','" . addslashes(htmlspecialchars_uni($email)) . "')");
Coldfusion
16/02/2004, 14h21
SUITE DE MON MESSAGE :
par :
$rqt = mysql_query("INSERT INTO $photo VALUES ('','" . addslashes($pseudo) . "','" . addslashes($mdp) . "','" . addslashes(htmlspecialchars_uni($email)) . "')");
Pitchoune
16/02/2004, 14h22
Je vais te créer un exemple de script cet après-midi ou ce soir, dépend si j'ai du travail maintenant :)
Coldfusion
16/02/2004, 14h22
SUITE DE MON MESSAGE :
Peut tu m'expliquer ou ça coince ?
Merci encore et encore... je suis completement largué
Coldfusion
16/02/2004, 14h44
Je vais te créer un exemple de script cet après-midi ou ce soir, dépend si j'ai du travail maintenant :)
merci merci :) :001:
vBulletin® v.3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd. Tous droits réservés - Version française vbulletin-fr.org