sistema multi-lingua e sicurezza con php

2

Sto codificando un nuovo sito. È come StackExchange, un sito sociale e un blog. Cerco di creare un sito multilingue, ma non riesco a decidere come farlo.

Devo usare i moduli, quindi devo usare OOP, pur avendo un'interfaccia multilingua. Come lo posso fare?

Ci sono due opzioni di lingua (turco e inglese), utilizzate continuamente (esempio: pagina iniziale ecc.) o non (alcuni errori, ad esempio: "inserisci la tua posta" ecc.)

  1. Posso usare una classe e uso la matrice (per uso continuo),

  2. Posso usare una classe e una pagina XML (per errori),

oppure posso avere una classe e tre pagine di lingua: turco, inglese ed errori.

Quale offre le migliori prestazioni?

Altro problema è la sicurezza php-mysql.

Sto usando mysqli. Io uso mysqli_real_escape_string per bloccare i caratteri HTML, ma non è abbastanza. Quindi uso anche le stored procedure.

Che altro posso fare? Qual è il tuo consiglio?

    
posta Ayro 11.05.2011 - 11:43
fonte

2 risposte

1

Da quanto ho capito, hai due domande:

What to use to store language strings: XML or PHP arrays? Which one has better performances?

Gli array sono letti direttamente dal codice sorgente. XML deve essere prima analizzato, quindi trasformato nel tuo caso in un array. Ciò significa che l'approccio dell'array è più rapido . Inoltre, la serializzazione è un altro approccio che ti offrirà prestazioni migliori di XML.

Ma questo importa? In tutti i casi devi mettere in cache quelle cose . In altre parole, trascorrerai per esempio 800 ms. invece di 45 ms. caricamento della prima pagina all'avvio del server, ma in seguito ogni altra pagina trascorrerà 40 ms., indipendentemente da dove e in che modo vengono archiviate le stringhe della lingua.

Ciò che conta, d'altra parte, è se puoi facilmente modificare quelle stringhe . Personalmente, preferisco cambiare XML a mano, piuttosto che modificare il codice sorgente PHP. Ci sono anche considerazioni sulla sicurezza da prendere in considerazione. Inoltre, cosa succede se un giorno ti piacerebbe creare uno strumento interattivo che ti permetta di aggiungere e rimuovere lingue al volo attraverso l'interfaccia web? Con XML, è abbastanza facile. Ma non così facile se usi direttamente gli array.

I'm using mysqli. Of course I block html characters and I use mysqli_real_escape_string. But they are not enough.So, I use stored procedure.

Scopri come utilizzare query parametrizzate . Seriamente, è l'unico modo per evitare SQL Injection, e in tutti i casi deve essere obbligatorio sapere che prima di iniziare a codificare qualsiasi sito web.

Il PDO è anche tuo amico ed evita di dipendere per sempre dalla scelta del server SQL.

    
risposta data 11.05.2011 - 13:13
fonte
0

Per la sicurezza php / mysql, non è necessario bloccare i caratteri html (vedi questo sito Web bloccarli?), basta sfuggire ad essi quando si esegue l'output in una pagina html utilizzando htmlspecialchars .

Inoltre, usa le istruzioni preparate anziché mysqli_real_escape_string . Non mi piacciono le dichiarazioni preparate da mysqli, quindi preferisco pdo su mysqli , ma è solo questione di preferenze personali.

In questa altra domanda troverai molti altri commenti sulla sicurezza in un'applicazione web: Cosa deve sapere uno sviluppatore prima di creare un sito Web pubblico?

    
risposta data 11.05.2011 - 13:14
fonte

Leggi altre domande sui tag