Consiglio su: $_SERVER['HTTP_REQUEST'] e $_SERVER['REQUEST_URI'] .

Buongiorno a tutti!

Apro questo thread perchè mi piacerebbe ricevere pareri e consigli da voi.

Sto lavorando su una "final landing page"...ovvero una pagina .php che verrà poi visualizzata SOLO ed ESLUSIVAMENTE alla fine di una futura operazione svolta dall'utente.

L'obiettivo è questo:

- Evitare l'apertura di questa pagina direttamente, digitando l'url nel browser che porta ad essa.

- Evitare l'apertura di questa pagina se l'utente NON proviene dall'UNICA pagina da cui si potrebbe accedere (ad esempio, la pagina che conferma il pagamento..e poi reindirizza a questa).

La soluzione adottata è la seguente:

Pagina "final landing page"

<?php 

# Il codice seguente, dati gli "header", va posto all'inizio della pagina .php .

if ($_SERVER['REQUEST_URI'] == "--indirizzo digitato direttamente nel browser--") { 

    header("Location: miosito.it/page/index.php"); # Non ho messo "www" di proposito

} 

# L'istruzione sottostante genererà un errore Notice. Ho rimosso per ora la @ . 
if ($_SERVER['HTTP_REFERER'] != "---indirizzo diverso dall'unica pagina da cui si può provenire---") { 

    header("Location: miosito.it/page/index.php");  # Non ho messo "www" di proposito

} 
?>

Quindi, come potete vedere, sia nel caso l'URL (della "final landing page") venga digitato direttamente nella barra del browser, sia se l'utente NON provenga dall'unica pagina che possa visualizzare poi questa "final landing page", esso verrà reindirizzato nella homepage del sito (oppure in un'altra pagina..).

Secondo voi, è una buona soluzione per prevenire l'apertura di questa pagina finale?

(La quale dovrà essere visualizzata, ripeto, solo una volta che l'utente avrà svolto le operazioni..di acquisto, bla, bla..)

Grazie a tutti.

 :bye:

inviato 5 anni fa
wartpro
X 0 X

A parte che dovresti usare un exit() dopo ogni header location, per questioni di sicurezza (è il browser che deve onorare la richiesta di redirezione e non è affatto detto che lo faccia).

A parte questo dicevo, secondo me è molto più semplice mettere una variabile in sessione e fare un controllo su quella.

risposto 5 anni fa
Massimiliano Arione
X 0 X

Aspetta..

- exit;

- exit();

..quale dei due? Il primo immagino..giusto?

Grazie per il consiglio. Riguardo le sessioni, è tutto il giorno che non riesco a capire perchè con IE e con FIREFOX non mi passa il valore immesso in una $_SESSION["prova"] da una pagina all'altra...tramite redirect con header("Location: --- ");

Ad ogni modo, grazie per il consiglio sulla sicurezza. Anzi, potresti dirmi perchè è preferibile l'exit?

Grazie :)

risposto 5 anni fa
wartpro
X 0 X

exit o exit() è indifferente.

Come ho detto, exit va messo dopo un redirect per fare in modo che l'esecuzione dello script si interrompa.

L'omissione dell'exit fa sì che, nel caso in cui il client non esegua il redirect, lo script non continui.

Per quanto riguarda le sessioni, forse dovresti aprire un topic a parte. Magari prima dai un'occhiata al manuale, ci sono tanti esempi, per esempio http://www.php.net/manual/en/session.examples.basic.php

risposto 5 anni fa
Massimiliano Arione
X 0 X

Grazie mille!

 :D

risposto 5 anni fa
wartpro
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda