martedì 22 dicembre 2009

File upload e Codeigniter

Codeigniter è un framework mvc scritto in php. Per certi versi è molto semplice da usare e molto veloce. L'ho utilizzato per un sito che prima avevo iniziato con cakephp ma poi a forza di scontrarmi con le rigidità di quest'ultimo ho deciso di riscrivere completamente basandomi su codeigniter.

Tra le varie funzioni che mi servivano c'e' quella di caricare dalla stessa form file di tipo immagine e file pdf. La classe File Uploading tra le varie opzioni di configurazione ha anche una proprietà "allowed_types", in prima scrittura credevo fosse sufficiente inserire la stringa: 'gif|jpg|png|zip|pdf|doc|docx|txt' per ottenere la possibilità di caricare file pdf in un campo e immagini nell'altro.
E invece no, Codeigniter continuava a caricare esclusivamente l'immagine, dopo vari tentativi per trovare il problema mi veniva in aito Google: mi trovavo di fronte ad un bug noto, la soluzione è scrivere i tipi di file non immagine per primi ovvero 'zip|pdf|doc|docx|txt|gif|jpg|png'.

martedì 15 dicembre 2009

Io odio il javascript

Cose da non fare mai: programmare la consegna di un lavoro di venerdì.

Da circa un mese lavoro sul sito catalogo fatto per un sistema legato alla raccolta punti.
Giovedì arriva la notizia che verrà presentato il successivo sabato mattina, rimangono quindi due giorni per portarlo ad uno stato presentabile, il lavoro è ad un buon punto quindi nessuna grande preoccupazione.
Il sito è spaccato in due parti, la sezione di presentazione e quella relativa alle regole e informazioni su un server, la parte relativa all'acquisto su un altro server. Due tecnologie completamente diverse.
Venerdì sera ultimi test tutto funziona. Nessuno pensa di controllare con Internet Explorer 8.
Sabato mattina ovviamente il sito viene fatto vedere e Internet Explorer 8 rende inutilizzabile la sezione del preventivo.

Ieri si comincia il debug.
Il link avviene tramite la chiamata di un javascript... sostituito il codice usando il selettore di jquery: non cambia nulla.
Ci sono due definizioni della stessa funzione, evidentemente una è stata dimenticata nelle varie release, eliminata: nessun cambiamento.

Provo con "strumenti di sviluppo" ottima funzione di IE8, nel debug IE8 si blocca spesso, ma eccolo il problema.

Una funzione si occupava di prendere dei valori copiarli in campi hidden e poi lanciava il submit del modulo, due campi hidden avevano i seguenti due id: idDS e idds. Firefox li trattava come due campi differenti mentre IE8 li considerava uguali andando a sovrascrivere i dati.

Io odio il javascript.