Verification de "login" php

Résolu
Graig083 -  
Autumn`Tears Messages postés 1054 Date d'inscription   Statut Membre Dernière intervention   - 18 oct. 2011 à 19:54
Bonjour,

Mes compétences en php sont assez limitées...
Je souhaiterais faire un livre d'or pour le site Internet de mon association mais je souhaiterais que seuls les adhérents de l'asso puissent y inscrire des articles.
J'ai déjà une base de données qui regroupe la liste des adhérents (champs = nom, prenom, email, adresse, etc) et je viens d'en créer une pour les messages du livre d'or (2 champs : id en autoincrement et contenu du message).
Mon formulaire html comporte 2 champs : email (pour vérification de l'appartenance aux adherents) et contenu du message
En revanche je n'arrive pas à configurer le code qui me permette de vérifier que la personne qui complète le formulaire est bien inscrite dans la base de données des adhérents avant d'enregistrer son message dans celle du livre d'or du style

Connexion à la base de données "adhérents"
verification que l'adresse mail saisie dans le champs "email" du formulaire apparait bien dans la base
si ok alors connexion a la base de données "livre d'or" et enregistrement des valeurs saisies dans le champs "message"
sinon message "votre adresse mail n'apparait pas dans la liste de nos adherents"

J'espère avoir été assez clair...
Merci d'avance de votre aide

Graig

10 réponses

jiantox Messages postés 1092 Date d'inscription   Statut Membre Dernière intervention   114
 
salut,

petite interrogation, ton formulaire apparait si l'utilisateur est connecté ou à tout le monde ?

si c'est à tout le monde alors inutile de faire la verification, il suffit de prendre l'e-mail d'un inscrit et de l'entrer pour pouvoir poster sous une autre identité que la sienne...

ce qu'il faudrais que tu fasses plutot c'est l'afficher que quand la personne est connectée, et ça logiquement tu as une vérification pour le savoir :)
0
Autumn`Tears Messages postés 1054 Date d'inscription   Statut Membre Dernière intervention   145
 
Salut,

$co=msql_connect('BDD','id', 'mdp');
mysql_select_db('taBase');
$verif=mysql_query("SELECT * FROM taTable WHERE champ_e_mail='.$_POST['email'].'");
if(mysql_num_rows($verif) != )
{
mysql_query("INSERT INTO 'livredor' ('contenu') VALUES ('.$_POST['message'].')");
header('location:livredor.php?message=ok'); //Redirige sur la page du livre d'or avec un message de validation (il faudra modifier ta page livredor pour ça)
}
else
{
header('location:livredor.php?message=err'); //Pour le message d'erreur
}
mysql_close($co);
Cordialement,

Adrien.
0
Graig083
 
merci pour la réponse rapide.
Et si je n'ai pas besoin qu'un message de validation apparaisse (la liste des messages du livre d'or apparaissent en dessous du formulaire en fait donc la personne voit tout de suite que son message a bien été enregistré)
0
jiantox Messages postés 1092 Date d'inscription   Statut Membre Dernière intervention   114
 
eh bien tu met rien deriere le "livredor.php" ^^
0
Autumn`Tears Messages postés 1054 Date d'inscription   Statut Membre Dernière intervention   145
 
C'est juste de l'amélioration, si la personne ne voit pas de changement, elle peut se demander pourquoi mais le principal, c'est déjà d'arriver à faire ton traitement !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Graig083
 
En fait voila ce que j'ai a l'heure actuelle qui fonctionne bien mais sans verification préalable et que je voudrais adapter si possible...



<form method="post" action="livredor.php">
<p align="center">
<textarea id="livredor" name="contenu" rows="10" cols="60"></textarea><br />
<span id="carac_reste_textarea_1"></span> caractères restants.<br />
<script type="text/javascript">
maxlength_textarea('livredor','carac_reste_textarea_1',600);
</script>
<input type="submit" value="Soumettre" />
</p>
</form>

<?php
$db = mysql_connect('localhost', '***', '***');
mysql_select_db('***',$db);

if (isset($_POST['contenu']))
{
$contenu = $_POST['contenu'];
$contenu = nl2br($contenu);

mysql_query("INSERT INTO livredor VALUES('', '" . $contenu . "')");
}
?>

<p> </p>

<?php
$sql = 'SELECT * FROM livredor ORDER BY id';
$req = mysql_query($sql) or die('Impossible de se connecter au serveur
'.$sql.'
'.mysql_error());

while($data = mysql_fetch_array($req))
{
echo '<p>' . $data['contenu'] . '<hr size="1" style="color:#D1D1E1" /></p>';
}

mysql_close();
?>
0
Autumn`Tears Messages postés 1054 Date d'inscription   Statut Membre Dernière intervention   145
 
Formulaire :
Email : <input type="text" name="email" id="email">

Côté PHP :

if (isset($_POST['contenu']))
{
$contenu = $_POST['contenu'];
$contenu = nl2br($contenu);
$resmysql_query("SELECT * FROM TableEmail WHERE email='.$_POST[''].'");
if(mysql_num_rows($res) != 0)
{
mysql_query("INSERT INTO livredor VALUES('', '" . $contenu . "')");
}
}
0
Graig083
 
J'ai un message d'erreur

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in F:\inetpub\vhosts\***.fr\httpdocs\livredor.php on line 144

la ligne 144 etant :

$resmysql_query("SELECT * FROM adherents WHERE mail='.$_POST['mail'].'");


pourtant la base s'appelle bien "adherents" et le champs "mail"...
0
Autumn`Tears Messages postés 1054 Date d'inscription   Statut Membre Dernière intervention   145
 
Où ai-je la tête... J'avais oublié un morceau !
$res=mysql_query("SELECT * FROM adherents WHERE mail='.$_POST['email'].'");
0
Graig083
 
je suis desolé ça ne fonctionne tjs pas, il y a tjs le même message d'erreur
j'ai essayé

$res=mysql_query("SELECT * FROM adherents WHERE mail=" . $mail . "");

et la page s'affiche mais il y a un nouveau mesage d'erreur quand je fais un test de saisie

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in F:\inetpub\vhosts\***.fr\httpdocs\livredor.php on line 146

la ligne 146 etant

if(mysql_num_rows($res) != 0)
0
Autumn`Tears Messages postés 1054 Date d'inscription   Statut Membre Dernière intervention   145
 
En fait il reste une erreur à la ligne 145, question de guillemets !

$mail=$_POST['email'];
$res=mysql_query("SELECT * FROM adherents WHERE mail='.$mail."'");
0
Graig083
 
c'est parfait j'ai rectifié ça fonctionne il ne reste qu'un détail c'est que je voudrais juste que si l'adresse mail n'est pas dans la base adhérent cela affiche le message "désolé votre email n'apparaît pas dans la liste... blablabla"
0
Autumn`Tears Messages postés 1054 Date d'inscription   Statut Membre Dernière intervention   145
 
juste après if(mysql_num_rows...{}
else {
header('location:livredor.php?message=err');
}

Et où tu veux après dans ton affichage :
<?php
if(isset($_GET['message']))
{
if($message == 'err')
{
?><div id='erreur'>Ereur, votre email n'est pas dans la base...</div>
<?php
}
?>
0