Résolu Script qui efface tout !

Solutions (13)
Tags :
  • Script
  • Programmation
Anonyme |
Bonjour,

Enfaite j'ai un problème :

Quand un utilisateur accède au site il n'a pas accès a des pages sans avoir payer.
Si il paye il accède à la plage qui exécute un script, mais le problème c'est qu'il peut accéder (rechargez) la page combien de fois il veut et le script s'exécute sans arrêt ! :cry: 

Même si je fait une session_destroy() il pourra toujours accéder à la page. Pour qu'il puisse plus y accéder il faudrait lui vider tout ses cookie :D 

Ou alors trouver une autre solution mais je vois pas laquelle car c'est embêtant car prenons un exemple que le script envoie (c'est juste un exemple de cas) 10€ à quelqu'un et que l'utilisateur recharge sans arrêt sa page sa lui envoie 10€*n(nbr de fois recharger), vous pouvez le constatez c'est pas top (pour moi :D  )

Merci
Contenus similaires
Meilleure solution
partage
|
cree une variable de session supplémentaire (ex $_session['verif'])

lorsque le traitement du script à été fait la premiere fois, tu incrémente de 1 cette variable, et tout en haut de ta page, tu verifie si la valeur de $_session['verif'] est supérieur à 1 ou non, si inférieur à 1 tu execute le code, sinon tu renvoie un message d'erreur, exemple flémard :
---------------------
session_start()
si $_session['verif'] < 1
//execution de ton code
// $_session['verif'] +1 afin de lui attribué la valeur "1" pour te certifier que le code c'est éxécuter une fois sans probleme

sinon affichage : vous avez recharger la page , (et tu peut inséré une direction automatique)
------------------

en gros, voila le principe
  • Commenter cette solution |
