Résolu actualisation de session entre plusieurs domaine/Sous-domaine

Neerfix

Développeur Web
Premium
Inscription
15 Décembre 2013
Messages
224
Réactions
49
Points
9 528
Bonsoir à tous.
J'ai un petit problème d'ignorance.

J'ai un domaine et un sous domaine. Le sous domaine est du type et donc, lorsqu'un membre se connecte sur le domaine, il n'est pas connecté sur le sous-domaine. Et vise versa.
Lors d'un achat, le nombre de monnaie virtuelle s'actualise bien dans la session de la boutique mais pas sur celle du site. Celle-ci ne se fait que lors de la prochaine connexion.

Comment puis-je résoudre ce problème d'actualisation de session entre plusieurs domaine/Sous-domaine ?

Merci par avance de votre et désolé si je m'exprime mal, la fatigue se fait ressentir et je voulais poster le problème avant de partir me coucher.
 

Neerfix

Développeur Web
Premium
Inscription
15 Décembre 2013
Messages
224
Réactions
49
Points
9 528
Tu stockes pas les données du membre, tu lui donnes un token à chaque connexion, ce token est dans la base de donnée relié au membre, sur le domaine tu rediriges avant d'envoyer vers le sous-domaine, vers une page session.php?token=0515154154

0515154154 correspond au token du membre 25 par exemple donc tu inities la session avec les infos du membre, ensuite tu rediriges vers la page du sous-domaine

Ah bah oui évidemment, j'ai déjà le token des membres avec le remember_token (s'ils veulent resté connecté)
 

Neerfix

Développeur Web
Premium
Inscription
15 Décembre 2013
Messages
224
Réactions
49
Points
9 528
Ouais c'est clair, mais s'ils veulent pas resté connexion ils auront pas de token, si ?
Si, j'ai deux token, un qui définie le membre et un autre qui s'actualise à chaque fois qu'un membre se connecte en cochant "Remember me".
Je rencontre cependant un problème, je n'arrive pas récupérer le token x) #Débile
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 706
Réactions
8 493
Points
32 425
Si, j'ai deux token, un qui définie le membre et un autre qui s'actualise à chaque fois qu'un membre se connecte en cochant "Remember me".
Je rencontre cependant un problème, je n'arrive pas récupérer le token x) #Débile

Le token récupère le lors de la connexion, tu le fait passer en variable de session comme ça t'auras juste à faire header('Location:sous.domaine.fr/session.php?token='.$_SESSION['token']); :p
 

Neerfix

Développeur Web
Premium
Inscription
15 Décembre 2013
Messages
224
Réactions
49
Points
9 528
Le token récupère le lors de la connexion, tu le fait passer en variable de session comme ça t'auras juste à faire header('Location:sous.domaine.fr/session.php?token='.$_SESSION['token']); :p

Non mais c'est bon j'ai réussi, j'ai fait une erreur. Je me suis tromper dans l'appel du token, dans le nom du token x)
J'ai maintenant réussi à me rediriger ici sous.domaine.fr/session.php?token='.$_SESSION['token']);

Cependant, j'ai du faire une erreur dans la page, j'ai une erreur:

La page sous-domaine.domaine.fr ne fonctionne pas
Impossible de traiter cette demande via sous-domaine.domaine.fr à l'heure actuelle.

HTTP ERROR 500
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 706
Réactions
8 493
Points
32 425
Non mais c'est bon j'ai réussi, j'ai fait une erreur. Je me suis tromper dans l'appel du token, dans le nom du token x)
J'ai maintenant réussi à me rediriger ici sous.domaine.fr/session.php?token='.$_SESSION['token']);

Cependant, j'ai du faire une erreur dans la page, j'ai une erreur:

Normal sous-domaine.domaine.fr existe au moins ? ^^
 

Neerfix

Développeur Web
Premium
Inscription
15 Décembre 2013
Messages
224
Réactions
49
Points
9 528
Mdrr bah bravo :rofl: Tu as réussi du-coup ? ^^
Code:
<?php
require "/home/axenatcovz/db.php";

if(session_status() == PHP_SESSION_NONE){
    session_start();
}

require_once '/home/axenatcovz/functions.php';
reconnect_from_cookie();
$token = $_GET['token'];
$remember = $_GET['remember'];
$req = $pdo->prepare('SELECT * FROM cms_users WHERE token = '.$token.'');
    $user = $req->fetch();
    $_SESSION['auth'] = $user;
    if($remember=="yes"){
            $remember_token = str_random(250);
            $pdo->prepare('UPDATE cms_users SET remember_token = ? WHERE id = ?')->execute([$remember_token, $user->id]);
            setcookie('remember', $user->id . '==' . $remember_token . sha1($user->id . 'ratonlaveurs'), time() + 60 * 60 * 24 * 31);
    }

    $pdo->prepare('UPDATE cms_users SET last_online = ? WHERE id = ?')->execute([time(), $user->id]);
    var_dump($_SESSION);
?>

Bah j'ai mit ça dans le fichier session, mais je crois avoir fait une erreur. L'utilisateur n'est pas connecté et dans le var_dump on peut voir:
array(2) { ["flash"]=> array(1) { ["success"]=> string(34) "Vous êtes maintenant déconnecté" } ["auth"]=> bool(false) }
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 706
Réactions
8 493
Points
32 425
Dans le fichier session.php je suis perdu, je n'arrive pas à connecté le membre ... Je m'embrouille en fait :rofl:

Tiens :
PHP:
        if(!empty($_GET['token']))
        {
            $aInfo = $bdd->prepare("SELECT * FROM tableDesMembres WHERE token = ?");
            $aInfo->execute(array($_GET['token']));
            $rowcPseudo = $aInfo->rowCount();
            if($rowcPseudo == 1)
            {
                $info = $aInfo->fetch();
                $_SESSION['id'] = $info['id'];
                $_SESSION['pseudo'] = $info['pseudo'];
                $_SESSION['blabla'] = $info['blabla'];
            }
        }

:p
 
Cette réponse a aidé l'auteur de cette discussion !

Neerfix

Développeur Web
Premium
Inscription
15 Décembre 2013
Messages
224
Réactions
49
Points
9 528
Tiens :
PHP:
        if(!empty($_GET['token']))
        {
            $aInfo = $bdd->prepare("SELECT * FROM tableDesMembres WHERE token = ?");
            $aInfo->execute(array($_GET['token']));
            $rowcPseudo = $aInfo->rowCount();
            if($rowcPseudo == 1)
            {
                $info = $aInfo->fetch();
                $_SESSION['id'] = $info['id'];
                $_SESSION['pseudo'] = $info['pseudo'];
                $_SESSION['blabla'] = $info['blabla'];
            }
        }

:p

Merci bien mais ça ne marche toujours pas, je crois que la connexion d'un membre d'un domaine à un autre ne fonctionne pas.
 
Haut