Empêcher l'envoi d'un form si l'utilisateur n'est pas connecté

Ce sujet est résolu
45563
,

Bonjour tout le monde,
j’ai un formulaire que j’envoie à une deuxième page, mais avant de le faire j’aimerai checker si l’utilisateur est connecté ou pas, s’il est connecté c’est bon, la redirection se fait, sinon je l’envoie à la page d’authentification, et c’est là ou ca bloque :'( X/ ca me redirige vers la page (test.php) même si l utilisateur n est pas authentifié de l’aide svp svp svp!!

traitement:

$adresse_courriel = $_SESSION["adresse_courriel"];
$result = sqlUtilisateur($conn,$adresse_courriel);
var_dump($result);
if(isset($_POST['tri'])){
    if(isset($_SESSION['adresse_courriel']) && $result['adresse_courriel']!='') {
            header("LOCATION:test.php");
        exit;
    } else {
            header("LOCATION:authentification.php");
    }

}

formulaire:

<form action="test.php" method="POST" id="tri">
        <?php if (count($liste) > 0) : ?>
        <table>
            <tr>
                <th>Produit</th>
                <th>Description</th>
                <th>Prix</th>
                 <th>Marque</th>
                 <th>categorie</th>
                 <th>Commander</th>
            </tr>
            <?php foreach ($liste as $row) : ?> 
            <tr>
                <td><?php echo $row['nom_produit'] ?></td>
                <td><?php echo $row['description_produit'] ?></td>
                <td><?php echo $row['prix_produit'] ?></td>
                <td><?php echo $row['nom_marque'] ?></td>
                <td><?php echo $row['nom_categorie_produit'] ?></td>
            <td> <input type="checkbox" name="checkbox[]"value="<?= $row['id_produit'] ?>"/></td> 
            </tr>
            <?php endforeach; ?>
        </table> 
        <?php else : ?>
        <p>Aucun produit trouvé trouvé.</p>
        <?php endif; ?>
       <input type="submit" name="tri" value="Commander">
        </form>

requete sql:

function sqlUtilisateur($conn, $adresse_courriel) {
$req = "SELECT * FROM utilisateurs WHERE adresse_courriel=?";   
 $stmt = mysqli_prepare($conn, $req);
    mysqli_stmt_bind_param($stmt, "s", $adresse_courriel);
    if (mysqli_stmt_execute($stmt)) {
        $result = mysqli_stmt_get_result($stmt);
        $nbResult = mysqli_num_rows($result);
    $row = array();
        if ($nbResult) {
            mysqli_data_seek($result, 0);
            $row = mysqli_fetch_array($result, MYSQLI_ASSOC);       
        }
        mysqli_free_result($result);
        return $row;
    } else {
        errSQL($conn);
        exit;
    }
}

4 Réponse

45563
,
if(!(isset($_SESSION['adresse_courriel'])))
        {
            echo "veuillez vous connectez avant de passez une commande"; ?>
             <a href="authentification.php">s'authentifier'</a>
                <?php exit; ?>

        <?php 
        } ?>

fallait que je mette ce petit code dans la page test.php, pas dans la page principale.

Default
,

ce que j'aurais fais si j'etais toi une variable $_SESSION['authentifier']=true;
serait necessaire
par la suite tester cette variable
if

if(!$_SESSION['authentifier'] || !isset($_SESSION[authentifier])
{
echo 'erreur';
}
else
{
echo 'Bienvenue';
}
45563
,

merci pour ta réponse,
au fait j'ai deux formulaire, un pour le select(tri), et l'autre le tableau(trier) du coup j'ai changé ma condition et j'ai mit ca avec le code que tu as suggéré, mais ca ne marche toujours, il va toujours sur la page test.php, même avec les exit;

if((isset($_POST['tri']))&& (isset($_POST['trier']))) {


    $_SESSION['authentifier']=true;

        if((!$_SESSION['authentifier']) || !isset($_SESSION['authentifier'])){
                echo 'erreur';
                exit;
}
           else{
               echo 'Bienvenue';
               exit;
}

}
Default
,

là je vois que tu as coché sujet