Redirect PHP

di il
8 risposte

Redirect PHP

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

  • Re: Redirect PHP

    Https://www.w3schools.com/php/php_switch.as

    Riguardati la sintassi dello switch e capirai
  • Re: Redirect PHP

    Aspetta non ti seguo... non credo sia la mancanza del default alla fine... potresti spiegarti meglio?
  • Re: Redirect PHP

    Le parentesi graffe dopo ogni case.
  • Re: Redirect PHP

    Ci sono..
    case 'italia':{
             		
          }break;
    Non capisco...
  • Re: Redirect PHP

    Hai aperto il mio link? Non ci vogliono le parentesi graffe...
  • Re: Redirect PHP

    Capito, comunque anche senza parentesi graffe continua a non funzionare...
  • Re: Redirect PHP

    Prova a togliere gli exit.
  • Re: Redirect PHP

    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