PHP-5.3 attenti allo short tag '<?'

A partire dalla versione 5.3 di PHP lo short tag <? è disabilitato di default. Anche se di primo acchito sembra un problema di poco conto se non trattato con la giusta attenzione potrebbe trasformarsi in un bel guaio. Se infatti una certa porzione di codice non viene correttamente identificata come php questa viene semplicemente consegnata dal webserver, come apache per esempio, al browser che ne fa richiesta così com'è! State già pensando al peggio vero? 

Fate bene... facciamo un esempio con uno snippet preso dalla documentazione ufficiale di MDB2 dove utilizzeremo lo short tag

  1. <?
  2. require_once 'MDB2.php';
  3.  
  4. $dsn = 'pgsql://someuser:apasswd@localhost/thedb';
  5. $options = array(
  6. 'debug' => 2,
  7. 'result_buffering' => false,
  8. );
  9.  
  10. $mdb2 =& MDB2::factory($dsn, $options);
  11. if (PEAR::isError($mdb2)) {
  12. die($mdb2->getMessage());
  13. }
  14.  
  15. // ...
  16.  
  17. $mdb2->disconnect();
  18. ?>

L'utente che si troverà ad aprire dal suo browser la pagina contenente questo codice visualizzerà senza problemi le credenziali di accesso al database utilizzato dalla vostra applicazione.

Il problema può essere facilmente risolto abilitando nuovamente lo short tag nelle impostazioni globali di php nel file php.ini con

  1. short_open_tag On

oppure localmente nel file .htaccess (se vi è consentito) con qualcosa del genere

  1. <IfModule mod_php5.c>
  2. php_value short_open_tag 1
  3. </IfModule>

Il mio consiglio è comunque quello di sostituire lo short tag <? con <?php nelle vostre applicazioni esistenti e di prenderlo come abitudine per le future evitando così spiacevoli inconvenienti in fase di deploy.

Nessun voto finora

commenti

ritratto di marioquark
Last activity:
7 settimane 3 giorni
l'hai già sperimentato? Smile so che non me lo diresti Grin

registered linux user #401781 - machine number #304836 - counter.li.org

ritratto di djandryu
Last activity:
15 settimane 2 giorni
Fortunatamente ho sempre utilizzato <?php da quando ho iniziato a programmare in php... meno male va Grin