• User

    Pagina appena lasciata

    Come potrei memorizzare la pagina appena lasciata del sito?
    Ho una var $pag=$_GET['p']; che assegno dal link di un menu per caricare la pagina in cui vado.

    Nel modulo di contatti volevo portarmi dietro la pagina da cui sono arrivato, così da saperne la provenienza...

    Come potrei fare?

    Grazie


  • User Attivo

    Ciao,

    usa la variabile $_SERVER['HTTP_REFERER']


  • User

    @flaviors200 said:

    Ciao,
    usa la variabile $_SERVER['HTTP_REFERER']

    Sto provando questo codice con 2 file File1.php col Form e File2.php che elabora il form precedente.

    [PHP]File1.php
    <form action="File2.php" method="post">
    <label>Nome</label><span>*</span>
    <input type="text" value="" name="nome">

        <input type="hidden" value"<?php echo $_SERVER['HTTP_REFERER']; ?>" name="DaDoveProvengo"></div>
    
        <input type="submit" value="Invia" name="">
    

    </form>

    File2.php
    $daqualepag = $_POST['DaDoveProvengo']; // Da quale pagina provengo?
    echo $daqualepag;[/PHP]

    Se arrivo da www.miosito.com/ciao.html vedo nel codice (Visualizza Sorgente del browser) di File1.php il giusto indirizzo...
    [PHP]<input type="hidden" value"http://www.miosito.com/ciao.html" name="DaDoveProvengo">[/PHP]

    MA se Invio il modulo al File2.php questo NON visualizza l'indirizzo... mi da' "bianco" senza errore... non scrive nulla...

    Cosa mi sfugge?


  • User Attivo

    Ciao,

    non ti da nulla perché visualizzi direttamente il file File1.php senza esserci arrivato da un'altra pagina (referral).

    O metti nel campo hidden direttamente il nome della pagina corrente con $_SERVER['PHP_SELF'] (nel tuo caso sarà File1.php) oppure ricavi il referral in File2.php tramite $_SERVER['HTTP_REFERER']

    Dato che il referer a volte non viene settato (tipo quando visualizzi un link diretto) fai un controllo con la funzione isset() per vedere se esiste.


  • User

    @flaviors200 said:

    Ciao,
    non ti da nulla perché visualizzi direttamente il file File1.php senza esserci arrivato da un'altra pagina (referral).
    O metti nel campo hidden direttamente il nome della pagina corrente con $_SERVER['PHP_SELF'] (nel tuo caso sarà File1.php) oppure ricavi il referral in File2.php tramite $_SERVER['HTTP_REFERER']
    Dato che il referer a volte non viene settato (tipo quando visualizzi un link diretto) fai un controllo con la funzione isset() per vedere se esiste.

    Mah... forse mi sfugge ancora qualcosa...

    Io arrivo sicuramente da qualche pagina (come dicevo nell'esempio "ciao.html"). E nel sorgente del browser vedo il valore del campo hidden compilato nel modo corretto.
    MA premendo Invio il file successivo (File2.php) non vede nulla. O meglio, con isset() vede che c'è ma la vede vuota.

    [PHP]
    Nel File2.php

    if(isset($_POST['DaDoveProvengo'])){ echo "La VAR c'è." . $_POST['DaDoveProvengo'];} else { echo "Mi spiace";}[/PHP]
    Mi restituise [HTML]La VAR c'è.[/HTML] e basta... senza scrivere il valore (cioè l'indirizzo "miosito.com/ciao.html)


  • User Attivo

    Scusa la tua esigenza è quella di sapere da quale pagina arrivano coloro che ti contattano tramite il modulo, esatto?

    Nella pagina del modulo metti il codice per ricavarti il referer

    $referer = $_SERVER['HTTP_REFERER'] ?? 'sconosciuto';

    questo codice riempie la variabile con il referer se esiste altrimenti con la stringa sconosciuto. Funziona solo con PHP da 7 in sù poiché fa uso dell'operatore null coalesce ??

    Nel modulo metti un campo hidden il cui valore è la variabile $referer, cosí quando l'utente invierà il modulo in $_POST troverai pure questo valore.


  • User

    Questo è il mio codice del modulo dei contatti (File1.php)
    [PHP]
    <?php $referer = "sconosciuto";
    if($_SERVER['HTTP_REFERER']!="") {$referer=$_SERVER['HTTP_REFERER'];} ?>
    <div><input type="hidden" value"<?php echo $referer ?>" name="DaDoveProvengo"></div>
    [/PHP]

    E questo è il codice del file che lo riceve (File2.php)
    [PHP]

    $daqualepag = $_POST['DaDoveProvengo'];
    if(isset($_POST['DaDoveProvengo']))
    { echo "La VAR c'è." . $_POST['DaDoveProvengo'];} else { echo "Mi spiace";}
    echo $daqualepag;
    [/PHP]

    Risultato:

    "La VAR c'è."

    Ma non scrive quale !!!!


  • User Attivo

    Non ti passa il valore perché hai dimenticato l'uguale subito dopo value

    [HTML]
    <div><input type="hidden" value"<?php echo $referer ?>" name="DaDoveProvengo"></div>
    [/HTML]


  • User

    @flaviors200 said:

    Non ti passa il valore perché hai dimenticato l'uguale subito dopo value

    [HTML]
    <div><input type="hidden" value"<?php echo $referer ?>" name="DaDoveProvengo"></div>
    [/HTML]

    Nooooooooooooooooooooooo!!!!!!
    A tutto guardavo meno che alla dimenticanza di un uguale!!!!!!!!!!!!!!!!!!!!

    Che dire ... Il problema non era neanche del php!

    Grazie mille...