- Home
- Categorie
- Coding e Sistemistica
- PHP
- Landing page, gestione sessione e cattura del referrer
-
Landing page, gestione sessione e cattura del referrer
Ho un problema con la gestioni di sessioni e referrer, ovvero:
sito A = landing page
sito B = sito targetil sito A manda un link al sito B (es: sitoB.it/calzature/), il sito B rileva il referrer, ovvero sitoA.it lo memorizza e fa apparire solo se si tratta del referrer sitoA.it un coupon sconto.
problema:
il sito B fa tutto correttamente solo se l'utente proviene dal sito A senza essere mai passato prima dal sito B, invece se per caso l'utente visita per primo il sito B (sito bersaglio) e poi va su quello A (landing page) per poi tornare sul sito B il referrer non viene rilevato correttamente e lo sconto non appare, come risolvere?.
ecco il codice che viene inserite in tutte le pagine nel header del sito B:
[php]
session_start();
if(!isset($_SESSION['referrer'])){
//get the referrer
if ($_SERVER['HTTP_REFERER']){
$referrer = $_SERVER['HTTP_REFERER'];
}else{
$referrer = "unknown";
}
//save it in a session
$_SESSION['referrer'] = $referrer; // store session data
}
[/php]e questo è il codice (sempre nel sito B) per far apparire lo sconto:
[php]
session_start();
if ($referrer === "sitoA.it") :
// fai apparire lo sconto
endif;[/php]
-
Ciao sitoqui,
per far apparire lo sconto non dovresti sempre usare la variabile di sessione?
Visto che $referrer ce l'hai solo in mancanza di quella variabile.
-
@Thedarkita said:
Ciao sitoqui,
per far apparire lo sconto non dovresti sempre usare la variabile di sessione?
Visto che $referrer ce l'hai solo in mancanza di quella variabile.non capisco il referrer non viene già memorizzato in [php]$_SESSION['referrer'] = $referrer; [/php]comunque ripeto lo sconto appare sempre se il visitatore è passato sempre prima nel sito A, ma se mi passa prima nel sito B e poi va su quello A per tornare con il link verso B non me lo vede, mi fai un esempio?.
-
Appunto per questo dopo devi cercarla in $_SESSION['referrer'] e non in $referrer.
-
@Thedarkita said:
Appunto per questo dopo devi cercarla in $_SESSION['referrer'] e non in $referrer.
scusa mi sono sbagliato (mi ero soffermato sul primo script per distrazione ) io in effetti la cerco proprio così, ovvero [php]$_SESSION['referrer'] === "sitoA.it"[/php] ma non funziona lo stesso, uso wordpress come piattaforma il primo script lo metto in header.php in alto prima di tutto il resto del codice presente nel tema, il secondo ovviamente lo inserisco in single.php in quanto il codice sconto deve apparire solo nel post singolo.
-
Togliendo il primo if cosa provoca?
[PHP]
session_start();
//get the referrer
if ($_SERVER['HTTP_REFERER']){
$referrer = $_SERVER['HTTP_REFERER'];
}else{
$referrer = "unknown";
}
//save it in a session
$_SESSION['referrer'] = $referrer; // store session data
[/PHP]
-
[...]
Adesso sembra funzionare
-
@sitoqui said:
Adesso sembra funzionare
Avevo esultato troppo presto, il problema è che adesso appare si il codice sconto anche se l'utente e già passato precedentemente sul sito bersaglio ma il codice sconto scompare appena l'utente si mette a navigare all'interno del sito e poi ritorna sulla pagina dello sconto, invece lo sconto deve restare sempre finché non abbandona il sito o non vi ritorna per almeno un giorno.
-
[...]
Risolto il problema, semplicemente faccio così, distruggo la sessione [php]session_destroy();[/php] a meno che il referrer non corrisponda a [php]$_SESSION['referrer'] === "sitoA.it/" && $permalink_sia_quello_della_pagina_bersaglio[/php]prima la sessione rimaneva aperta e registrata in un coockie evidentemente.