8725 sujets

Développement web côté serveur, CMS

Bonjour tout le monde,
j’essaye de rediriger les utilisateurs après authentification aux pages en fonction de leur type utilisateur, mais ma redirection ne fonctionne pas,et voilà ce que je fais:

<?php if (isset($_POST['envoi'])) { 
    $adresse_courriel = trim($_POST['adresse_courriel']); 
    $mot_passe = trim($_POST['mot_passe']); 
    $type_utilisateur = trim($_POST['type_utilisateur']);
    if (sqlControlerUtilisateur($conn, $adresse_courriel, $mot_passe,$type_utilisateur) === 1) { 
        
        session_start(); 
         $_SESSION['identifiant_utilisateur'] = $adresse_courriel;
        if($type_utilisateur == 'admin'){
            header("Location: gestionProduits.php"); 
        } 
        elseif ($type_utilisateur == 'client'){
            
            header("Location: gestionCatalogueProduits.php"); 
        }
        
    } else { $erreur = "Identifiant ou mot de passe incorrect."; 
           } 
}?>
 <form id="identification" action="authentification.php" method="post">
                <label>Identifiant</label>
                <input type="text" name="adresse_courriel" value="" required>
                <label>Mot de passe</label>
                <input type="password" name="mot_passe" value="" required>
                <input type="submit" name="envoi" value="Envoyez">
            </form>

ma fonction sql:

function sqlControlerUtilisateur($conn, $adresse_courriel, $mot_passe,$type_utilisateur) {
$req = "SELECT * FROM utilisateurs
        WHERE adresse_courriel='$adresse_courriel' AND mot_passe = '$mot_passe' AND type_utilisateur ='$type_utilisateur'";
if ($result = mysqli_query($conn, $req)) {
    return mysqli_num_rows($result);
    } 
    else {
        errSQL($conn);
        exit;
    }
}

mon erreur : Notice: Undefined index: type_utilisateur
de l'aide SVP Smiley bawling
Modérateur
Bonjour,

Avant d'accéder aux super-globales, pensez à démarrer la session, sans quoi aucun accès aux données envoyées.

Session_start() c'est la clé qui ouvre les portes POST, GET et SESSION Smiley cligne
Hello
il ne faut RIEN avoir avec session_start(); et il faut la starter que si elle n'est pas déjà starter Smiley smile
Pas sûr de comprendre les discussions sur session_start
Pour autant que j'aie bien compris, on peut utiliser POST et GET sans ouvrir de session, par contre SESSION nécessite d'avoir ouvert la session au préalable, et on peut faire plusieurs fois faire session_start dans un programme, la première ouvre la session, les autres ne font rien

Tel que je vois le message d'erreur, ça doit vouloir dire que type_utilisateur n'est pas connu dans la base, je chercherais de ce côté là.
je voulais dire :
il ne faut RIEN mettre avant session_start(); il faut faire ton session start au début.

Sinon à part ça je comprend pas trop ton code.

Tu récupère le type utilise en POST ? c'est pas plutot le résultat de ta requête sql qui devrait te dire si l'utilisateur est oui ou non admin ?

session_start();
require_once("inc/connectDB.php"); 
require_once("inc/sql.php"); 
if (isset($_POST['envoi'])) { 
	
	$adresse_courriel = trim($_POST['adresse_courriel']); 
        $mot_passe = trim($_POST['mot_passe']); 
	$results = sqlControlerUtilisateur($conn, $adresse_courriel, $mot_passe);	
	if (count($results) > 0) {	
	
		
		$_SESSION['type_utilisateur'] = $results['type_utilisateur'];
		if ($results['type_utilisateur']=== "admin") {

			header('location: gestionProduits.php');		  
		} else {
			
			header('location: gestionCatalogueProduits.php');
		}
	} else {
		$erreur = " Mot de passe ou identifiant incorrect";
	}
 }


et là ca marche!!!
merci pour vos réponses
Meilleure solution