Hello à tous,
Je rencontre un problème qui me fait perdre la boule.
Donc j'ai un site en structure MVC, et je propose aux membres une landing page pour parrainer sur un site de cloud mining.
Chaque fois qu'un prospect ouvre la page d'un membre, le pseudo du membre est placé dans un cookie pendant 48h, pour éviter que ce prospect ouvre la page de quelqu'un d'autre une heure après.
Du coup chaque fois que j'ouvre la méthode landing de mon controleur index,
Je teste si le cookie existe, si il existe je remplace le parrain par celui qui existe dans le cookie,
Si il n'existe pas, je créé le cookie avec le parrain existant
//On récupère le login dans le GET
$ref = $this->_request->get('ref');
//Si le cookie existe, on remplace le parrain par celui contenu dans le cookie
if( isset( $_COOKIE['login'] ) ){
$ref = $_COOKIE['login'];
}
else {
// Sinon si le parrain n'est pas null (on ne créé un cookie que si il y a vraiment un parrain)
if( $ref != null ){
//on inscrit le parrain dans un cookie valable 24h
setcookie('login', $ref, time() + 48*3600 );
}
}
Jusque là tout fonctionne.
La racine de mon domaine, pointe vers une méthode indexAction() qui redirige vers la methode landingAction() qui contient le code avec le cookie.
public function indexAction(){
$this->landingAction();
}
public function landingAction(){
$model = new UserModel;
$landingmodel = new LandingModel;
$autorepmodel = new AutorepondeurModel;
//On récupère le login dans le GET
$ref = $this->_request->get('ref');
//Si le cookie existe, on remplace le parrain par celui contenu dans le cookie
if( isset( $_COOKIE['login'] ) ){
$ref = $_COOKIE['login'];
}
else {
// Sinon si le parrain n'est pas null (on ne créé un cookie que si il y a vraiment un parrain)
if( $ref != null ){
//on inscrit le parrain dans un cookie valable 24h
setcookie('login', $ref, time() + 48*3600 );
}
}
[... code inutile ici tronqué...]
}
Le problème, c'est que quand je passe par là, et bien le cookie n'existe pas.
Alors qu'il existe quand je rentre une URL qui va chercher la méthode landing.
Je précise que j'utilise l'URL rewriting.
Si vous voulez tester.
Voici la structure URL d'une landing page : www.invia-world.fr/landing/fr/RiderFx3 (donc ici ça enregistre le login du membre en cookie)
Si vous chargez la page d'un autre membre : www.invia-world.fr/landing/fr/Duper84 (ça charge toujours la page du 1er membre mis en cookie)
Hors si vous chargez la page : www.invia-world.fr -> Elle devrait afficher la page du membre RiderFx3 en cookie mais le cookie n'existe pas...
Voilà, donc soit je créé pas le cookie correctement, soit j'ai un soucis d'URL rewriting mais je vois pas pourquoi, les cookies étant des superglobales il devrait exister sur tout le domaine.
Sujet résolu,
En fait il fallait rajouter '/' à la fin du cookie pour spécifier qu'il existe sur le domaine entier ;)
setcookie('login', $ref, time() + 48*3600, '/' );