Visualizzazione risultati 1 fino 5 di 5

Discussione: Nessuna azione if(eregi()), redirect in caso contrario

  1. #1
    Guest

    Predefinito Nessuna azione if(eregi()), redirect in caso contrario

    http://forum.it.altervista.org/valid...l-browser.html

    Dopo questa discussione, ho modificato la soluzione di Bicchedu, come segue.

    Per le pagine in cui il Layout è tableless, e quindi IE impazzisce, o messo in cima questo codice:

    Codice PHP:
    if (eregi('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
    {
    header('Location: http://www.morgensterngdr.altervista.org/IE/'); #Explorer
    }
    E funziona perfettamente, reindirizzando l'utente alla directory che continie il sito "ottimizzato" per IE. In questa parte di sito vorrei fare l'azione inversa, ovvero, se il browser usato è differente da IE, rimandare al sito tableless, ho adottato da prima il codice proposto da Bicchedu, elliminando una parte del codice a me non neccessaria, la cose funzionava, ma i tempi di carricamento erano infiniti perchè il server doveva verificare una marea di cose, così ho optato per questa soluzione che richiede un unica verifica:

    Codice PHP:
    if (eregi('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
    { }
    else
    {
    header('Location: http://www.morgensterngdr.altervista.org/'); #Tableless
    }
    Ma non so se è concettualmente corretto, mi potete dire se è corretto e se non lo è, consigliarmi un altra soluzione?

    Grazie mille dell'aiuto.

  2. #2
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Codice PHP:
    if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE') === FALSE)
    header('Location: http://www.morgensterngdr.altervista.org/'); #Tableless
    Ciao!
    Ultima modifica di programmazioned : 20-06-2009 alle ore 18.23.51

  3. #3
    Guest

    Predefinito

    Citazione Originalmente inviato da programmazioned Visualizza messaggio
    Codice PHP:
    if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE') === FALSE)
    header('Location: http://www.morgensterngdr.altervista.org/'); #Tableless
    Ciao!
    Sto provando, solo due cose:

    le { te le sei mangiate o non ci vanno?
    Perchè tre = ??

    EDIT: Senza le graffe mi ha dato errore di sintassi, con le graffe funziona perfettamente, grazie programmazioneed
    Ultima modifica di morgensterngdr : 20-06-2009 alle ore 18.31.13

  4. #4
    programmazioned non è connesso Utente attivo
    Data registrazione
    25-03-2008
    Messaggi
    440

    Predefinito

    Le graffe possono essere evitate se al loro interno deve essere contenuta una sola istruzione.
    Le tre "=" sono l'operatore di confronto per tipo: strpos ha la funzione primaria di restituire la posizione di una sottostringa all'interno di una stringa, quindi il suo risultato è di tipo numerico oppure false se non viene trovato nessun risultato.
    Con quell'operatore verifico che il valore booleano restituito da strpos() sia false.

    Spero di essere stato chiaro

    Comunque ho preferito consigliarti questa funzione perchè:

    - è più adatta all'uso che ne fai;
    - è più semplice da usare, non richiede la conoscenza delle espressioni regolari;
    - le regex sono inutili in un problemino come questo;
    - eregi() è una funzione piuttosto pesante a livello prestazionale, e lenta.


    Ciao!

    EDIT:
    EDIT: Senza le graffe mi ha dato errore di sintassi, con le graffe funziona perfettamente, grazie programmazioned
    Questo è impossibile, hai forse aggiunto qualcosa? :S
    Ultima modifica di programmazioned : 20-06-2009 alle ore 19.31.36 Motivo: Invertito true e false :D

  5. #5
    Guest

    Predefinito

    Aggiunto qualcosa, si e no, in senso, la funzione non l'ho modificata, però subito dopo quella funzione ho altre funzioni php, probabilmente facevano "interazione", comunque si sei stato chiarissimo, solo che verifichi che il valore sia False e non True. Se è più leggera, credo che sostituiro questo:

    Codice PHP:
    if (eregi('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT']))
    {
    header('Location: http://www.morgensterngdr.altervista.org/IE/'); #Explorer
    }
    con questo:

    Codice PHP:
    if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE') != FALSE)
    {
    header('Location: http://www.morgensterngdr.altervista.org/IE/'); #Explorer
    }
    Bell'uso di strpos programmazione, dopo che mi hai dato questa stringa sono pure andato a cercare, non può sbagliare.

    EDIT: Funziona anche quella che ho fatto io.
    Ultima modifica di morgensterngdr : 20-06-2009 alle ore 19.38.00

Regole di scrittura

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