2010-01-26 11 views
8

Sto scrivendo una web app utilizzando PHP, e in esecuzione in diverse situazioni in cui ho bisogno di codice simile sul server e browser. Ad esempio:Stesso codice nel browser/server

  • Desidero convalidare l'input dell'utente e generare gli stessi messaggi di errore su entrambi i lati.
  • voglio formattare i dati utilizzando alcune regole (ad esempio, se un dato campo è minore di 1, mostra con due cifre decimali, tuttavia nessuno), e farlo apparire la stessa indipendentemente dal lato rende.

Sembra che questo dovrebbe essere un problema comune, in quanto le persone si spostano più logica dal server al browser. Ma ci sono schemi o librerie comuni per gestirli (in particolare per PHP)?

+3

Buona domanda, anche se in senso stretto, ** spostamento ** la convalida dal server al browser è una cattiva idea per sicurezza. Meglio "pre-validare" nel browser (per un feedback immediato dell'utente) e ri-validare sul server (per sicurezza). –

+0

Assolutamente - lo voglio in entrambi i posti. –

risposta

3

Una soluzione potrebbe essere quella di utilizzare server-side JavaScript. Saresti in grado di condividere enormi pezzi di codice allora.

+0

+1 per SSJS. http://www.jaxer.org/ è una bella .. – RameshVel

1

Una soluzione parziale è AJAX. Ad esempio, scrivi il codice di convalida una volta sul server e lascia che i tuoi moduli comunichino con il server per vedere se un input è valido e chiedi un messaggio di errore da mostrare se non lo è.

+0

sebbene (a meno che tu stia solo parlando di condividere il codice ma continui a fare la convalida su entrambi i lati), ciò presuppone che JavaScript sia abilitato/disponibile – AJM

0

json_encode e json_decode sono un ottimo inizio: la stessa fonte di dati disponibile in array php e oggetti json come richiesto.

i dati json_encoded possono essere serviti tramite tag <script> o ajax come meglio credi.

2

Interessante domanda! Per quanto ne so ci sono 2 opzioni per PHP:

  • Usare Ajax per fare la validazione dei form, quindi tutto avviene sul server.
  • c'è questo sforzo per portare funzioni PHP di JS, che dovrebbe, almeno facilitare il porting: http://phpjs.org/

In Java tuttavia, è possibile eseguire Javascript con Rhino.

Le altre cose che mi vengono in mente sono brutti hack con le applet Flash o Java, o comporta un quadro come un pigiama.

0

Convalida veloce lato client (come il modello di corrispondenza, data & correttezza del numero) e controllo di sicurezza sul lato server.
Inoltre, è possibile utilizzare AJAX per eseguire la convalida sul lato server, ma in questo modo è possibile avere una differenza di risposta tra l'input dell'utente e il risultato della convalida. Quindi usa JavaScript per una convalida veloce e di base e fai uno pesante con PHP.

0

Si potrebbe utilizzare per eseguire http://phpjs.org/ si codice php sul lato client. Questo funziona per la maggior parte delle funzioni in PHP.

2

Si può provare a utilizzare la lingua haxe. Potrebbe essere tradotto in js/php e anche in actionscript (flash).