SMsoft – informatica e dintorni

varie su OSX, GNU/Linux e l'Open Source

PHP 5.3 e $_REQUEST['PHPSESSID'] vuoto

Usando PHP 5.3, avrete notato che $_REQUEST['PHPSESSID'] è vuoto.
A differenza delle precedenti versioni di PHP, per ragioni di sicurezza, $_COOKIE non viene importato in $_REQUEST e quindi non è disponibile il PHPSESSID.

Per ovviare, si può associare il contenuto di $_COOKIE['PHPSESSID'] a $_REQUEST['PHPSESSID'] nel caso sia vuoto, inserendo dopo il “session_start()”:

 php |  copy code |? 
1
$_REQUEST['PHPSESSID'] = (!isset($_REQUEST['PHPSESSID']))?$_COOKIE['PHPSESSID']:$_REQUEST['PHPSESSID'];

In alternativa si può modificare il funzionamento di PHP, editando il file di configurazione /etc/php5/apache2/php.ini ed in particolare la nuova direttiva request_order

enjoy!

Menu html/css/js che scompare sotto i video di youtube o video in flash

Se avete nel sito un menu a discesa e subito sotto un video con codice embed di youtube o comunque in flash, avrete notato che il menu scompare sotto il video che praticamente lo copre. Cercando di modificare le proprietà CSS dei div/li/etc che compongono il menu in modo da impostare un ordine di visualizzazione più alto (z-index), purtroppo non si ottiene nessun risultato.
L’unico modo per far si che il menù sia sovrapposto al video youtube o Flash è modificare il codice che visualizza il player ed in particolare inserendo dopo il TAG <object >:

 html |  copy code |? 
1

e nel TAG <embed …>:
 html |  copy code |? 
1
wmode="transparent"

Ad esempio, se il codice embed del player è:

 html |  copy code |? 
1

2
  
3
  
4
  
5
  
6
    allowfullscreen="true" type="application/x-shockwave-flash" 
7
    src="...">
8
  
9

deve diventare:
 html |  copy code |? 
01

02
  
03
  
04
  
05
  
06
  
07
    allowfullscreen="true" type="application/x-shockwave-flash" 
08
    src="..." wmode="transparent">
09
  
10

vim: estendere il matching % per HTML, LaTeX, ed altri linguaggi

Per creare le mie applicazioni web, mi affido sempre al famoso vim.
Chi usa vim come editor per linguaggi di programmazione (dal C al PHP e via dicendo), sicuramente apprezza la funzionalità di matching che può essere avviata con il carattere % (ad esempio ci si posiziona su una parentesi, si preme il tasto % ed automaticamente il cursore si sposta sulla parentesi di apertura/chiusura del blocco).
C’è una comoda estensione di vim che si chiama matchit che espande tale funzionalità ad altri linguaggi, come HTML, XML, LaTeX, etc.
L’installazione è molto semplice. Ipotizzando di usare vim 6 o 7, basterà accedere alla cartella personale di vim:

 bash |  copy code |? 
1
cd ~/.vim

scaricare l’ultima versione di matchit:
 bash |  copy code |? 
1
wget http://www.vim.org/scripts/download_script.php?src_id=8196 -O matchit.zip

decomprimerla:
 bash |  copy code |? 
1
unzip matchit.zip

a questo punto avviare vim con:
 bash |  copy code |? 
1
vi

e digitare:
 bash |  copy code |? 
1
:helptags ~/.vim/doc 

per ricostruire il tag-file.
Infine inserire nel vostro file vimrc:
 bash |  copy code |? 
1
vi ~/.vimrc

le seguenti righe:
source ~/.vim/plugin/matchit.vim
filetype plugin on

A questo punto potete aprire un qualsiasi file html, posizionarvi su un TAG (es body) e premendo il tasto % verrete automaticamente “portati” sul relativo TAG di chiusura (es /body)

enjoy

Variabile di variabile in javascript

Se sviluppate il PHP sicuramente vi sarà capitato di usare una variabile di variabile, ovvero una variabile in cui il nome stesso è una variabile. Per quelli che non sanno di cosa parlo, faccio un veloce esempio:

 php |  copy code |? 
1
$var ='numero';
2
$numero =15;
3
echo $$var;
4

produrrà come risultato 15, ovvero il contenuto della variabile il cui nome è contenuto in $var.
Va da se che per usare una variabile di variabile, basta richiamarla con il $$ piuttosto che con il classico $

L’uso di variabili di variabili è utile ad esempio quando si lavora con un ciclo (for, while). Ipotizziamo di avere sei variabili che si chiamano $num1, $num2…$num6 e di volerne leggere il contenuto con un ciclo for:

 php |  copy code |? 
1
for ($i=1;$i<7;$i++){
2
    $tmp = 'num'+$i;
3
    echo $$tmp;
4
}

In questo articolo però non voglio parlarvi in modo specifico di cosa è e come si usa una variabile di variabile, piuttosto di come si crea/usa una variabile di variabile in javascript.
Ipotizziamo di avere sei variabili javascript che si chiamano num1, num2…num6 e di volerne leggere il contenuto con un ciclo for, dovremo scrivere:

 javascript |  copy code |? 
1
for (i=1;i<7;i++){
2
    tmp = 'num'+i;
3
    alert(eval(tmp));
4
}

Semplice, no?

enjoy!

Mysql e duplicate entry

Provando ad effettuare una query di INSERT in una tabella in cui sono definite delle chiavi uniche, è possibile che MySQL visualizzi il classico errore di “duplicate entry” relativo al tentativo di inserire un record che contiene dei campi già presenti in altri record del database.
In questo caso, basta modificare la query:
INSERT INTO table VALUES ()
con
INSERT IGNORE INTO table VALUES ()

A vista d’occhio avrete notato che il tutto ruota intorno alla clausola IGNORE che va aggiunta tra INSERT ed INTO

enjoy

Testare la grafica di un sito su varie versioni di Internet Explorer

Sicuramente vi sarete accorti che utilizzo un Mac (per molte ragioni che non sto qui ad indicare), ma quando rilascio un sito o un’applicazione web è necessario testare il tutto anche con Internet Explorer. Per farlo utilizzo una macchina virtuale con windows gestita dall’ottimo VirtualBox di Oracle e l’applicativo IETester che consente di visualizzare il sito avendo il rendering delle varie versione di Internet Explorer disponibili.

enjoy

Page optimized by WP Minify WordPress Plugin