Page 1 sur 1

PHP login

Posté : 16 nov. 2014, 03:23
par gemi
Bonjour,

Je suis dans la creation d un nouveau site internet de jeu, et je souhaiterais faire que chaque visiteur doivent passer par la page HOME pour pouvoir acceder au lien.
je m'explique :

j'ai le site

http://jeuxonline.com

je met dans le menu un lien pour la registration soit en iframe ou en nouvelle fenetre...

ca donne http://jeuxonline.com/registration/register.php

par contre si je clique directement sur ce dernier je peux acceder directement a la souscription sans passer par la case "depart"

generalement jutilise liframe qui tend vers ip-serveur/register.php
Or avec liframe jutilise un acces securisé que depuis le site on puisse y acceder ! mais qi je cliques encore une fois sur ce dernier jaccede aux ressources sans etres passé par le site ! ce que je ne souhaite pas...

on ma dit de faire un include sur chaque page, dun processus de validation de session.
  • a inserer

    Code : Tout sélectionner

    <? include('validateSession.php'); ?>
    code de la page php

    Code : Tout sélectionner

    <? // enable cookies session session_start(); // check a flag (a dummy or usefull one) if (!isset($_SESSION['isValid'])){ header("Location: index.php"); exit(); } // process required steps, if any, when a valid session is opened // ... ?>
    sur la Home page je devrais mettre

    Code : Tout sélectionner

    <? // enable cookies session session_start(); // record valid session $_SESSION['isValid'] = true; // define page content // ... ?>
Mais honnêtement, je nai pas la connaissance necessaire pour faire ce genre de script si une Ame charitable pourrait meclairait et maider a etablir ce php.

Merci beaucoup

Re: PHP login

Posté : 16 nov. 2014, 22:36
par Nestecha
Bah...oui ? C'est tout ! Ton script est bon là :)

Re: PHP login

Posté : 17 nov. 2014, 08:50
par gemi
ouin mais dans ce cas je dois introduire le code

Code : Tout sélectionner

<? // enable cookies session session_start(); // check a flag (a dummy or usefull one) if (!isset($_SESSION['isValid'])){ header("Location: index.php"); exit(); } //process required steps, if any, when a valid session is opened <--------------[b]Ici qu est ce que je dois ajouter? je ne vois pas ce qu il faut mettre a la suite car apparemment il y a des etapes[/b] // ... ?>
Sur toutes les pages ? puisque Home page va avoir le code

Code : Tout sélectionner

<? // enable cookies session session_start(); // record valid session $_SESSION['isValid'] = true; // define page content // <-------------[b]ici meme chose Je dois mettre le reste de ma page genre les article etc ?[/b] // ... ?>
Merci :)

Re: PHP login

Posté : 17 nov. 2014, 16:16
par Nestecha
Oui sur toutes sauf sur Home, tu fais un include de la page plutôt que de copier coller tout le code !

Re: PHP login

Posté : 17 nov. 2014, 17:37
par gemi
Merci bien je vais tester ca !

aussi concernant
/process required steps, if any, when a valid session is opened <--- je dois en faire quoi ce ca ? car au final il dit que ca requiert dautres etapes ...

Merci encore !

Re: PHP login

Posté : 17 nov. 2014, 18:07
par Nestecha
Bah là tu mets ton code Home dans l'idée.

Vu que tu utilises ce bout de code qui vérifie le $_SESSION sur toutes les pages t'as pas besoin d'ajouter du code après, c'est ce que tu fais déjà quand tu l'inclus dans les pages.

Re: PHP login

Posté : 17 nov. 2014, 19:07
par gemi
vais voir ce que ca donne te tiendrai au courant puisque tu mas conseillé :) Merci !

Re: PHP login

Posté : 18 nov. 2014, 01:37
par gemi
Donc ca fonctionne nikel :) ca redirect en fermant la session donc en fermant le browser.

un autre point concernant les cookies est ce que c est possible de mettre une limitation de session ? genre session expirée ?
apres autant de temps d'inactivité retour a la case depart. via mon php validatesession.php

car en fait il y a deux choses sur mon site que je veux implanter.

lorsque le joueur sera inscrit via le register.php et que plutard il veuille suivre une actualité de jeu qu il se log via un Login php avec son log de jeu.
et
si tu es visiteur qu on te donne un lien de jeu de register etc que tu passes par la case depart donc la home page

Donc lorsque tu arriveras a lactualité JEU -> redirect Login -> avec session expiration
et si tu arrives sur une autre page sans passer par la page HOME que tu y sois reconduis.
je crois quavec des else on peut gerer ca non ?

tu as un contact ou on peut te trouver plus facilement ?

Re: PHP login

Posté : 18 nov. 2014, 02:21
par Nestecha
Oui, ajoute .fr à mon pseudo, tu trouveras tous les moyens de me contacter.

C'est tout à fait possible, cependant les solutions natives ne sont pas très performantes, et assez gourmandes en mémoire.

Donc la meilleure façon c'est de le faire soi même. C'est assez simple.

En gros dans ton code actuel tu écris "$_SESSION['isValid'] = true;", juste en dessous il te suffira d'écrire "$_SESSION['sessionTimer'] = time();"

Ainsi, cette variable sera égale à un timestamp qui correspond à la date actuelle au format UNIX. Donc elle ne changera pas. Cependant, time() lui, change à chaque seconde. Donc il te suffira de vérifier la différence entre les deux variables (sessionTimer et time()), et si elle est supérieure au nombre de secondes que tu veux accorder avant que la session se détruise, alors elle se détruira et l'utilisateur devra se relogger.

Pour se faire, dans ta page de vérification que tu inclues partout, au dessus du premier if, ajoute :
if (isset($_SESSION['sessionTimer']) && (time() - $_SESSION['sessionTimer'] > 1800)) { // si on veut que la session dure 30 minutes maximum
    session_unset();     // on supprime la variable $_SESSION utilisée pendant qu'on visite le site
    session_destroy();   // on détruit la session stockée
}
Attention ce code est simple pour que tu comprennes l'idée, mais il fera que la session expirera quoi qu'il arrive après 30min. Même si l'utilisateur est actif. Il faudra donc un peu modifier le code, mais comprends déjà ça.