Score
0
òh
òi
Anonyme |
Bon c'est bon si vous avez pas d'autre solution c'est pas grave j'ai fait un petit script qui banni l'utilisateur dés qu'il recharge la page : rirediabolique : (avec prévention à l'avance)

Merci
  • Commenter cette réponse |
Score
0
òh
òi
Anonyme |
J'ai parler trop vite enfaite, ça ne marche pas :

  1. session_start();
  2. $login = $_SESSION["login"] ;
  3.  
  4.  
  5. if(!isset($_SESSION['verif'])) { $_SESSION['verif'] = TRUE; }
  6. if($_SESSION['verif']) {
  7. echo 'on insert les 100 points';
  8. $_SESSION['verif'] = FALSE;
  9.  
  10. try
  11. {
  12. $bdd = new PDO('mysql:host=localhost;dbname=data_base', 'root', '');
  13. }
  14. catch(Exception $e)
  15. {
  16. die('Erreur : '.$e->getMessage());
  17. }
  18. $rep2 = $bdd->query("UPDATE player_accounts SET points=points+100 WHERE username = '".$login."'" ) ;
  19.  
  20.  
  21. }
  22. else
  23. {
  24. header("Location :auth.php" );
  25. }


Quelle erreur j'ai fait ?

Le code en soit marche, l'utilisateur ne peut pas rechargez la page deux fois même si la redirection marche pas, mais il suffit qu'il se déconnecte et qu'il se reconnecte et va sur cette page que ça lui ajoute les points quand même !
  • Commenter cette réponse |
Score
0
òh
òi
|
Après une prise de tete de 15 min pour m'en souvenir : php respecte la casse, $_session ne fonctionne pas, il faut bien $_SESSION sur le bout de code que je t'ai fourni, ceci marche parfaitement (tester a l'instant meme :) 

  1. <?php
  2. session_start();
  3.  
  4. if(!$_SESSION['verif']) {
  5.  
  6. echo 'on insert les 100 points';
  7. $_SESSION['verif'] = TRUE;
  8.  
  9. } else {
  10.  
  11. echo 'redirection sur auth.php';
  12.  
  13. }
  14.  
  15. ?>
  • Commenter cette réponse |
Score
0
òh
òi
Anonyme |
  1. <?php
  2. session_start();
  3. $login = $_SESSION["login"] ;
  4.  
  5.  
  6. if(!isset($_session['verif'])) { $_session['verif'] = FALSE; }
  7. if(!$_session['verif']) {
  8. $_session['verif'] = TRUE;
  9. try
  10. {
  11. $bdd = new PDO('mysql:host=localhost;dbname=data_base', 'root', '');
  12. }
  13. catch(Exception $e)
  14. {
  15. die('Erreur : '.$e->getMessage());
  16. }
  17. $rep2 = $bdd->query("UPDATE player_accounts SET points=points+100 WHERE username = '".$login."'" ) ;
  18.  
  19.  
  20.  
  21.  
  22. }
  23. else
  24. {
  25. header("Location :auth.php" );
  26. }
  27.  
  28.  
  29.  
  30.  
  31.  
  32. if(!isset($_SESSION["login"]) || $_SESSION["login"] == "")
  33. {
  34. header("Location: auth.php") ;
  35. }//fin if
  36. else
  37. {
  38.  
  39. echo("Votre identifiant de session est ".session_id()."<br/>") ;
  40. echo("Bonjour ".$_SESSION["login"]." vous êtes maintenant connecté<br/>") ;
  41. echo("Pour vous déconnecter, cliquez <a href=\"logout.php\">ici</a><br/>") ;
  42. $login = $_SESSION["login"] ;
  43.  
  44. }//fin else
  45.  
  46. ?>
  47. <?php


ça ne marche pas, il recharge le code d'ajout +100 quand même ....
  • Commenter cette réponse |
Score
0
òh
òi
|
voila j'ai corriger tout mes post pour pas créer de confusion.
  • Commenter cette réponse |
Score
0
òh
òi
|
euh, je suis aussi rouillé ce soir, j'ai traduit "recharge 10*" de ton premier post par "recharge de téléphone", donc oublie ce que je dis à ce sujet, insere juste ton code que tu veux éxécuter.
  • Commenter cette réponse |
Score
0
òh
òi
Anonyme |
quand tu dis "ton code php pour recharger" hum dans quel sens ?

edit : non j'ai rien dis je crois que j'ai compris ^^'
  • Commenter cette réponse |
Score
0
òh
òi
|
  1. session_start();
  2. if(!isset($_session['verif'])) { $_session['verif'] = FALSE; }
  3. if(!$_session['verif']) {
  4. ton code php à éxécuter
  5. $_session['verif'] = TRUE;
  6. } else {
  7. header("Location :auth.php" );
  8. }


je suis un peut rouillé mais logiquement cela doit fonctionner comme ca.
  • Commenter cette réponse |
Score
0
òh
òi
|
  1. session_start();
  2.  
  3. if(!isset($_session['verif'])) { $_session['verif'] = 0; }
  4.  
  5. if($_session['verif'] < 1) { // tu peut aussi faire $_session['verif'] != 1 pour dire "différent que"
  6. ton code php à éxécuter
  7. $_session['verif'] = 1;
  8.  
  9. } else {
  10. // si la personne recharge via F5 ou backspace, "verif" aura déja la valeur de 1, et donc éxécutera cette condition, à savoir la redirection sur auth.php
  11. header("Location :auth.php" );
  12.  
  13. }


tu peut également remplacer les valeur 0 et 1 par FALSE et TRUE afin que cela soit plus propre.
  • Commenter cette réponse |
Score
0
òh
òi
Anonyme |
enfaite l'idée est bonne mais j'arrive pas à l'appliquer :

  1. $_SESSION['verif'] = 0;
  2. if ($_SESSION['verif'] >=1)
  3. {
  4. header("Location :auth.php");
  5. }
  6. else $_SESSION['verif'] = $_SESSION['verif'] +1;


car le problème c'est que à la base $_session['verif'] existe pas et donc de toute façon au début du code il remet la variable à 0
  • Commenter cette réponse |
Score
0
òh
òi
Anonyme |
Meilleure réponse sélectionnée par Exoticstormxx.
  • Commenter cette réponse |
Score
0
òh
òi
Anonyme |
Oh merci =) je vais tester ça au plus vite
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS