Accueil > Forum > > > > Avertir lors de l'inscription si un email existe dèjà dans une base de données
Avertir lors de l'inscription si un email existe dèjà dans une base de données
mercredi 27 juillet 2011 à 18:11:52 |
Avertir lors de l'inscription si un email existe dèjà dans une base de données

honey87
|
Bonjour,
je suis entrain de créer un site web ou il y a des pages de contact ainsi que l'inscription à la newsletter..
je voudrais avertir l'internaute si l'email qui a tapé existe dans la base de données, comme quoi il doit le changer ..
SVP aidez moi, c'est très urgent
|
|
mercredi 27 juillet 2011 à 18:33:36 |
Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

TychoBrahe
|
Salut,
Personne ne peux devinner ce que tu as déjà fait et donc personen ne peux t'aider dans l'état actuel des choses. Bref, post donc ton code et ensuite on te dira quoi faire.
|
|
mercredi 27 juillet 2011 à 18:47:25 |
Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

honey87
|
Voilà mon code
Code d’insertion dans la BDD :
<?php
$base="ma_base";
$conn=mysql_connect("localhost","root","");
mysql_select_db($base);
$email=$_POST['email'];
$date = date("Y/m/d - H:i:s");
$sql='insert into newsletter VALUES("", "'.mysql_escape_string($email).'","'.mysql_escape_string($date).'")';
$req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("location:index.php");
?>
Code HTML:
<script language="javascript">
function focus_in_input(ch){
if(ch.value=='votre e-mail ici'){
ch.value='';
}
}
function blur_in_input(mp){
if(mp.value==''){
mp.value='votre e-mail ici';
}
}
function controler_formulaire(obj)
{
//controle mail
var mail=obj.email.value;
var pos_at=mail.indexOf('@')
if(pos_at==-1)
{
alert('Veuillez saisir correctement votre e-mail !');
obj.email.value='';
obj.email.focus();
return false;
}
else
{
var sous_mail=mail.substring(pos_at,mail.length)
var pos_p=sous_mail.indexOf('.')
if(pos_p==-1)
{
alert('Veuillez saisir correctement votre e-mail !');
obj.email.value='';
obj.email.focus();
return false;
}
}
return true;
}
function showMessage() {
alert ("Nous vous remercions pour votre inscription. Vous recevrez dorénavant notre newsletter.");
return true;
}
</script>
<form id="form2" name="form2" method="post" action="insertnews.php" onSubmit="return controler_formulaire(this)">
<label>
<input type="text" name="email" id="email" value="Votre e-mail ici" onclick="this.value =''" onblur="if(this.value==''){this.value='Votre e-mail ici'}" />
</label>
<label>
<input type="submit" name="envoyer2" id="envoyer2" value="Envoyer" onclick = "return showMessage()"/>
</label>
</form>
|
|
mercredi 27 juillet 2011 à 19:50:24 |
Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

TychoBrahe
|
Et bien, avant de faire l'insertion, tu sélectionne les entrées dont l'email est celle que l'utilisateur fourni. S'il n'y a aucun retour alors tout est ok, et s'il y a un retour c'est que l'email est déjà présent dans la base. Ça représente un mysql_query, un mysql_num_rows() et quelques petit truc triviaux, rien de bien méchant. Où est le problème ?
|
|
mercredi 27 juillet 2011 à 20:19:49 |
Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

cod57
|
bonsoir
un truc comme ça
a++
Code PHP :
<?php
if(isset($_POST['email']) && !empty($_POST['email'])){
$base="ma_base";
$conn=mysql_connect("localhost","root","");
mysql_select_db($base);
//un peu de securité
$email=mysql_real_escape_string($_POST['email']);
$date = date("Y/m/d - H:i:s");
//tu verifies
$sql="select email from newsletter where email='".$email."' limit 1";
$q=mysql_query($sql);
if(mysql_num_rows($q)>0){
//il y a une ligne donc
echo '<a href="javascript:history.back();"><< Retour</a> Il semble que cette email soit déjà présent';
mysql_close();
}else{
//nouveau on insere
$sql="insert into newsletter VALUES(NULL,'".$email."','".$date."')";
$req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
mysql_close();
header('Location: index.php');exit;
}
}else{
//si acces direct à la page sans passer par le formulaire
echo '<a href="javascript:history.back();"><< Retour</a> Poster un email';
}
?>
 Bonne programmation !
|
|
jeudi 28 juillet 2011 à 10:01:04 |
Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

honey87
|
Merci d'avoir répondre mais ça marche pas, j'ai copier la même chose sur mon fichier d'insertion mais quand je valide il me donne une autre page ou il ya un message de "La connexion a été réinitialisée" (comme si la page n'existe pas)
|
|
jeudi 28 juillet 2011 à 10:10:28 |
Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

TychoBrahe
|
Bravo, vous venez d'illustrer parfaitement un problème récurent sur les forums de ce genre. Copier/coller un code sans le comprendre est la pire connerie à faire. Non seulement le débutant ne comprend rien, ne tire strictement aucune leçon de ceci et ne progresse pas, mais en plus ça ne fonctionne pas et/ou pose de nouveaux problèmes.
@honey87 : je t'invite à reprendre ton code d'origine et à le modifier par toi même en suivant les conseils que je t'ai donné et en t'inspirant de ce qu'a posté cod57.
|
|
jeudi 28 juillet 2011 à 10:39:15 |
Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

