Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    9

    window.location.replace

    Ciao a tutti.

    Ho questo pezzo di codice che su Windows/Apache/PHP funziona benissimo cioè mi ricarica (UNA VOLTA) la pagina passando i valori width e height

    <?php if ( !isset($width) && !isset($height) ) { ?>

    <SCRIPT language="JavaScript">

    var w = screen.width;
    var h = screen.height;

    window.location.replace("<?php echo $_SERVER['PHP_SELF'] ?>?width=" + w + "&height=" + h);

    </SCRIPT>

    <?php } ?>

    Ma se lo stesso codice lo metto su Ubuntu/Apache/Php NON VA PIU' perchè mi crea un loop e continua a caricare la pagina.

    Non riesco a capire se il problema è la sintassi (ma non credo) o se è Apache/PHP di Ubuntu che non crea le variabili $width e $height e quindi ogni volta mi entra nel ciclo...

    Help!!!!

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Benvenuto sul forum

    Non vedo problemi in javascript... controlla il flusso e le variabili coinvolte in PHP
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    9
    Grazie del benvenuto!

    Il bello è questo... il file in questione .php è lo stesso che utilizzavo in Windows, non ho cambiato una virgola...

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da dadedvd
    Grazie del benvenuto!

    Il bello è questo... il file in questione .php è lo stesso che utilizzavo in Windows, non ho cambiato una virgola...
    Posta il codice che riceve il browser.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  5. #5
    Hmmm, secondo me il problema è che su una delle due configurazioni ha la registerglobals spenta, cosa buona e che dovresti avere anche nell'altra config, ma che fa si che le variabili via get le devi leggere così:

    <?php if (!array_key_exists("width",$_GET) || !array_key_exists("height",$_GET) )

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da Shores
    Hmmm, secondo me il problema è che su una delle due configurazioni ha la registerglobals spenta, cosa buona e che dovresti avere anche nell'altra config, ma che fa si che le variabili via get le devi leggere così:

    <?php if (!array_key_exists("width",$_GET) || !array_key_exists("height",$_GET) )

    Ciao!
    sposto su PHP?
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  7. #7
    Originariamente inviato da br1
    sposto su PHP?
    A mio avviso, si, ma non son io a dover decidere...
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    9
    Grande Shores!!!!

    Il problema era proprio la variabile register_global = Off che dava il problema...
    Non so come non ci avevo pensato prima... per fortuna ci siete voi...

    A priori "incolpavo" Apache...

    Un'ultima cosa, mi puoi spiegare perchè dovrei leggere le variabili in questo modo:

    <?php if (!array_key_exists("width",$_GET) || !array_key_exists("height",$_GET) ) ?

    Grazie ancora!!!

  9. #9
    Semplicemente perché già almeno da 4 anni a questa parte, il team di php SCONSIGLIA vivamente di mantenere la Registerglobals su on, e nella prossima versione addirittura la registerglobals scomparirà, rendendo impossibile attivarla.

    La ragione di questo è che, in realtà (se ci pensi è anche chiaro perché) è MOLTO pericoloso che inserendo un parametro sulla url venga creata una variabile corrispondente nel codice.

    Pensa ad esempio se tu stessi usando la variabile booleana $autenticato per verificare nel tuo codice che l'utente abbia fatto correttamente login: io potrei aggiungere alla url che visito ?autenticato=1 ottenendo così di essere automaticamente autenticato!

    E' ovvio che se nel tuo codice non ci sono difetti, tu inizializzeresti $autenticato a false subito prima di verificare dalla sessione che io abbia fatto login, ma se la regglobals è attiva bastano piccole dimenticanze come quella, assai comune, di non inizializzare una variabile, per aprire ENORMI varchi di sicurezza...

    Invece, con la regglobals a off, qualsiasi cosa io metta sulla url andrebbe dentro all'array $_GET (e ciò che arriva dal submit di una form andrebbe in $_POST), e non potrebbe in NESSUNA maniera pasticciare le variabili disponibili nel tuo applicativo: nell'esempio di prima, $autenticato e $_GET["autenticato"] sono separate, e non c'è nessun modo di pasticciare con $autenticato!

    Insomma, il mio vivissimo consiglio è: rimetti SUBITO in entrambe le config la Registerglobals su OFF, e correggi il tuo codice per leggere i parametri sulla url dalla $_GET e i dati delle form dalla $_POST, farai fare al tuo codice un notevole balzo in avanti quanto a sicurezza!

    (già verificato di non essere vulnerabile alle sql injections? è l'altro difetto di sicurezza assai comune... )

    Ciao!
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    9
    Ho corretto il codice e rimesso ad Off la registerglobals.

    Per ora il problema di sql injections non ce l'ho perchè per questo progetto non è previsto l'uso di alcun DB.
    Grazie ancora.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.