Sessions et multi entrées

Eléphant du PHP | 109 Messages

26 juil. 2009, 12:12

Bonjour

J'ai un site avec une partie administration du site avec mot de passe et login
j'utilise le code suivant pour avoir acces a l'admin

Code : Tout sélectionner

<?php // Definition des constantes et variables define('LOGIN','login'); define('PASSWORD','password'); $errorMessage = ''; // Test de l'envoi du formulaire if($_POST) { // Les identifiants sont transmis ? if(!empty($_POST['login']) && !empty($_POST['password'])) { // Sont-ils les mêmes que les constantes ? if($_POST['login'] !== LOGIN) { $errorMessage = 'Mauvais login !'; } elseif($_POST['password'] !== PASSWORD) { $errorMessage = 'Mauvais mot de passe !'; } else { // On ouvre la session session_start(); // On enregistre le login en session $_SESSION['login'] = LOGIN; // On redirige vers le fichier admin.php header('Location: index.php'); exit(); } } else { $errorMessage = 'Veuillez inscrire vos identifiants svp !'; } } ?>
ma question est la suivante
y a t'il un moyen de mettre différents login et mot de passe, style on va chercher dans une base et en fonction de ceux ci renvoyer la personne sur une page precise???
j'aurais besoin d'un petit indice
j'ai bien une idée mais c'est un peu lourd : c'est a dire mettre en fonction du login dans la table le nom de la page sur laquelle on renvois et
mettre le header en fonction
header('Location: $page');
mais il doit ya voir d'autres methodes, je suppose
merci
Nadege

ViPHP
ViPHP | 2291 Messages

26 juil. 2009, 12:25

Ou alors utiliser des swicth().
:idea: créer des grades/rangs/ou autre et suivant celui-ci le rediriger vers telle ou telle page
ImageCe que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.

Eléphant du PHP | 199 Messages

26 juil. 2009, 13:00

Si j'ai bien compris ce que tu voulais dire.
Tu veux chercher un login et mot de passe pour avoir accès à une page.

Il faut utiliser des variables sessions, une connexion à une base de donnée.

Hier j'ai bossé sur un script de connexion voila à quoi ca correspond:

<?php
			session_start();
			$c=mysql_connect('localhost','root','');
			mysql_select_db('pari',$c);


			//permet de charger les sripts des classes 

			function __autoload($class_name) {
			require_once $class_name.'.php';
			}
			
			if ($_POST['login']!='' && $_POST['pass']!='')
				{
					//classe utilisateur ou sont définis les méthodes qui vérifient si on est connectés ou pas
					$connexion=new Utilisateurs ('','',$_POST['login'],$_POST['pass'],'');
					$connexion->verif($_POST['login'],$_POST['pass']);
					
				}
		?>
	

Voici ma méthode ou on fait la vérification.
public function verif($pseudo, $mdp)
{
$req="SELECT * FROM Utilisateurs WHERE pseudo='$pseudo' AND password='$mdp'";
$query=mysql_query($req) or die (mysql_error());
$result=mysql_num_rows($query);



	if ($result==1)
		{
			$_SESSION["login"]=$pseudo;
			header('Location:Accueil.php');
			
		}
	else{
			//header('Location:index.php');
			echo "mauvais mot de passe/ mauvais login <br/>";
			echo "<a href='index.php'>Retour a la page connexion</a>";
		}

}
J'espère avoir répondu à ta question.

Voici la partie

Eléphant du PHP | 109 Messages

26 juil. 2009, 15:05

c'est gentil mais j'ai un soucis, les classes je maitrise pas

en fait ce qu'il me faudrait c'est qqchose de bien plus simple
a la place de definir les constantes LOGIN et PASSWORD des le depart il faudrait que je puisse inserer au lieu d'un logi 2 login differents que j'ai des le depart
en fonction de ces logins on redirigie sur une page precise mais je ne vois pas comment faire
Merci
Nadege

Eléphant du PHP | 199 Messages

26 juil. 2009, 20:55

Je viens de faire un script qui pourrait t'aider.
Alors il comprend:
-une connexion à une base de donnée déja définie (ou on vérifie si le login et le mdp existe).
-un formulaire pour écrire le mdp et le pseudo.
-des redirections en fonctions de ce qu'on cherche.

Attention il faut mettre les headers ou faire appel aux headers avant du html.

Voici mon petit script:

<?php
//parti php
	//ouverture de la session
	session_start();
	//connexion à la base de donnee
	$c=mysql_connect('localhost','root','');
	//connexion à la base de donnée pari
	mysql_select_db('pari',$c);

	//creation d'une fonction pour se loger 
	
	function login($login,$mdp)
		{
			//requête sql
			$req="SELECT * FROM Utilisateurs WHERE pseudo='$login' AND password='$mdp'";
			// on dit à php que c'est une requête sql et de l'interprêt comme telle
			$query=mysql_query($req) or die (mysql_error());
			//on compte le nom de ligne du resultat si le login et le mdp correspond alors il y aura une ligne sélectionné sinon il y en aura 0
			$result=mysql_num_rows($query);


//si la requête retourne une ligne alors
	if ($result==1)
		{
			//on crée une variable de session login
			$_SESSION["login"]=$login;
			//on redirige le tout vers une page spécifié avec la fonction header il faut la mettre avant du html sinon ca crée une erreur
			header('Location:Accueil.php');// la on redirige vers Accueil.php
			
		}
	else{
		//si ca marche pas on retourne vers cette page
			header('Location:aide.php');
		}
		
		}
		
			//condition pour qu'on appel la fonction seulement quand les input sont remplis
			if ($_POST['pseudo']!='' && $_POST['mdp']!='')
				{
				//echo $_POST['pseudo'].'|'.$_POST['mdp'];
					login($_POST['pseudo'],$_POST['mdp']);
				}
	
?>

<html>
<!-- mise en place du formulaire je ne mets pas les balises head et le doctypes je fais un script de base-->


	<body>	
		<form id="aide" method="POST" action="aide.php">
			Pseudo <input type="text" name="pseudo"/><br/>
			Mot de passe<input type="password" name="mdp"/><br/>
			<input type="submit" value="connecter"/>
		
		</form>
	
	</body>

</html>
Par contre je conseille d'apprendre l'objet c'est utile propre et organisé.
J'espère que j'ai répondu à la question

Eléphant du PHP | 109 Messages

27 juil. 2009, 09:18

Merci beaucoup c'est parfaitement ce que je voulais
je vais essayer de me mettre a l'objet mais ca va etre chaud

bonne journée