[RESOLU] Visite unique de page

Eléphanteau du PHP | 25 Messages

15 juil. 2016, 17:09

Bonjour,
sur mon site, j'ai une page en php qui permet l'achat d'objet. Une fois que l'utilisateur à effectué son achat, un message de confirmation s'affiche et il est invité à se rediriger sur une autre page.
Seulement voilà, il y a un soucis! Si cet utilisateur clique sur le bouton précédent après avoir été redirigé, il regagne la page d'achat. Son argent ne lui est pas débité une seconde fois mais de mon côté il est indiqué qu'il a acheté 2 fois l'article (ce qui est très problématique car il n'aura payé le montant que d'une seul article!).

Je voudrai donc savoir comment faire pour que cette page ne puisse pas être revisité une seconde fois.
J'ai essayé de rajouté une variable qui, une fois la page visitée, prendrai la valeur 1. La page serai donc visitable seulement si la variable est différente de 1. Mais ça ne fonctionne pas, j'ai du me rater quelque part.
<?php

session_start();

if ($effectué != 1) {
//MA PAGE
    if ($points >= $prix) {
        $effectué = 1;
        $erreur = "Votre achat a bien été effectué.";
        $points = $points - $prix;
//RESTE DE MA PAGE
}
}
?>


La page sur laquelle l'utilisateur est redirigé:
<?php
session_start();
?>

//PAGE EN HTML

Mammouth du PHP | 2703 Messages

15 juil. 2016, 18:00

session_start() suppose qu'il sera fait usage des sessions ensuite, une manière de conserver une info d'une page à l'autre, or il n'y a pas d'utilisation des sessions dans le reste du code.

Eléphanteau du PHP | 25 Messages

17 juil. 2016, 21:20

Tu veux dire que pour conserver les variables il ne suffi pas d'un session_start() ? Il faut en plus de cela les actualiser?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

18 juil. 2016, 17:33

Bonjour,

session_start() a uniquement pour effet de démarrer le moteur de session et te permettre d'utiliser le tableau $_SESSION d'une page à l'autre. Mais si tu ne consignes rien dans ce tableau, il ne sera pas non plus présent dans la page suivante :)

Remplace ta variable $effectué par $_SESSION['effectue'] (et évite les accents dans les noms de variables ou de fonctions), et ça devrait fonctionner :)

Pense également à effacer ou modifier la variable de session si l'utilisateur doit pouvoir revenir sur la page pour un autre achat ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphanteau du PHP | 25 Messages

19 juil. 2016, 14:26

Merci beaucoup pour votre aide, ça marche désormais! :)