Afficher un lien uniquement pour les membres

Fermé
KOKOLO - 6 nov. 2007 à 09:26
Strat Messages postés 61 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 18 novembre 2007 - 7 nov. 2007 à 12:14
Bonjour,

Je suis en train de développer ma section jeux concours et je rencontre un petit soucis...assez idiot à vrai dire...

Je souhaite faire en sorte que lorsqu'une personne visite mon site, elle puisse voir les jeux concours disponibles...par contre elle ne peut pas y participer tant qu'elle n'est pas membre du site. Je voudrais donc faire en sorte que le systeme détecte si la personne est connectée ou non...Si elle est pas connectée cela affiche "Pour participer à ce jeux concours vous devez être membre" sinon si la personne est connectée, li lien vers le jeux concours est affiché...

Je pensais faire un peu comme suit mais je ne sais pas quoi utiliser pour la variable $loginOK...:

<?

$lien = mysql_query(Select lien from jeuxconcours where id='$id')  or die('Impossible de selectionner les données dans la base'.mysql_error());

if $loginOK= FALSE
{
echo"<font color=red size=3><b>Pour participer à ce jeux concours vous devez être membre !</b></font>";
} 

else
{
echo "$lien"
} 

?>


Aidez moi svp !

voici le script de login si cela vous aide...

<?php
 
 include ('dbconnect.php');
  
 if($pseudo=='' || $password=='')
 {
 echo '<p>Vous avez oublié de remplir un champs.</p>';
 include('login.php'); // On inclus le formulaire d'identification
 exit;
 }
 // on recupère le password de la table qui correspond au login du visiteur
 $sql = "select motdepasse, prenom, id, pseudo, nbrefilleul, soldepoints, inscriptionconfirme, parrain from membres where pseudo='$pseudo'";
 $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

 $data = mysql_fetch_array($req);

 if($data['inscriptionconfirme'] != 'Oui')
 {
 echo '<p>Vos identifiants ne sont pas corrects ou vous n\'avez pas validé votre inscription ! <br><br><a href=http://www.voilou.fr/membres/login.php>Retourner au formulaire de connection</a></p>';
 exit;
 }
 if($data['motdepasse'] != md5($password))
 {
 echo '<p>Ces identifiants ne sont pas valide. Merci de recommencer</p>';
 include('login.php'); // On inclus le formulaire d'identification
 exit;
 }
 else
 {
 session_start();
  $_SESSION['prenom'] = $data['prenom'];
  $_SESSION['pseudo'] = $data['pseudo'];
  $_SESSION['nbrefilleul'] = $data['nbrefilleul'];
  $_SESSION['parrain'] = $data['parrain'];
   $_SESSION['id'] = $data['id'];
 session_register('id');
header("Location:membre.php");
  
 }
 // on ferme la connexion à mysql
mysql_close();
?> 


Merci

5 réponses

En fait tu devrais utiliser les variaibles de session ($_SESSION) pour voir si l'internaute est connecté... c'est ce que génère ton script de login...
avec à la place de ton
if $loginOK= FALSE
un
if ($_SESSION['id'])


Cela devrait fonctionner...

Vic
0
Bonjour Vic,

Merci pour tes réponses mais j'aurai encore besoin de ton aide...!

Voilà, je souhaite donc intégrer la portion de code ci dessus dans cette portion de script :


<?php 

include ('dbconnect.php'); 
 

$pseudo = $_SESSION['pseudo'];  
 
// on crée la requete SQL
$sql = "select * from ";
$sql.= "listeconcoursArgent left join confirmeconcoursargent ";
$sql.= "on listeconcoursArgent.idccargent = confirmeconcoursargent.idccargent2 ";
$sql.= "and confirmeconcoursargent.pseudo='".$pseudo."' ";
$sql.= "where confirmeconcoursargent.pseudo is null";
 
 
// on envoie la requête

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

if (!$req)
{
	echo "query = ".$sql."\n";
	echo "mysql_errno = ".mysql_errno($link)."\n";
	echo "mysql_error = ".mysql_error($link)."\n";	
	exit;
} 

