Newsgroup: it.comp.www.php
Titolo: Controllo Pagina

Ciao a tutti,
ho un piccolo problema legato al controllo di una pagina in base alla 
provenienza.
In sostanza, sia X.PHP la pagina sorgente e Y.PHP la pagina destinazione. 
Entrambe le pagine X.PHP e Y.PHP sono contenute all'interno di uno spazio 
web associato a un nome a dominio.
Intendo fare in modo che Y.PHP possa essere aperta SOLO ED ESCLUSIVAMENTE se 
chiamata da X.PHP e in caso contrario reindirizzare a X.PHP.
Come posso realizzare ciò?
Per la seconda parte del problema ho pensato a un redirect mediante header 
() interno a un controllo if, ovvero qualcosa del tipo:
if ( provenienza valida ) {
    // esegui codice
  } else {
    // reindirizza a x.php
   header ('location: x.php');
  }
Come dovrei definire "provenienza valida", affinchè siano soddisfatte le 
condizioni di sopra?
Grazie in anticipo.
Cooper.
--
www.blueware.it
 

Cooper ha scritto:

in x setti una variabile di sessione, in y la controlli
-- 
"20060207: buongiorno italia, buongiorno maria.
con gli occhi pieni di malinconia"


Piu precisamente?  Io stavo pensando a una soluzione basata sul controllo 
del dominio cosa ne pensi?
Cooper. 

 Come posso realizzare ciò?
in testa a y.php:
if((basename($_SERVER['HTTP_REFERER']))!="x.php"){header("Location:x.php");exit;}
-- 
Lello Vitello
cantautore alla bona:
www.lellovitello.it

if((basename($_SERVER['HTTP_REFERER']))!="x.php"){header("Location:x.php");exit;}
assolutamente inaffidabile...bisogna usare le sessioni
Francesco Mazzi
Webmaster di AltroPC.it - 
http://www.altropc.it
 
Dev.Staff di E-Xoopport - 
http://dev.e-xoopport.it


Ok, mi oriento sulle sessioni.
Potresti gentilmente illustrarmi il codice da adattare nello specifico nelle 
due pagine? Mi aspetto sia qualcosa di abbastanza semplice e di poche righe.
Poichè non ho molta dimestichezza, vorrei intanto prendere possesso del 
codicillo da inserire per poi approfondire meglio questo aspetto, in modo da 
poter proseguire con il lavoro.
Grazie ancora per la pazienza.
Cooper. 

 due pagine?
In X.php (a inizio pagina, prima d'un eventuale output):
session_start();
$_SESSION['pippo'] = "SonoPassatoDa_X";
// nient'altro
In Y.php (sempre prima d'un eventuale output):
session_start();
if (!isset($_SESSION['pippo']) or $_SESSION['pippo']!="SonoPassatoDa_X") {
header("Location: Url assoluto di X.php");
exit();
} else {
$_SESSION['pippo'] = "HoAbbandonato_X";
/* Come vedi, alla sessione è stato semplicemente cambiato valore. Se
invece preferisci distruggerla puoi farlo con unset($_SESSION['pippo'])
che però, se la memoria non m'inganna, qualche tempo fa sembrava non
essere affidabile; nelle recenti versioni di php non so se il bug è stato
corretto (a questo proposito gradirei personalmente il parere di un
esperto, thanks). Comunque ricordo che al problema si ovviava con
session_unregister('pippo'). */
}
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)


Ok grazie mille :)
Cooper. 


Riepilogando, se ho capito bene...  in X.PHP scrivo:
<?
   session_start ();
   !isset($_SESSION['miodominio'] = "miodominio';
      ...
          // Codice della pagina X.PHP
          // Carico Y.PHP
      ...
  ?>
mentre in Y.PHP scrivo:
<?
   session_start ();
   if (!isset ($_SESSION['miodominio']) or $_SESSION['miodominio'] != 
'miodominio') {
       ...
         // ritorna alla pagina X.PHP
         exit ();
       ...
     } else {
       ...
       //  codice della pagina Y.PHP
      ...
     }
   unset($_SESSION['miodominio']);
 ?>
E' corretto cosi? chiedo conferma.
Grazie ancora per la disponibilità.
Cooper. 

    !isset($_SESSION['miodominio'] = "miodominio';
No no, casomai:
$_SESSION['miodominio'] = "miodominio";
poi - manuale alla mano - cerca di capire cosa avviene, ed eventualmente
se ne parla.



Ok, farň, intanto grazie per la correzione, in effetti ho sbagliato a 
copiare, un ultima domanda, il codice che mi hai segnalato per gestire la 
mia problematica con le sessioni, resta valido anche nel caso in cui alle 
pagine X.PHP e Y.PHP accedano contemporaneamente piů utenze nello stesso 
istante? O subentra qualche conflitto che manda in panne tuto?
In tal caso come bisogna ovviare? Quali modifiche bisogna apportare al 
codice che mi hai dato per evitare ciň (se bisogna apportare delle 
modifiche)?
Grazie ancora,
Cooper.

 istante?
Sě. Ti copio un breve brano tratto da
http://www.allwebfree.it/php_sessioni.php
(dagli un'occhiata)
<<Il funzionamento delle sessioni č molto semplice, il server apre una
sessione e gli assegna un nome univoco. Analizza l'utente, raccoglie i
dati che vogliamo e li salva in un file che porta lo stesso nome della
sessione.>>
Nel "nome univoco" sta la risposta al tuo quesito.
