Newsgroup: it.comp.www.php
Titolo: redirect

Salve a tutti avrei un problemino...
Avete presente il meta tag:
<meta http-equiv='refresh' content='0; URL='lisp.php'>
che in html mi reindirizza ad una pagina...
In php dopo un if cosa devo mettere per dirgli  di caricarsi un altra pagina
php?
Quindi es:
if (condizione){
  php aprimi la pagina ok.php   <comando>
}
else{
 php aprimi la pagina errore.php !!!    <comando>
}
Grazie Alekals

 pagina php?
<?php
if ($OK) 
{
	header("Location: ok.php");
	exit;
}
else
{
	header("Location: ko.php");
	exit;
}
?>

 ?>
Però devi fare attenzione perché puoi inviare gli headers al browser 
solo se non hai ancora scritto nessuna riga dell'output html, altrimenti 
non funziona.
--
Gianni

 ?>
Non e' corretto, dopo location devi mettere una url completa:
header("Location: 
http://www.dominio.com/path/ko.php
");
S* 

 S*
G*

 Ma che cavolo dici!
Studiati i protocolli, amico.
14.30 Location 
The Location response-header field is used to redirect the recipient    to a
location other than the Request-URI for completion of the    request or
identification of a new resource. For 201 (Created)    responses, the
Location is that of the new resource which was created    by the request.
For 3xx responses, the location SHOULD indicate the    server's preferred
URI for automatic redirection to the resource. The    field value consists
of a single absolute URI.
Location       = "Location" ":" absoluteURI
An example is: 
Location: 
http://www.w3.org/pub/WWW/People.html
Note: The Content-Location header field (section 14.14) differs
      from Location in that the Content-Location identifies the original
      location of the entity enclosed in the request. It is therefore
      possible for a response to contain header fields for both Location
      and Content-Location. Also see section 13.10 for cache
      requirements of some methods.
Cfr 
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html


Dice giusto (quelli che scrivono codice per WAP ne sanno qualcosa).
Faccio notare che hai gia' dato fastidio qui una volta con un tuo morphing.
Risposte come queste sono assolutamente schifosi: basandosi su pura
disinformazione e incapacita' e pure nel tono sbagliato.
Se non sei capace di scrivere nei NG: stay away.


Ops, scusa,
ho bagliato, mi sono basato solo sul fatto che avrò 20 header relativi che
funzionano e allora pensavo....
Pardon

 funzionano e allora pensavo....
Prima di dire che funzionano testali con qualche altro browser oltre che con
Explorer Windows. 
S*

 S*
G*

 7
Il tuo bell'elenco si riduce a versioni quasi uguali di quattro browser per
windows. 
Non ho visto nel tuo elenco browser per Macintosh o per Linux, e neppure
Netscape 4.7.
Non ho visto nel tuo elenco Lynx.
Uno spider di Google come si comporta? E uno di Altavista?
Se segui il protocollo e un browser non funziona la colpa e' sua. Se non lo
segui la colpa e' tua.
Comunque per carita', fai come ti pare: io ci ho scontrato il muso e ho
imparato a mettere url assolute, tu sei piu' fortunato, buon per te.
Resta il fatto che se prima di correggere chi da' informazioni giuste dando
informazioni sbagliate farai meglio a documentarti. Al limite potrai anche
dire "si', ma funziona anche cosi' in questo e quest'altro caso", non certo
"che cazzo dici".
S*

 S*
G*

> La verità. Ha ragione lui.
Me l'hanno fatto già notare.
Grazie

 Me l'hanno fatto gią notare.
repetita iuvant.
ciao
-- 
Cujo.

 Cujo.

 Sě in questo caso: rerepetita
:)
ciao
-- 
Cujo.

 Non ho detto cosě, ho detto che cavolo e c'č un pelo di differenza!
E' vero... Ma scusa, dire "cavolo" non e' anche quello una specie di
redirect? :-)
S*

