Signaler

[php] session utilisateur sur un site [Résolu/Fermé]

Posez votre question Riwalenn 364Messages postés jeudi 25 août 2005Date d'inscription 16 février 2015 Dernière intervention - Dernière réponse le 26 août 2009 à 18:44 par iutfv.ba2men
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.
Utile
+4
plus moins
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
Cette réponse vous a-t-elle aidé ?  
Utile
+2
plus moins
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ù.@+
Utile
+2
plus moins
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
Utile
+1
plus moins
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)
Utile
+0
plus moins
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
Utile
+0
plus moins
je te remercie je vais commencer par ça
Utile
+0
plus moins
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
Utile
+0
plus moins
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...
Utile
+0
plus moins
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...
Riwalenn 364Messages postés jeudi 25 août 2005Date d'inscription 16 février 2015 Dernière intervention - 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....
Utile
+0
plus moins
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
Utile
+0
plus moins
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 ?
Utile
+0
plus moins
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 ;)
Utile
+0
plus moins
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)
Utile
+0
plus moins
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 !!
Utile
+0
plus moins
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>
Utile
+0
plus moins
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 !!

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !