Redirect PHP

di Anonimizzato13383 il
8 risposte
Salve a tutti. Sto realizzando uno script che, ricevuto in input una stringa da un form, reindirizza alla pagina corrispondente. Mi spiego meglio. Se nel form scrivo italia, facendo submit lo script apra la pagina corrispondente. Posto il codice. Il problema è che mi dice che la pagina non esiste.
$cercacit = $_GET['cercacit'];
   switch ($cercacit){
		case 'italia':{
			header("Location: https://www.miosito.com/italia");
			exit;
		}break;
		case 'spagna':{
			header("Location: https://www.miosito.com/italia");
			exit;
		}break;	
   }
   
Spero di essermi spiegato bene. Grazie in anticipo!

8 Risposte

  • Aspetta non ti seguo... non credo sia la mancanza del default alla fine... potresti spiegarti meglio?
  • Le parentesi graffe dopo ogni case.
  • Ci sono..
    case 'italia':{
             		
          }break;
    Non capisco...
  • Hai aperto il mio link? Non ci vogliono le parentesi graffe...
  • Capito, comunque anche senza parentesi graffe continua a non funzionare...
  • Prova a togliere gli exit.
  • Non mi sono strettamente attenuto a quello che è il tuo codice proposto.

    Nei commenti trovi anche un suggerimento di una delle possibili cause del reindirizzamento errato.
    
    <?php
    
    /**
     * La ragione per cui non vieni reindirizzato correttamente potrebbè essere
     * legata al server web che utilizzi per servire la tua applicazione. 
     * 
     * Nel caso di Apache posiziona un file .htaccess nella
     * web root dell'applicazione, di seguito un esempio del contenuto: 
     * 
     * file ".htaccess":
     * --------------------------------------------
     * 
     * RewriteEngine On
     * 
     * RewriteCond %{REQUEST_FILENAME} !-d
     * RewriteCond %{REQUEST_FILENAME} !-f
     * RewriteRule ^ index.php [L]
     * 
     * ---------------------------------------------
     * 
     * 
     * 
     * Se invece utilizzi Nginx nel file di configurazione del sito:
     * 
     * /etc/nginx/site-aviable/mySiteConfigFIle.something:
     * ----------------------------------------------
     * 
     * location / {
     *     try_files $uri $uri/ /index.php?$query_string;
     * }
     * 
     * ----------------------------------------------
     * 
     */
    
    
    
    
    /**
     * Inizializzo le variabili dell'applicazione
     * 
     */
    
    
    // istruzioni legate al fatto che sto lavorando in locale sulla posta 8000
    // per cui ho bisogno di specificare anche la porta su cui il sito è 
    // raggiungibile
    
    $site_url = "http://" . $_SERVER['SERVER_NAME'];
    $server_port = $_SERVER['SERVER_PORT'];
    $site_url .= ":" . $server_port;
    
    
    
    // url del form da cui è partita la richiesta/submit, partendo dal presuppposto
    // che il form sia nell'index dell'applicazione, questo perché non avendo
    // ide dell'applicazione ho riprodotto il problema in un file index.php
    
    $form_url = $site_url;
    
    
    
    // messaggi da mostrare all'utente
    
    $msgs_to_user = array();
    
    
    
    
    /**
     * Dopo aver recuperato le varibili d'ambiente iniziamo ad elaborare la 
     * richiesta dell'utente e comporre la risposta
     * 
     */
    
    
    // bisognerebbè gestire la logica che chiama lo script coun un router o
    // con un pattern intelligente, ma per semplicità metteremo tutto insieme
    
    
    // se il parametro 'cercacit' è impostato e valorizzato allora il tuo script
    // verrà chiamato in causa ed eseguito
    
    $delta = 'cercacit';
    $expected_solutions = array( 'italia', 'spagna', 'altro' );
    
    if( array_key_exists( $delta, $_GET ) && $_GET[ $delta ] != null )
    {
      // per semplificare il lavoro recupero il parametro a cui sono interessato
      // anche se bisognerebbe validare l'input dell'utente
      
      $city_name = preg_replace( '/[^-a-zA-Z0-9_]/', '', $_GET[ $delta ] );
      $city_name = strtolower( $city_name ) ;
    
    
    
      // controllo che il parametro idenitficato sia presente tra quelli previsti
      // altrimenti gestisco la UX notificando all'utente che la sua scelta non
      // è prevista e gli fornisco informazioni sulle possibilità che ha
      
      $match_result = in_array( $city_name, $expected_solutions );
    
      if( $match_result )
      {
        // considerando che l'informazione richiesta è presente tra quelle previste
        // redirigo l'utente
        
        $msgs_to_user[] = "Città: $city_name";
        header( "Location: " . $site_url . "/" . $city_name );
    
      }
      else
      {
        // nel caso in cui la scelta dell'utente non sia prevista ricarico la pagina
        // con il form ed informo l'utente delle possibilità utili per continuare 
        // la navigazione
        
        $msgs_to_user[] = "Caro utente la città da te selezionata ($city_name) ...";
        header( "Location: " . $form_url );
    
      }
    
    }
    
    ?>
    
    
    <!DOCTYPE html>
    <html>
    <head>
      <meta charset="utf-8" />
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <title>Page Title</title>
      <meta name="viewport" content="width=device-width, initial-scale=1">
    
      <!-- 
        <link rel="stylesheet" type="text/css" media="screen" href="main.css" />
        <script src="main.js"></script>
      -->
    
    </head>
    <body>
    
    
    
    <?php if( $msgs_to_user ) : ?>
    <div id="msgs">
    
    <ul>
      <?php foreach( $msgs_to_user as $msg ) echo "<li>$msg</li>"; ?>
    </ul>
    
    </div>
    <?php endif; ?>
    
    
    
    <form action="/" method="get">
      <input name="cercacit" type="text" placeholder="Quale città vuoi visitare?" require/>
      <input name="op" type="submit" value="search" />
    </form>
    
    
    
    </body>
    </html>
    
Devi accedere o registrarti per scrivere nel forum
8 risposte