Newsgroup: it.comp.www.php
Titolo: multipart/form-data + TAG Anchor

ho un problema apparentemente stupido ma che non riesco a risolvere.
Ho una pagina con un form multipart/form-data, ebbene in questa modalità
del form se dalla pagina a cui sono arrivato faccio un redirect passando
anche l'anchor tipo: header("Location:mioindirizzo.php?id=1&#end") l'URL mi
viene interrotto all'ultimo & tagliando #end, se cambio lo stato del form
eliminando il multipart/form-data allora ottengo il reindirizzamento
completo di #end.
Qualcuno può indicarmi il motivo di questo comportamento e l'eventuale
solulzione?
Va da se che devo necessariamente usare un form multipart/form-data perchè
devo fare tra le tante cose anche l'upload di alcuni file.
Grazie mille Stefano

completo di #end.
Mi puoi spiegare quest'ultimo punto? :-?
Leonardo
-- 
There is nothing makes a man suspect much, more than to know little,
and therefore men should remedy suspicion by procuring to know more,
and not keep their suspicions in smother.            (Francis Bacon)

 Sostituisci "&" con "&amp;" e vedi se il problema cambia.
È PHP, mica X(HT)ML...
Magari togliere del tutto l'ultima & (che così non ha alcuna funzione).
-- 
ColdShine
"L'esperienza è un'insegnante severa: prima ci esamina
 e solo dopo ci fa lezione." - legge di Vernon Sanders 

 Mi puoi spiegare quest'ultimo punto? :-?
Se scrivo cosě
-------------------------
<?
if(isset($_POST['test'])){
  header("Location:test.php?ciao=".$_POST['test']."#ciao");
  exit;
}
?>
<form action="test.php" method="post" enctype="multipart/form-data"
name="test" id="test">
  <input type="file" name="file">
  <br>
  <input type="submit" name="Submit" value="Submit">
  <input name="test" type="hidden" id="test" value="1">
</form>
---------------------------
Mi ritorna questa URL test.php?ciao=1
Se tolgo enctype="multipart/form-data"
 
-----------------------------------
<?
if(isset($_POST['test'])){
  header("Location:test.php?ciao=".$_POST['test']."#ciao");
  exit;
}
?>
<form action="test.php" method="post" name="test" id="test">
  <input type="file" name="file">
  <br>
  <input type="submit" name="Submit" value="Submit">
  <input name="test" type="hidden" id="test" value="1">
</form>
--------------------------------------
Ottengo invece la URL corretta test.php?ciao=1#ciao
Mi sapete spiegare il perchč e come rivolvere il problema?
Ciao Stefano

Magari togliere del tutto l'ultima & (che così non ha alcuna funzione).
Quello si'... ma il problema potrebbe essere altrove.
(Gia' che ci siamo mi pare che il Location: dovrebbe contenere un URL al
completo, da http:// in poi -- credo che tutti i browser accettino anche
gli URL relativi, comunque).


 lo sa. 
E' un problema di IE infatti sotto firefox funziona correttamente. A questo
punto nessuno conosce la soluzione?
Sull'URL relativa non è quello il problema, anche mettendo l'URL completa
di http:// l'errore persiste.
Ciao Stefano

 Se scrivo così

Nessuno mi sa spiegare questo funzionamento anomalo di IE? A nessuno è mai
capitato di fare un upload di un file e poi ritornare ad una pagina che
abbia un'àncora?
Ciao Stefano

punto nessuno conosce la soluzione?
Hai provato a metterci "&amp;" al posto di "&"? Che versione di IE usi, e
come scarichi la pagina? Che tipo di HTML butti fuori, che codifica e con
che doctype, e (not to leave a stone unturned) da quale server?
Io ho fatto una prova adesso, e mi pare funzioni; ma io potrei senz'altro
avere una configurazione diversa dalla tua.
Alle perse alle perse, puoi sostituire il Location con un META refresh? O
addirittura un javascript?


 abbia un'àncora?
