Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    129

    switch e versioni di php

    ciao a tutti ho un piccolo problema con un mio script in cui ho usato switch($variabile)

    Il problema è sorto quando ho aggiornato la versione di php dalla 4.2 alla 4.3.10: appare un messaggio di errore in cui mi si avvisa che tale variabile è indefinita, mentre utilizzando la versione 4.2 di php tutto funziona perfettamente ossia quando la variabile non assume nessun valore lo switch esegue l'istruzione di default.
    Vi ringrazio in anticipo per l'aiuto ciao, andrea.

  2. #2
    non è lo switch.
    Hanno cambiato sul tuo server le impostazioni di sicurezza di PHP visualizzando anche i notify (messaggi di errore non bloccanti).

    Infatti PHP crea in automatico le variabili non definite ma ti rilascia un notify.

    Prima di fare un controllo con lo switch sul valore della variabile ti conviene verificarne l'esistenza

    codice:
    if (!isset($variabile)) $variabile="";

  3. #3
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    il motivo è che il php.ini della versione precedente era probabilmente configurato in modo da non mostrare i warning quando cerchi di leggere l'elemento di un array inesistente.

    Puoi riconfigurare il livello di debug in modo che il warning non venga mostrato, oppure (cosa migliore da fare) è modificare il codice in modo che venga prima di tutto testata l'esistenza di un indice e in tal caso eseguire il blocco di codice..

    nel tuo caso probabilmente facevi una cosa del genere :
    codice:
    switch($_GET['cmd']) {
    
      case "links":
        // vai alla pagina dei links;
      break;
    
      case "bla":
      .
      .
      .
      default:
        // Vai alla home
    }
    in questo modo se $_GET['cmd'] non era settata andavi al defaul...

    se vuoi modificare la cosa in modo da non stravolgere il codice metti prima dello switch questa condizione:

    codice:
    if(!isset($_GET['cmd'])) $_GET['cmd']="";

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2000
    Messaggi
    129
    molto gentili entrambi, i consigli sono stati efficaci, vorrei però capir meglio: questo modo di usare lo switch (senza verificare il valore della variabile passata) lo imparai sulle pagine di un manuale (php4 guida dello sviluppatore della wrox), a quanto pare non è un metodo molto ortodosso o sbaglio?

  5. #5
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    Originariamente inviato da hhchnos
    molto gentili entrambi, i consigli sono stati efficaci, vorrei però capir meglio: questo modo di usare lo switch (senza verificare il valore della variabile passata) lo imparai sulle pagine di un manuale (php4 guida dello sviluppatore della wrox), a quanto pare non è un metodo molto ortodosso o sbaglio?
    si meglio testare l'esistenza dell'indice, poi (se ho capito dove vuoi arrivare) anche i libri sbagliano, o forse è semplicemente una features aggiunta dopo...


    ciao

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.