[]> header("Location: ?");
non picchiatemi a sangue (-: ma a leggere
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
mi risulta che 
http://bordellinodimarte.com/path
 vada usato se nell'head appare tutto l'URI e possa
essere usato solo /path se il referer e' GIA' 
bordellinodimarte.com
--
Shalom, Grizzly
Undefined Illusion BBS, tel. 199 702 385 - 
http://purl.org/net/grizzly/
 - Linux user since 1994

 essere usato solo /path se il referer e' GIA' 
bordellinodimarte.com
Il documento e' lungo e non riesco a trovare il passo dove si specifica
questa cosa (a dire il vero non trovo nessun passo che parli dell'header
Location, ma sicuramente non l'ho visto).
Puoi specificare dove se ne parla?
S* 

 Puoi specificare dove se ne parla?
Status 302 Found
mi pare capitolo 10.3.300
BTW basta cercare "HTTP/1.1 302 Found" sul motore di ricerca di 
www.w3.org


 BTW basta cercare "HTTP/1.1 302 Found" sul motore di ricerca di 
www.w3.org
Non mi pare che dica nulla su URL relative pero'.
S*

 Non mi pare che dica nulla su URL relative pero'.
dunque:
=====CUT HERE=====TIE TRANCU=====TAGGHIA CCA=====
10.3.3 302 Found
[...snip...]
The temporary URI SHOULD be given by the Location field in the response. Unless the request method
was HEAD, the entity of the response SHOULD contain a short hypertext note with a hyperlink to the
new URI(s).
If the 302 status code is received in response to a request other than GET or HEAD, the user agent
MUST NOT automatically redirect the request unless it can be confirmed by the user, since this might
change the conditions under which the request was issued.
=====CUT HERE=====TIE TRANCU=====TAGGHIA CCA=====
Mi sembra di capire che il tipo di risposta DOVREBBE contenere il nuovo URI in forma completa, ma ho
un test di sicuro effetto:
$ telnet 
www.virgilio.it
 80
escape character is ^]
[digito "GET / HTTP/1.1" "accept: */*" e "host: 
www.virgilio.it
"]
HTTP/1.1 302 Found
Date: Tue, 04 Mar 2003 22:47:29 GMT
Server: Matrix Web Server/1.1.65 (Unix)
Location: /home/index.html
Transfer-Encoding: chunked
Content-Type: text/html; charset=iso-8859-1
12d
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>302 Found</TITLE>
</HEAD><BODY>
<H1>Found</H1>
The document has moved <A HREF="/home/index.html">here</A>.<P>
<HR>
<ADDRESS>Matrix Web Server/1.1.65 Server at 
www.virgilio.it
 Port 80</ADDRESS>
</BODY></HTML>
0
Connection closed by foreign host


 un test di sicuro effetto:
Molto interessante... Comunque non mi baserei su Virgilio per scrivere i
protocolli internet! :-)
En passant, se fai la stessa operazione con 
film.spettacolo.virgilio.it
Ottieni piu' correttamente
HTTP/1.1 302 Found
Date: Wed, 05 Mar 2003 08:14:25 GMT
Server: Apache/1.3.27
X-Powered-By: PHP/4.2.3
Location: 
http://film.spettacolo.virgilio.it/cinema/
Transfer-Encoding: chunked
Content-Type: text/html
...anche perche' questo l'ho fatto io e quindi risponde giusto :-)))
S*

 > un test di sicuro effetto:
Il test è comunque sbagliato. Per le specifiche W3C l'URI deve essere 
assoluto e non relativo.
ciao
-- 
Morelli Michel
ZioBudda.net Coordinator
mic...@ziobudda.net

WOW, che cosa ho scatenato?
Comunque costa poco fare una cosa del genere:
$Location="Location:
http://".$HTTP_SERVER_VARS['HTTP_HOST'].substr($HTTP_SERVER_VARS['PHP_SELF']
,0,strrpos($HTTP_SERVER_VARS['PHP_SELF'],"/")+1);
header ($Location."mypage.htm");
Cosě č "assoluto" ma versatile e siamo sicuri che funzioni!

 ...anche perche' questo l'ho fatto io e quindi risponde giusto :-)))
Noto una cosa, usando il mio apache sotto linux.
Scrivo un cgi in perl che contiene solamente:
=====CUT HERE=====TIE TRANCU=====TAGGHIA CCA=====
#!/usr/bin/perl -w
print "Status: 302\n";
print "Location: /areu?id=1";
=====CUT HERE=====TIE TRANCU=====TAGGHIA CCA=====
e richiedendolo ottengo che apache lo trita e mi dice:
HTTP/1.1 302 Found
Location: 
http://leonard.nirvana.lan/areu?id=1
bohhhh