No. Però se il bug è innato in IE (= non ci puoi fare niente), puoi girarci 
intorno facendo generare alla pagina di destinazione (quella che vorresti 
aprire con l'ancora selezionata) un JavaScript che fa 
window.open(location.href + "#quellochevuoi", "_self").
Non sarà bellissimo, ma non aggiunge troppo lavoro a te (meglio che 
smadonnare di fronte all'ennesimo bug di IE) e non aggiunge traffico (sia IE 
che FX passano all'ancora specificata senza ricaricare la pagina).
Vedi se fa al caso tuo.


 window.open(location.href + "#quellochevuoi", "_self").
ho risolto facendo puntare ad un pagina intermedia e poi da questa alla
pagina finale con l'àncora attiva.
Certo che palla questo bug, strano che a nessuno sia mai capitato una cosa
simili, anche su google non ho trovato nulla.
Grazie lo stesso.



Guarda, con tutto che IE non e' uno dei miei amori :-) [1], non credo che
sia lui il responsabile principale della faccenda. Secondo me ti dovresti
riguardare tutto il percorso che fa quella Location - chi la genera, e da
dove passa.
Leonardo
[1] sto concorrendo per l'eufemismo del mese


 dove passa.
Scusa ma non hai seguito il discorso, ti reincollo il codice generico che
NON funziona su IE. Creati una pagina test.php e falla girare, mettici pure
il path assoluto NON funziona nč in locale sul mio computer nč su almeno 3
server in hosting diversi
Ovviamente NON funziona su IE mentre su FF tutto perfetto.
Se scrivo cosě


> Ovviamente NON funziona su IE mentre su FF tutto perfetto.
Un bel mistero, ci ho provato anche io, e dopo moltissimi tentativi per 
cercare di capirne un po' di più, non ne ho ricavato nulla. :-)
L'unica cosa che ho notato, è che giustamente togliendo l'enctype 
l'ancora viene trasmessa alla pagina successiva.
Oppure, togliendo il campo di input file, ma lasciando quell'enctype, 
l'ancora viene ancora trasmessa.
Se riesci a trovare una soluzione (sempre server-side) te ne sarei 
grato.
Del resto, non è la prima e non sarà l'ultima volta che IE dà questi 
problemi. Qualche tempo fa mi è capitata una cosa inspiegabile: NON 
inserendo alcuna DTD nella pagina, su IE la pagina era visualizzata 
perfettamente. Inserendo la DTD, alcune visualizzazioni andavano a 
farsi fottere. Ma il bello è che la pagina era perfettamente xhtml 
valida (infatti con FF tutto bene). :-)
Mah...misteri della Microsoft...
--
rob4you

 grato.
come scritto in precedenza l'unica soluzione trovata è stata quella di fare
un redirect ad una pagina intermedia che contiene a sua volta un redirect
alla pagina definitiva con l'àncora #fine inserito correttamente, va da se
che non è certo la soluzione ottimale ma a mali estremi.
Utilizzare
<META http-equiv=Refresh content="0; url=
http://www.miourl.php#fine
">
non va bene perchè si verrebbe a trovare in una parte della pagina esterna
al body (il codice è in testa alla pagina) e mi sballa gli stili....
stranamente SOLO nel punto dove ci sono i campi del form per l'upload del
file, altro mistero, ma questo è così anche su FF.
Ciao Stefano

   <input name="test" type="hidden" id="test" value="1">
Provare a cambiare i nomi niente eh! ;) prova e facci sapere ..
--
[CapoBecchino]
msn: capobecchino |[@]| hotmail |[.]| com
!!! SODDISFATTI O RIMBORSATI !!! Nessuno si è mai lamentato della
nostra offerta 2x1. Morire in 2 e pagare per 1

> Provare a cambiare i nomi niente eh! ;) prova e facci sapere ..
Ho provato io per lui...ma niente. :-)
--
rob4you

 [1] sto concorrendo per l'eufemismo del mese
Ormai è fatta. :-)
Ciao.
Maverick
-- 
«Che non siete più liberi di non avere una casa con letto per dormire.
 Lavorate voi - schiavi dei soldi - che non sentite la puzza della
 schiavitù!» (a Mario di Monte Mario, Roma) # 
http://libre.netsons.org/