|
Posté par lapras
Bonjour,
j'ai plusieurs questions pour le langage PHP : -Comment faire qu'une page soit uniquement accessible en include, c'est a dire que si dans fichier.php j'inclus fichier2.php alors le fichier "fichier2.php" ne peut pas etre executé si on entre : "http://monsite.com/fichier2.php" Donc que le fichier ne puisse etre exécuté que grace a mon include dans fichier.php (je sais, je peux faire ca avec des "if" mais je voulais savoir si une fonction existait) |
|
-Supprimer toutes les variables a la fin d'un script est il vraiment utile ? la fonction unset possede elle un attribut "all" (pour toutes les variables, sauf les sessions bien sur) |
| Dans la page qui include tu instancies une variable blabla, et dans la page inclue tu vérifie si la variable blabla est instanciée avec la bonne valeur |
|
Posté par lapras
J'ai utilisé une variable et j'ai fait un "if" tout bête ;)
Dommage c'est pas tres propre mais bon... |
|
Posté par eusebius
Pourquoi est-ce que tu ne trouves pas ça propre ? C'est la manière standard pour éviter les inclusions multiples en langage C, par exemple. C'est paramétrable à l'envi, et si tu ne programmes pas comme un cochon (et si ton PHP est bien configuré) tu peux garantir que la variable ne vient pas de l'utilisateur.
|
|
Posté par eusebius
Pourquoi est-ce que tu ne trouves pas ça propre ? C'est la manière standard pour éviter les inclusions multiples en langage C, par exemple. C'est paramétrable à l'envi, et si tu ne programmes pas comme un cochon (et si ton PHP est bien configuré) tu peux garantir que la variable ne vient pas de l'utilisateur.
|
|
Posté par anima
si le besoin se fait sentir de sécuriser l'inclusion (ce qui n'arrive jamais, vu que je sécurise toujours mes inclusions a l'avance: choix délimité)
|
|
Posté par anima
j'utilise un define()
|
|
Posté par Patastronch
Tu dis que tu peux t'assurer que la variable ne viens pas d'un utilisateur ? et moi je dis que dans le 3/4 des sites amateur les injections de code (et donc de variables instanciées) se font tres facilement uniquement parceque les gens ne comprennent pas l'utilité de la fonction addslash (et donc ne l'utilisent pas).
|
|
Posté par Patastronch
Enfin bon, de toute facon quand on veut faire un truc sécurisé on fait pas du php, le php c'est bien trop chiant a configurer !
|
|
Posté par lapras
J'ai une autre question :
comment faire pour qu'u utilisateur ne se logue pas sur deux ordinateurs différents simultanément et sur le meme compte ? On peut toujours comparer les IP dans mysql mais c'est trop lourd comme méthode, en avez vous une autre ? |
|
Posté par eusebius
Oué, faites du prolog !
![]() |
|
Posté par eusebius
C'est ce que je voulais dire (plus ou moins) par "si tu ne programmes pas comme un cochon" : isolation et validation de toutes les entrées.
|
|
Posté par Patastronch
J'ai jamais essayé de faire un site en prolog mais ca doit pas etre de la tarte :p
|
|
Posté par lapras
Oui j'utilise les sessions.
Mais je ne vois pas trop ce que tu veux dire. Comment puis je savoir si une variable de session contenant le meme id est crée ? |
|
Posté par lapras
Je comprend mieux, mais ca revient a faire une requete par clique c'est lourd...
En fait voila mon probleme : je fais une page php, chaque joueur a un unique id et a de l'argent (virtuel). Il peut par exemple acheter un article dans un magasin (virtuellement bien sur), donc je regarde si la session['argent'] est >= au prix de l'article, je fait l'achat donc je modifie sa session['argent'] et son argent dans la bdd. Supposons que le joueur a dépensé TOUT son argent dans cet article , il a donc $0 Imaginons que je demande a un ami de se connecter en meme temps que moi sur mon compte sur un ordi différent. Alors sur l'ordinateur B (celui de l'ami), la session['argent'] est égale a celle a la connection donc si il va sur la page du magasin, il a une session['argent'] suffisante pour acheter l'article (meme si dans la BDD argent=0) donc du coup il va acheter l'article et il va avoir de l'argent dans les négatifs On me dira : je peux toujours vérifier si il a assez d'argent en faisant une requete a Mysql, mais c'est une requete de plus, et je souhaite économiser les requetes. Merci d'avance |
|
Posté par lapras
Mais alors ou les stocker ?
de plus j'ai fait attention aux injections de codes, en mettant des htmlspecialchars et en faisant attention pour tous les formulaires. De toute facon session['argent'] ne me sert que pour afficher son argent mais la bdd est bien modifiée en faisant update joueur set argent=argent - $prix_achat where id=".$_SESSION['id']." |
|
Posté par lapras
htmlspecialchars ne suffie pas pour eviter les injections ?
|
-