[php] session utilisateur sur un site

Résolu/Fermé
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 - 20 avril 2007 à 11:23
iutfv.ba2men Messages postés 1 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 26 août 2009 - 26 août 2009 à 18:44
Bonjour,

je voudrais créer un espace utilisateur sur mon site internet (je parle d'un site internet pro pas perso) et je ne sais pas trop par quoi commencer...

pour info : les utilisateurs se sont inscrits sur le site via un formulaire d'inscription qui écrit les données dans la bdd mysql.

mon collègue à créer un code pour le login mais je n'arrive pas à faire en sorte que l'utilisateur ayant inscrit son nom et son password ne soit pas logué s'il y a une erreur... je sais pas si on me suit...

j'ai le code suivant sur la page de login avant le html :

<?php

if(isset($_COOKIE["cookie_user"]))
{
	$cooki=$_COOKIE["cookie_user"];
?>
Bonjour <?php echo $cooki; ?>
		
<?
}
else
{

?>


j'ai le code suivant sur la page de login dans le body :
	<form action="candidats\index.php" method="post" name="login" id="log2">
        <div align="right"> 
          <input type="text" name="user" class="login">
          &nbsp; 
          <input type="password" name="mdp" class="login">
          <INPUT TYPE=checkbox name="cookie" value="1">
          <input type="submit" name="Submit" value="Ok" class="login">
          &nbsp;&nbsp; &nbsp;</div>
      </form>


et j'ai le code suivant après le html :

<?php
}
?>


actuellement si je clic sur le bouton ok je vais directement sur la page index de la partie candidats alors que je n'ai rien rentré dans les champs précédents...
si quelqu'un pouvait m'aider, merci.

16 réponses

bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
24 avril 2007 à 14:05
Salut, je pense qu'il serait intéressant de savoir à quoi ressemble le contenu de la variable $user avant de l'injecter dans ta requête mysql.
En reprenant le code suivant : ('%$user%'), tu mets n'importes quels caractères en nombre indéfini, puis le contenu de la variable $user, puis à nouveau un nombre indéfini de caractères. Or dans le cas où ta variable $user vaut '', une chaine vide, ça veut dire que tu prends tous les champs pour les quels user = n'importes quels caractères en nombre indéfini, cad la totalité de ta table.
D'autre part, il peut intéressant également de créer une variable $requete, par exemple dans laquelle tu vas coller ta requete puis tu en fait un écho pour voir les valeurs qui sont utilisées.
Voiloù, tiens moi au jus
4
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
24 avril 2007 à 17:39
en fait, c'est pas ta requete en elle même qui est mauvaise, encore que je pense que mettre les % ne va pas : il te suffit d'avoir 2 noms très proches (à une ou deux lettres près) et tu te retrouves avec plusieurs user possibles.
Ce que je ferai :
if (isset ($_POST['user'])
{
  // là tu met en ta requete mysql et l'affichage des données correspondantes
}
else
{
  // la variable $_POST['user'] n'existe pas, à toi de voir ce que tu veux faire dans ce cas : retour sur la fenêtre de log, pas d'affichage de nom tout simplement, ...
}

comme ça, ça te permet de gérer de manière simple le cas où t'as qq'un qui essaye d'arriver sur la page sans être passé au préalable par la case départ, à savoir la fenêtre de log.
Dans ce cas, si tu veux le rediriger vers la page de login :
header("Location:adresse-de-ta-page.php");

dans ce cas, attention : majuscule à respecter strictement à "Location", d'autre part, au moment où php exécutera la fonction header(), il NE doit SURTOUT PAS y avoir eu d'affichage au préalable (genre message d'erreur, code html, ...) sinon il ne va rien faire que de te bouser dans les bottes.
Voiloù.@+
2
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
16 mai 2007 à 18:51
Salut, je ne savais pas du tout ce que tu avais fait de ton côté puisque je ne partait que de quelques fragments de codes. En effet, ce que je t'ai mis ressemble à ce que tu as sur ta page de vérification. Dans ce cas, garde ce que tu as fait.
Ensuite, quand tu me dit que tu as l'affichage même si t'est pas loggé, c'est sur quelle(s) page(s) ? as-tu pensé, par exemple à supprimer ton cookie si la personne quitte sa session ou si elle ferme la fenêtre ?
Pour ta dernière demande, il va me falloir un peu plus d'infos pour pouvoir te répondre correctement.
shüss
2
iutfv.ba2men Messages postés 1 Date d'inscription vendredi 24 juillet 2009 Statut Membre Dernière intervention 26 août 2009 1
26 août 2009 à 18:44
Comment créer une page de connexion avec plusieurs niveaux d'accès, par exemple avec plusieurs utilisateurs:
Niveau 1 Administrateur(effectue toutes opérations sur la base)
Niveau 2 opérateur de saisie(enregistre les données sans les supprimer)
Niveau3 Visiteur(ne peut que consulter)
1

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

Posez votre question
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
20 avril 2007 à 11:54
Salut,
<form action="candidats\index.php" method="post" name="login" id="log2">

tout est là : il te faut définir un script de vérification dans ta table des données de l'utilisateur avant de le rediriger vers l'index, si les infos données son bonnes, vers la fenêtre de login le cas échéant.
en gros il faut que tu le réécrives de cette manière :
<form action="candidats\verification.php" method="post" name="login" id="log2">



et ton fichier verification.php en pseudo code vas ressembler à ça :

récupération du login et du mdp
vérification du log et du mdp dans la base de donnée
si c'est ok
-> aller sur la page index.php
sinon
-> retour sur la page de login
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
20 avril 2007 à 17:07
je te remercie je vais commencer par ça
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
23 avril 2007 à 16:17
bon alors j'ai réussi à faire la vérification du login et du mot de passe par rapport à la base de données. (même le cookie fonctionne)...

cependant, je voudrais récuperé le login en question pour pouvoir inscrire le nom sur ma page...


j'ai le code suivant sur ma page avant le code html :

<?php include 'connexion.php'?>
<?php
$user = isset($_POST['user']) ? $_POST['user'] : ''; 
$sqlrequest = mysql_query("select user from login where user LIKE ('%$user%');") or die (mysql_error()); 

?>



puis code dans ma page :
<?php while(list($user)=mysql_fetch_array($sqlrequest)){ ?>
                  <td height="109"> <p class="boitecandidats">Bienvenue dans votre 
                      espace (<?php  echo $user ; ?>).<br>



enfin le code après html :
<?php } mysql_close(); ?>


avec ce code je récupère bien le nom mais ça me créé un tableau avec TOUT les noms lol... j'ai l'impression que c'est le while(list qui ne va pas...

merci par avance pour vos réponses
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
24 avril 2007 à 17:23
je comprends ce que tu veux dire ma fonction avec 'user' et %user% n'est pas bonne... mais comment je dois faire alors ?
excuse je suis newbie en php et mysql...
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
16 mai 2007 à 09:46
je comprends pas trop... j'ai l'impression que le code que tu me donnes est le même que celui que j'ai sur ma page de vérification :
<?php
include "connexion.php";
//cryptage MD5 du mot de passe pour comparer avec celui dans la base de donnée
$mdp=md5($_POST['mdp']);
$sqlrequest="select * from login where user='".$_POST['user']."' and pwd='".$mdp."';";
$results= mysql_query($sqlrequest);
$nbr_rp=mysql_num_rows($results);
$reponse=mysql_fetch_array($results);
if($nbr_rp!=0)
{
	if($reponse['level']==1)
	{
		if(isset($_POST['cookie']))
		{
			setCookie("cookie_user",$_POST['user'].';'.$mdp,NULL,NULL,NULL,FALSE);
		}
		header("Location: bravo.php");
	}
	if($reponse['level']==2)
	{
		if(isset($_POST['cookie']))
		{
			setCookie("cookie_user",$_POST['user'].';'.$mdp,NULL,NULL,NULL,FALSE);
		}
		header("Location: candidats/index.php");
	}
	if($reponse['level']==3)
	{
		if(isset($_POST['cookie']))
		{
			setCookie("cookie_user",$_POST['user'].';'.$mdp,NULL,NULL,NULL,FALSE);
		}
		header("Location: entreprises/index.php");
	}
}
else
{
	header("Location: index.php");
}
?>


ça va pas devenir compliqué si je mets 2 fois le même code ?...

moi ce que je veux c'est pouvoir afficher le nom de l'utilisateur sur ma page finale (sa page de de profil par ex)... j'suis un peu perdue là je dois avouer...
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
16 mai 2007 à 11:35
je viens de m'aperçevoir que, que je sois connectée ou pas avec le login j'ai ma page qui affiche quand même l'ensemble de mes utilisateurs... donc il est clair que je ne comprends pas du tout ton code. Je suppose qu'il consiste à récupérer le login....
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
28 mai 2007 à 16:26
alors j'ai fait un fichier login à part pour m'y retrouver :
<html>
<head>
<title>login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javaScript" src="effacer.js">
</script>
<link href="includes/styleglobal.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="global_form_nav_espace">
<form action="candidats\index.php" method="post" name="login" onsubmit="return control();" >
<fieldset>
<legend class="global_invisible">Votre identification</legend>
<label for="global_form_nav_login"><input type="text" name="user" value="Code d'accès" class="text" onfocus="efface('connect','login','password1','Code d\'accès','******')" title="code d'accès" onmouseover="window.status='Code d\'accès'" onmousedown="window.status='Code d\'accès'" onkeydown="window.status='Code d\'accès'" />
<label for="global_form_nav_pass"><input type="password" name="mdp" value="******" onfocus="efface('connect','password1','login','******','Code d\'accès')" title="Mot de Passe" onmouseover="window.status='Mot de Passe'" onmousedown="window.status='Mot de Passe'" onkeydown="window.status='Mot de Passe'"  />
<INPUT TYPE=checkbox name="cookie" value="1">
<input type="submit" name="Submit" value="Ok"  id="global_form_nav_submit">
</fieldset>
</form>
</div>
  
</body>
</html>


et donc j'ai bien le nom de l'utilisateur sur ma page d'entrée de l'utilisateur sans avoir ce tableau avec tous les logins :

<?php while(list($user)=mysql_fetch_array($sql)){ ?>
                  <td height="109"> <p class="boitecandidats">Bienvenue dans votre 
                      espace (<?php  echo $user ; ?>).


seulement, si je navigue sur d'autres page et que je reviens sur ma page candidats, à ce moment-là j'ai de nouveau l'erreur, c'est-à-dire un tableau qui se répète avec tous les utilisateurs dedans...

En gros ça fonctionne sans ma page de vérification, donc pas bon lol
0
bbar Messages postés 436 Date d'inscription mercredi 27 septembre 2006 Statut Membre Dernière intervention 31 octobre 2008 140
21 juin 2007 à 21:13
Salut,
Désolé du retard de ma réponse (presque un mois, toutes mes confuses)
ta page candidat est-elle celle de login ? auquel cas, reviens-tu bien sur ta page de login à part ?
0
Riwalenn Messages postés 364 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 16 février 2015 101
22 juin 2007 à 10:46
lol j'ai pas vu que j'avais encore ce message.. en fait je m'étais pris la tête pour rien, y'avait trop de trucs dans mon formulaire.. en tout cas le problème est résolu ;)
0
danielcousin
4 mars 2008 à 14:57
Comment créer une page de connexion avec plusieurs niveaux d'accès, par exepmle avec plusieurs utilisateurs:
Niveau 1 Administrateur(effectue toutes opérations sur la base)
Niveau 2 opérateur de saisie(Ne peux enregistrer les données mais ne peut pas les supprimer)
Niveau3 Visiteur(ne peut que consulter)
0
Salut les mec , donc j'ai un petit bug !! pour mon site persO !! j'ai mi le script suivant sur mon site perso ( c'est un code d'indentificatiopn avec mots de passe ) mais le probleme c'est que je l'ai mis sur ma page d'aceuil mais on peut quand meme visister les autre sous page sans s'identifié !! blème NON ?? aider moi svp merci davance !!
0
oups j'ai oublier de mettre le script !! : <html>
<head>
<title>login</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javaScript" src="effacer.js">
</script>
<link href="includes/styleglobal.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="global_form_nav_espace">
<form action="candidats\index.php" method="post" name="login" onsubmit="return control();" >
<fieldset>
<legend class="global_invisible">Votre identification</legend>
<label for="global_form_nav_login"><input type="text" name="user" value="Code d'accès" class="text" onfocus="efface('connect','login','password1','Code d\'accès','******')" title="code d'accès" onmouseover="window.status='Code d\'accès'" onmousedown="window.status='Code d\'accès'" onkeydown="window.status='Code d\'accès'" />
<label for="global_form_nav_pass"><input type="password" name="mdp" value="******" onfocus="efface('connect','password1','login','******','Code d\'accès')" title="Mot de Passe" onmouseover="window.status='Mot de Passe'" onmousedown="window.status='Mot de Passe'" onkeydown="window.status='Mot de Passe'" />
<INPUT TYPE=checkbox name="cookie" value="1">
<input type="submit" name="Submit" value="Ok" id="global_form_nav_submit">
</fieldset>
</form>
</div>

</body>
</html>
0
Salut les mec , donc j'ai un petit bug !! pour mon site persO !! j'ai mi le script suivant sur mon site perso ( c'est un code d'indentificatiopn avec mots de passe ) mais le probleme c'est que je l'ai mis sur ma page d'aceuil mais on peut quand meme visister les autre sous page sans s'identifié !! blème NON ?? aider moi svp merci davance !!
0