if (mysql_num_rows($req) > 0)
{

	// on fait une boucle qui va faire un tour pour chaque enregistrement
	while($data = mysql_fetch_array($req)) 
    	{	
        	echo ' <br><div align="center">
			  <table width="534" height="44" border="1">
                <tr>
                  <td width="410" height="38">'.$data['nomconcoursargent'].'</td>
                  <td width="107"><div align="center">'.$data['plusinfo'].'</div></td>
                </tr>
              </table>
			  <table width="534" border="1">
                <tr>
                  <td width="155" height="145">Lots mis en jeu : </td>
                  <td width="354"><ul><li>'.$data['jeuxconcoursargent'].'</li></ul>
                  <br>
                  </td>
                </tr>
              </table>			  
			  <table width="534" border="1">
                <tr>
                  <td width="522"><div align="center"><form action="'.$data['lienconcoursargent'].'" 	method="post">
		<input type="submit" class="fondblanc" value="Participer à ce jeu concours">       
		</form>
		<form action="supconcoursargent.php" 	method="post">
		<input name="idccargent" type="hidden" value="'.$data['idccargent'].'">
		<input name="pseudo" type="hidden" value="'.$pseudo.'">
		<input type="submit" class="fondblanc" value="Effacer ce jeu concours de mon compte">
		 </form></div></td>
                </tr>
              </table></div><br>
					  <tr>
        	            <td colspan="2"><div align="center">
	        </div></td><br>
                  </tr>
                </table>';
 	  }   
}
else
{
	echo "<b>Vous avez déjà participé à tous les jeux concours disponibles actuellement !</b>";
}

// on ferme la connexion à mysql
mysql_close(); 
?>


Il faudrait donc que j'intègre la chose suivante :

if ($_SESSION['id'])
{
echo "<form action="'.$data['lienconcoursargent'].'" 	method="post">
		<input type="submit" class="fondblanc" value="Participer à ce jeu concours"> 
		</form>      
                <form action="supconcoursargent.php" 	method="post">
		<input name="idccargent" type="hidden" value="'.$data['idccargent'].'">
		<input name="pseudo" type="hidden" value="'.$pseudo.'">
		<input type="submit" class="fondblanc" value="Effacer ce jeu concours de mon compte">
		 </form>";
} 
else
{
echo "<font color=red size=3><b>Pour participer à ce jeux concours vous
devez être membre !</b></font>"
} 


A la place de cela (en gras) :

{	
        	echo ' <br><div align="center">
			  <table width="534" height="44" border="1">
                <tr>
                  <td width="410" height="38">'.$data['nomconcoursargent'].'</td>
                  <td width="107"><div align="center">'.$data['plusinfo'].'</div></td>
                </tr>
              </table>
			  <table width="534" border="1">
                <tr>
                  <td width="155" height="145">Lots mis en jeu : </td>
                  <td width="354"><ul><li>'.$data['jeuxconcoursargent'].'</li></ul>
                  <br>
                  </td>
                </tr>
              </table>			  
			  <table width="534" border="1">
                <tr>
                  <td width="522"><div align="center"><form action="'.$data['lienconcoursargent'].'" 	method="post">
		<input type="submit" class="fondblanc" value="Participer à ce jeu concours">       
		</form>
		<form action="supconcoursargent.php" 	method="post">
		<input name="idccargent" type="hidden" value="'.$data['idccargent'].'">
		<input name="pseudo" type="hidden" value="'.$pseudo.'">
		<input type="submit" class="fondblanc" value="Effacer ce jeu concours de mon compte">
		 </form></div></td>
                </tr>
              </table></div><br>
					  <tr>
        	            <td colspan="2"><div align="center">
	        </div></td><br>
                  </tr>
                </table>';
 	  }   


Je ne sais pas si c'est vraiment possible a cause du echo qui fait actuellement en sorte que la portion de code s'affiche au lieu d'etre traitée...ce qui est normal...

