• User Attivo

    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 target

    il 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]


  • ModSenior

    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.


  • User Attivo

    @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?.


  • ModSenior

    Appunto per questo dopo devi cercarla in $_SESSION['referrer'] e non in $referrer.


  • User Attivo

    @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.


  • User

    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]


  • User Attivo

    [...]

    Adesso sembra funzionare


  • User Attivo

    @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.


  • User Attivo

    [...]

    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.