sto riscrivendo una nuova versione del mio CMS flat (uso di file invece del database), e affiancato al CMS dovrà uscire un progetto che richiama le linee die SQLite, ovvero utilizzare la stessa sintassi di MySQL per poter scrivere nei file.
In questo caso il delimitatore, sarebbe la fine di ogni tabella, e il suo valore, sarebbe una stringa che rappresenta i vari valori nelle varie colonne.
quindi nel caso reale di applicazione:
$str = " ... ".alg("[/T=var]")." ... ".alg("[/T=var1]")." ... ".alg("[/T=var2]")." ... ".alg("[/T=var3]")." ".alg("[/T=var4]");
dove alg restituisce un numero.
Perchè non inserire un'altro delmitatore (magari a destra e sinistra del value?), semplicemente per non aumentare la lunghezza del file da leggere.
Perchè utilizzare alg? perchè alg è una funzione che genera un hash insieme ad un salt, generato alla prima installazione, e quindi è come se fosse protetto da una possibile Injection, in quanto se l'utente avrebbe saputo il nome della tabella avrebbe potuto mandare in panne lo script.
Per essere ancora più chiaro su come funziona lo script:
questa dovrebbe essere la sintassi di un file tipo del DATABASE
codice:
name1: |||||||| name=0,surname=1,age=2 ||||||||
name2: |||||||| name=0,surname=1,age=2 ||||||||
/*--*/
asd[/F]asd[/F]asd[/F][/R]
asd[/F]asd[/F]asd[/F][/R]
asd[/F]asd[/F]asd[/F][/R]
[/T=name1]
asd[/F]asd[/F]asd[/F][/R]
asd[/F]asd[/F]asd[/F][/R]
asd[/F]asd[/F]asd[/F][/R]
[/T=name2]
name1 e name2 sono ovviamente i nomi di due tabelle strutturate allo stesso modo.
prima di " /*--*/ " ci sono due righe che mi restituiscono gli id delle colonne con i rispettivi nomi appartenenti a tale tabella
dopo il " /*--*/ " c'è il database vero. [/F] indica la fine di un campo, [/R] la fine di una riga
[/T=name1] la fine di una tabella
Ovviamente, il file sarà da pensare come scritto su unica riga, perchè la riga è vista in termini di byte come un carattere, e quindi potrebbe ancora appesantire di più
I delimitatori speciali come "|||||||| [/F] [/R] [/T=*]" sono tutti da pensare come hash, per come già detto sopra scongiurare eventuali Injection.
Dopo aver scritto tutto questo papiello, non mi dire di lasciar perdere e di passare a MySQL
thx