Merci encore !
0
Strat Messages postés 61 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 18 novembre 2007 1
7 nov. 2007 à 11:38
En fait il suffit pas que tu mettes une variable session.
Dans ta base de donnée tu dois créer une table pour les membres (champs : id, pseudo, mot de passe, informations eventuelles, comme l'e-mail..).
Tu créé un formulaire d'inscription (avec hashage du mot de passe avec la fonction md5(); ) et un formulaire de login :
"si pseudo n'est pas trouvé 0 fois dans la table membres.. on passe a l'etape suivante"
"si le mot de passe hashé, correspond au mot de passe lié au pseudo, dans la table membre, on log le membre"
"sinon : erreur dans le pseudo ou mdp".

Et hop, pour la connexion tu utilise $_SESSION['logged'] = true; (par exemple)

A ne pas oublier : session_start(); a mettre avant tout code html.
0
Bonjour Strat,

J'ai déjà une base de donnée avec des membres...je souhaite juste perfectionner mon script pour la section des jeux concours...!

Le script de login est en numéro 1 de ce sujet pour connaitres variables utilisées.

J'ai trouvé une autre facon plus simple de réaliser mon script...

  <?php 

include ('dbconnect.php'); 
 
$pseudo = $_SESSION['pseudo'];  
 
// on crée la requete SQL
$sql = "select * from ";
$sql.= "listeconcoursArgent left join confirmeconcoursargent ";
$sql.= "on listeconcoursArgent.idccargent = confirmeconcoursargent.idccargent2 ";
$sql.= "and confirmeconcoursargent.pseudo='".$pseudo."' ";
$sql.= "where confirmeconcoursargent.pseudo is null";
 
// on envoie la requête

$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

if (!$req)
{
	echo "query = ".$sql."\n";
	echo "mysql_errno = ".mysql_errno($link)."\n";
	echo "mysql_error = ".mysql_error($link)."\n";	
	exit;
} 

if (mysql_num_rows($req) > 0) 
{

	// on fait une boucle qui va faire un tour pour chaque enregistrement
	while($data = mysql_fetch_array($req)) 
    	{	
        	echo ' <br><div align="center">
			  <table width="534" height="44" border="1">
                <tr>
                  <td width="410" height="38">'.$data['nomconcoursargent'].'</td>
                  <td width="107"><div align="center">'.$data['plusinfo'].'</div></td>
                </tr>
              </table>
			  <table width="534" border="1">
                <tr>
                  <td width="155" height="145">Lots mis en jeu : </td>
                  <td width="354"><ul><li>'.$data['jeuxconcoursargent'].'</li></ul>
                  <br>
                  </td>
                </tr>
              </table>			  
			  <table width="534" border="1">
                <tr>
                  <td width="522"><div align="center"><form action="'.$data['lienconcoursargent'].'" 	method="post">
		<input type="submit" class="fondblanc" value="Participer à ce jeu concours">       
		</form>
		<form action="supconcoursargent.php" 	method="post">
		<input name="idccargent" type="hidden" value="'.$data['idccargent'].'">
		<input name="pseudo" type="hidden" value="'.$pseudo.'">
		<input type="submit" class="fondblanc" value="Effacer ce jeu concours de mon compte">
		 </form></div></td>
                </tr>
              </table></div><br>
					  <tr>
        	            <td colspan="2"><div align="center">
	        </div></td><br>
                  </tr>
                </table>';
 	  }   
}
else
{
	echo ' <br><div align="center">
			  <table width="534" height="44" border="1">
                <tr>
                  <td width="410" height="38">'.$data['nomconcoursargent'].'</td>
                  <td width="107"><div align="center">'.$data['plusinfo'].'</div></td>
                </tr>
              </table>
			  <table width="534" border="1">
                <tr>
                  <td width="155" height="145">Lots mis en jeu : </td>
                  <td width="354"><ul><li>'.$data['jeuxconcoursargent'].'</li></ul>
                  <br>
                  </td>
                </tr>
              </table>			  
			  <table width="534" border="1">
                <tr>
                  <td width="522"><div align="center"><form action=membres/index.php 	method="post">
		<input type="submit" class="fondblanc" value="S identifier ou devenir membre pour participer à ce jeu concours">       
		</form>
		</div></td>
                </tr>
              </table></div><br>
					  <tr>
        	            <td colspan="2"><div align="center">
	        </div></td><br>
                  </tr>
                </table>';
}

// on ferme la connexion à mysql
mysql_close(); 
?> 



Je voudrais ajouter la condition $_SESSION['id']=TRUE, j'ai déjà testé en e rajoutant comme suis (en gras) mais cela m'affiche une page blanche du coup...je dois oublier des guillemets ou je ne sais..?!
}
if (mysql_num_rows($req) > 0) & ($_SESSION['id']=TRUE)
{
// on fait une boucle qui va faire un tour pour chaque enregistrement
	while($data = mysql_fetch_array($req)) 
    	{	
        	echo ' <br><div align="center">
			  <table width="534" height="44" border="1">
                <tr> ....etc

MERCI
0

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

Posez votre question
Strat Messages postés 61 Date d'inscription dimanche 4 novembre 2007 Statut Membre Dernière intervention 18 novembre 2007 1
7 nov. 2007 à 12:14
Tu dois mettre avant tout script html : mysql_connect();

Ensuite tu fais ton script de connexion
Une fois connecté, tu enregistre les données de lma table membre de la personne, susceptible d'etre utiles, dans les variables sessions
Par exemple $_SESSION['pseudo'] = $xxx['pseudo'] "xxx" etant le nom du tableau regroupant les données du membre.

Pour ce que tu demande il te suffit de faire un lien dans ta liste de jeu qui s'affiche uniquement si on est connecté :
if $_SESSION['zzz'] === true
"zzz" c'est e nom de ta session de login, lors de la connexion, par exemple $_SESSION['logged"].

Bonne chance
0