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

Ciao ho uno strano problema.
In una index.php ho un form (tipici username e password) collegato a una 
action.php.
Quando il bottone del form viene premuto senza che si sia scritto 
alcunché nei campi, dopo aver realizzato il tipico controllo 
sull'esistenza dei dati in $_POST, faccio un redirect:
header("Location: 
http://www.dominio.it/index.php
?".$session."&sector=12&lang=".$lang."&ec=".$err_cod);
exit();
Un passo indietro:
nel sito c'è un sistema per cui se il sector non è un numero corretto 
(non corrisponde ad un file leggibile) viene incorporato in un div un 
notfound.inc.php.
Se invece il numero è corretto viene visualizzata la sezione (chessò, 
gallery.inc.php) all'interno di un div nella index.
Se qualcuno tenta di manipolare l'URL inserendo un nome di pianta o un 
numero diverso da quelli possibili, dunque, viene fuori notfound.inc.php 
("Pagina non trovata").
Ora, tornando all'inizio:
il 12 (redirect) è un numero tra quelli possibili: il database collega 
questo numero ad una pagina che avverte di errori nell'inserimento dei dati.
Il sito è in due lingue (ita e eng):
quando entro nel sito, la lingua è per default eng.
Cosa succede:
quando entro, clicco sul bottone del form e mi trovo nella sezione eng, 
invece della pagina 12 viene caricata una notfound.
Invece, se clicco sul bottone dopo aver manualmente cambiato la sezione 
da eng a ita ho quello che vorrei: mi si carica la corrispondente di 12.
Insomma, l'indirizzo del redirect è lo stesso (inoltre il sito viene 
interamente tradotto...) e dovrebbe (in teoria) scatenare la stessa azione.
Cosa succede? Può essere qualcosa che ha a che vedere con l'invio di 
headers? Un problema di cache?
Grazie.

 headers? Un problema di cache?
E in $session cosa c'è precisamente?
Magari intoppa proprio in qualche controllo su questa variabile?
rob4you 

 exit();
Ciao Pilatino,
io in genere uso l'include che più pratico perché passo
automaticamente tutte le variabili ed in secondo luogo è sicuramente
più veloce.
Es. include("index.php")
Come mai ti sei ridotto ad usare un redirect? :)
Ciao.

 Magari intoppa proprio in qualche controllo su questa variabile?
$session da diventare l'URL una cosa così:
http://www.dominio.it/index.php?PHPSESSID=c9a222b5d122ab397d1e06c412895949&sector=3&lang=eng

 Come mai ti sei ridotto ad usare un redirect? :)
Dunque, il form in home fa questo:
a seconda del risultato ottenuto, "smista" gli utenti.
Alcuni utenti devono tornare alla index.php, dove gli verranno serviti 
dei contenuti "in lettura".
Poi ci sono utenti con altri privilegi che possono scrivere e modificare 
"il sistema", diciamo così. Questi ultimi NON tornano ad index.php ma 
vanno a backend.php (dove, ancora, a seconda del livello di privilegio 
gli verrà mostrato un menu differente).
Il redirect, se funzionasse, sarebbe comodissimo   :-)
In effetti, verso backend.php sembra andarci alla grande.
Il problema sembra verificarsi solo nel caso descritto   :-(
Grazie ad entrambi, comunque

 
http://www.dominio.it/index.php?PHPSESSID=c9a222b5d122ab397d1e06c412895949&sector=3&lang=eng
Ma non è che in realtà il redirect non va come vuoi tu perché il problema è 
proprio legato alla sessione (cioè non richiami prima di tutto la funzione 
session_start())?
rob4you 

Pilatino ha scritto:

Ciao Pilatino,
non per insistere, ma insisto, chi ti impedisce di mettere gli include
nelle if o in uno switch?
Fai conto di avere $tipoutente estratto da db utenti, non è comodo
così?
switch ($tipoutente)
{
     case "loginfallito":
     default:
           include "login.php";
           break;
     case "amministratore":
           include 'backhend.php";
           break;
      case "Ubu re":
           include "accessototale.php"
           break;
       etc etc.
}
 
ciao.

rob4you ha scritto:

beh, il sessione_start() è richiamato nei tre file (index.php, 
action.php e backend.php). La sessione viene "mantenuta".

 cosě?
quello che tu fai con include, io lo faccio con il redirect:
insomma, nel mio caso, non č comodo l'include.
Le due interfacce, "lettura" e "scrittura" sono due interfacce 
differenti e vanno tenute separate.

 Ciao ho uno strano problema.
aggiungo un dato:
se cambio il numero ed assegno come sector 14 al posto di 12,
il comportamento è errato per ambo le possibilità, sia ita che eng.

> Ciao ho uno strano problema.
Ho risolto:
per uno strano scherzo del destino (di Windows, del mouse, della 
tastiera, del caldo, fate voi), quando copiavo in PhpMyAdmin il nome del 
file da richiamare, venivano aggiunti due spazi. Questo cambiava il nome 
del file, che alla prova del file_exists poi non esisteva.
Grazie a tutti.