honey87
|
mais pourquoi tout cela ?
il suffit juste de dire ta dernière phrase, pas besoin de jouer le rôle de d'un prof..
oui bravo parce que je suis qu'une infographiste.. et entrain de monter un site dynamique toute seule !!
|
|
jeudi 28 juillet 2011 à 10:55:37 |
Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

coucou747
|
Bonjour,
Plusieurs points sont importants :
TychoBrahe essaie de t'aider, il ne te donne pas de poisson, mais il t'explique comment pecher, c'est beaucoup plus efficace.
honey87 semble lutter et donc, il serait plus efficace soit de lui faire son truc (ce qui n'est pas le but de ce forum) soit de lui expliquer plus calmement comment faire, et pourquoi son code ne fonctionne pas.
<?php
$base="ma_base";
$conn=mysql_connect("localhost","root","");
mysql_select_db($base);
$email=$_POST['email'];
$date = date("Y/m/d - H:i:s");
// j'ai ajouté ça à ton code : le principe c'est : selectionner n'importe quelle ligne de ta db qui a pour email celui de l'utilisateur
$req=mysql_query('SELECT 1 from newsletter WHERE email="'.mysql_escape_string($email).'"') or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
if (mysql_num_rows($req) > 0){ // si la requete a des résultats, je renvoie vers une page d'erreur
header("location:error.php");
}
header("location:index.php");
$sql='insert into newsletter VALUES("", "'.mysql_escape_string($email).'","'.mysql_escape_string($date).'")';
$req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("location:index.php");
?>
Est-ce-que c'est correct ?
Cordialement,
Maxime
|
|
jeudi 28 juillet 2011 à 12:07:43 |
Re : Avertir lors de l'inscription si un email existe dèjà dans une base de données

cod57
|
bonjour
TychoBrahe a raison j'aurai pas du poster le code ainsi mais bon comment expliquer puisque tu n'es pas vraiment programmeur donc quelques explications basiques
Mon code fonctionne parfaitement
je pense que ton problème vient de action=""
mais comme on a pas une vue de ton code cela reste une supposition ..., là je te donne un exemple d'un fichier sur lui même tu l'appelles par exemple inscription.php
tu controles déjà le mail par javascript c'est
une bonne chose tu pourras eventuellement faire un contrôle php mais restons simple
bien en soit il faut donc eviter
de se faire recopier son formulaire
de se faire spammer
de se faire injecter des hack dans la base
pour ta reflexion
Code PHP :
<?php
session_start();
/*on va faire des varibles serveur inaccessibles au client*/
$token=$_SESSION['token']=md5(date('mdYH').$_SERVER['REMOTE_ADDR']);
$_SESSION['validticket']=true;
if(isset($_POST['email']) && !empty($_POST['email']) && $_POST['email']!='Votre e-mail ici' && $_SERVER['REQUEST_METHOD']==='POST'){
//cette petite protection evitera de te faire recopier ton formulaire
//tu peux aussi envisager une image captcha si tu remarques du spam
if(isset($_SESSION['token']) && isset($_POST['token']) && $_POST['token']===$_SESSION['token']){
$base="ma_base";
$conn=mysql_connect("localhost","root","");
mysql_select_db($base);
//un peu de securité
$email=mysql_real_escape_string($_POST['email']);
/*bon tu peux inserer la date ainsi mais c'est pas comme ça que l'on fait
on insere direct dans un champs datetime avec la fonction now
$sql="insert into newsletter VALUES(NULL,'".$email."',now())";
si tu veux changer mais pour l'instant je laisse dans la forme basique
*/
$date = date("Y/m/d - H:i:s");
//tu verifies
$sql="select email from newsletter where email='".$email."' limit 1";
$q=mysql_query($sql);
if(mysql_num_rows($q)>0){
//il y a une ligne donc
echo '<hr>Il semble que cette email soit déjà présent<hr>';
//echo '<hr><a href="javascript:history.back();"><< Retour</a> Il semble que cette email soit déjà présent<hr>';
}else{
unset($_SESSION['validticket']);
unset($_SESSION['token']); //anti refresh f5
//nouveau on insere
$sql="insert into newsletter VALUES(NULL,'".$email."','".$date."')";
$req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
echo '<hr>Merci '.$email.' vous êtes inscrit à présent<hr>';
//echo '<hr><a href="javascript:history.back();"><< Retour</a> Merci '.$email.' vous êtes inscrit à présent<hr>';
//header('Location: index.php');exit; //il faut que se fichier existe
}
}else{
//$token pas bon
}
}else{
//si acces direct à la page sans passer par le formulaire
echo '<a href="javascript:history.back();"><< Retour</a> Poster un email';
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta name="generator" content="PSPad editor, www.pspad.com">
<title></title>
</head>
<script language="javascript">
function focus_in_input(ch){
if(ch.value=='votre e-mail ici'){
ch.value='';
}
}
function blur_in_input(mp){
if(mp.value==''){
mp.value='votre e-mail ici';
}
}
function controler_formulaire(obj)
{
//controle mail
var mail=obj.email.value;
var pos_at=mail.indexOf('@')
if(pos_at==-1)
{
alert('Veuillez saisir correctement votre e-mail !');
obj.email.value='';
obj.email.focus();
return false;
}
else
{
var sous_mail=mail.substring(pos_at,mail.length)
var pos_p=sous_mail.indexOf('.')
if(pos_p==-1)
{
alert('Veuillez saisir correctement votre e-mail !');
obj.email.value='';
obj.email.focus();
return false;
}
}
return true;
}
function showMessage() {
alert ("Nous vous remercions pour votre inscription. Vous recevrez dorÚnavant notre newsletter.");
return true;
}
</script>
</head>
<body>
</html>
<form id="form2" name="form2" method="post" action="" onSubmit="return controler_formulaire(this)">
<input type="hidden" value="<?php echo $token;?>" name="token">
<label>
<input type="text" name="email" id="email" value="Votre e-mail ici" onclick="this.value =''" onblur="if(this.value==''){this.value='Votre e-mail ici'}" />
</label>
<label>
<input type="submit" name="envoyer2" id="envoyer2" value="Envoyer" onclick = "return showMessage()"/>
</label>
</form>
</body>
Code :
-- phpMyAdmin SQL Dump
-- version 3.2.0.1
-- http://www.phpmyadmin.net
--
-- Serveur: localhost
-- Généré le : Jeu 28 Juillet 2011 à 11:43
-- Version du serveur: 5.1.36
-- Version de PHP: 5.2.11
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
--
-- Base de données: `ma_base`
--
-- --------------------------------------------------------
--
-- Structure de la table `newsletter`
--
CREATE TABLE IF NOT EXISTS `newsletter` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(40) NOT NULL,
`date` varchar(30) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
--
-- Contenu de la table `newsletter`
--
INSERT INTO `newsletter` (`id`, `email`, `date`) VALUES
(1, 'toto@free.fr', '2011/07/28 - 10:55:39'),
(2, 'titi@free.fr', '2011/07/28 - 10:57:15'),
(3, 'tata@free.fr', '2011/07/28 - 10:58:47'),
(4, 'tutu@free.fr', '2011/07/28 - 11:23:34'),
(5, 'tyty@free.fr', '2011/07/28 - 11:36:37'),
(6, 'to@free.fr', '2011/07/28 - 11:42:20');
j'ai testé en vitesse ça à l'air de tourner
pour la date je l'aurai saisie autrement mais bon c'est pas faux en soit ... pour pas créer
trop de confusion je laisse le script comme ça
mais j'ai laissé une explication dans le code
 Bonne programmation !
|
|
Cette discussion est classée dans : base, email, existe, inscription, avertir
Répondre à ce message
Sujets en rapport avec ce message
verif existance dans bdd [ par cseagle ]
Bonjour à tous,J'ai une table MySql membres qui contient les infos des membres. A l'inscription je vérifie si l'email existe déjà dans la base auquel
formulaire html, base de données MySQL , mail par php [ par a_sophie ]
Voilà, j'ai nune base de données sous MySQL, un formulaire html où une fois les champs remplis devront aller ds la base. Par contre par la suite je de
Base de données, php et flux [ par benjimanweb ]
J'aimerai savoir s'il est possible de créer un script permettant de voir ce que l'ordinateur verifie sur la base de données lorsque l'on clique sur le
fonction mail [ par refkaben ]
salut tous le monde!j'ai un formulaire d'inscription, si un membre vient de s'inscrire on lui envoi un mail lui demandant de me contacter, voila le co
récupération donnée [ par sparh ]
Bonjour à tous,Voilà, je crée une zone membre,une fois l'utilisateur inscrit je lui envoi un mail avec un lien pour valider son inscription. (ce lien
Authentification [ par gabsia ]
Salut J'ai un problème d'autentification: Je suis entrain de créer un site comme étant projet, Ce site dynamique : l'utilisateur doit s'y inscrire
besoins d'aide svp [ par emillionclub ]
Hello tout le monde, Quelqu'un peux-til m'aider svp? J'ai un probleme et je ne m'en sort pas, j'y comprend pas grand chose!Je souhaite faire un lien d
Inscription et email d'acitvation [ par Elyianha ]
Allo! en gros la, je crée un jeux online multiplayer..Je dois savoir comment, lors de l'inscription, une clé d'activation (un simple link a cliker) es
Tri dans les résultats d'une requête pour éviter les doublons [ par Spartan ]
Bonjour, c'est le première fois que je poste sur ce forum, il est probable que je pose une question à laquelle il a déjà été répondu (le moteur de rec
Ne veut pas s'ajouter a la base de données [ par romain14g59 ]
bonjour je vient d'esseyer de crer un script pour ajouter des données dans ma base de données MYSQL a partir d'un formulaire mais quand je valide mon
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Forum
XML ET PHPXML ET PHP par karouani
Cliquez pour lire la suite par karouani
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|