Visualizzazione risultati 1 fino 6 di 6

Discussione: Problema con lo switch

  1. #1
    livesportweb non è connesso Neofita
    Data registrazione
    05-11-2011
    Messaggi
    15

    Predefinito Problema con lo switch

    Ho un problemino in php, lo sto imparando da poco quindi non sono un grande esperto. Vi spiego il mio problema. Ho provato a creare una pagina index.php dove ho settato un metodo $_GET dove carico una singola pagina a seconda del menù selezionato.
    Ho provato così:
    Codice PHP:
    <?php
    if (isset($_GET["id"]))
    {
    switch(
    $_GET["id"]){
    case
    about: include("about.php"); break;
    case
    contact: include("contact.php"); break;
    case
    music: include("music.php"); break;
    case
    photo: include("photo.php"); break;
    }
    }
    else{
    include (
    "home.php");
    }
    ?>
    Nel menù, di ogni singola pagina in php ho fatto una cosa del genere:
    Codice HTML:
    <li class="on first"><a href="index.php">Home page</a></li>
    			<li><a href="?id=about">About </a></li>
    			<li><a href="?id=music">Music</a></li>
    			<li><a href="?id=photo">Photos</a></li>
    			<li><a href="?id=contact">Contact</a></li>
    Solo che in home page non mi da problemi, nelle altre mi da problemi del tipo:
    Notice: Use of undefined constant about - assumed 'about'
    Come posso risolvere? Grazie in anticipo per le risposte
    Ho dovuto risolvere all'inizio con un if else perché se no mi dava problemi anche in home in quanto la variabile non è stata inizializzata.

  2. #2
    Guest

    Predefinito

    Nel case, metti i valori tra gli apici.

    Codice PHP:
    <?php

    if (isset($_GET['id']))
    {
    switch(
    $_GET['id'])
    {
    case
    'about':
    include(
    'about.php');
    break;

    case
    'contact':
    include(
    'contact.php');
    break;

    case
    'music':
    include(
    'music.php');
    break;

    case
    'photo':
    include(
    'photo.php');
    break;

    default:
    include(
    'home.php');
    }
    }
    else
    {
    include(
    'home.php');
    }

    ?>
    Il codice può essere anche semplificato:
    Codice PHP:
    if (isset($_GET['id']))
    {
    switch(
    $_GET['id'])
    {
    case
    'about':
    case
    'contact':
    case
    'music':
    case
    'photo':
    include(
    $_GET['id'] . '.php');
    break;

    default:
    include(
    'home.php');
    }
    }
    else
    {
    include(
    'home.php');
    }
    Ultima modifica di biccheddu : 23-01-2012 alle ore 13.48.09

  3. #3
    Guest

    Predefinito

    Aggiungo una piccola nota in favore dell'ambito sicurezza.

    Se adoperi il secondo metodo esposto da biccheddu, assicurati di eseguire forti controlli di validità dell'informazione passata via GET, il rischio altrimenti è quello di trovarsi esposti al remote file inclusion.

  4. #4
    livesportweb non è connesso Neofita
    Data registrazione
    05-11-2011
    Messaggi
    15

    Predefinito

    Grazie si funziona! Vero ho dimenticato le virgolette! E poi non avevo pensato alla riduzione con la concatenazione di stringhe! ottimo!

    Blackbos, cosa consigli?
    Con lo switch case non penso si possa fare, dovrei usare dell'if, else if senza else finale....
    Il problema è che non è inizializzata... però asp io ho messo che automaticamente o prende uno di quei casi oppure mi stampa l'home page quindi hanno voglia non penso possano fare modifiche.
    Ultima modifica di livesportweb : 23-01-2012 alle ore 14.16.52

  5. #5
    Guest

    Predefinito

    Credo basti passare il valore a basename() per risolvere il problema.

    Io purtroppo non uso questo genere di codice, ma ho funzioni apposite per estrapolare i dati dalle supervariabili, quindi non saprei consigliarti altro.


  6. #6
    livesportweb non è connesso Neofita
    Data registrazione
    05-11-2011
    Messaggi
    15

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Credo basti passare il valore a basename() per risolvere il problema.

    Io purtroppo non uso questo genere di codice, ma ho funzioni apposite per estrapolare i dati dalle supervariabili, quindi non saprei consigliarti altro.

    ok grazie mille! ;)

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •