Domanda

In uno dei miei progetti, i miei utenti avrà una parte dedicata del mio sito web ({username} .esempio.org). In questo sottodominio, ho intenzione di permettere loro di cambiare il design facilmente. Ho preso uno sguardo ad alcuni siti online che fa già che, come Tumblr , Posterous e Shopify .

Per quanto riguarda il linguaggio di questa applicazione, ho iniziato con Django, che ho succeedly implementato un "rendering modello basato sul nome URL con predefinito come fallback" (http: //someuser.example. com caricherà i modelli in templates / QualcheUtente / * o nei modelli / generici / * se non viene trovato nel primo). Ma posso esportarla in PHP o giocare! Framework se essi siano più adatti alle mie esigenze.

Il motore di template utilizzato è Jinja2 , dal momento che è così semplice come motore di template Django, facile da imparare, e sicuri, (non Python Coode può (dovrebbe normalmente!) essere eseguito).

Ecco i pro / contro di ogni soluzione che ho trovato. Vorrei davvero apprezzare i vostri pensieri su questo e in che modo si dovrebbe fare, perché. Grazie.

. Nota: Gli utenti avranno una buona conoscenza in HTML / CSS

Modifica Vars (come il colore del titolo, etc)

  • Pro:

    1. Semplice e sicura
  • Contro:

    1. troppo limitato, un utente che desidera personalizzare il suo sito web non sarà in grado di farlo con questa soluzione

Solo caricati CSS

  • Pro:

    1. Semplice da integrare
    2. sicura
  • Contro:

    1. limitata
    2. Dove vengono memorizzati l'immagine dell'utente? (Logo, fondo, un po 'di pendenza, etc)

Consenti all'utente di modificare i modelli (memorizzate nel database)

  • Pro:

    1. I cambiamenti sono più importanti
    2. L'utente è (quasi) libero di fare quello che vuole (attrezzi GA, FeedBurner, etc)
  • Contro:

    1. Da dove hanno messo i file statici (logo, immagine di sfondo, un po 'di effetti speciali (gradiente))?
    2. Modello vengono memorizzati nel database, che richiedono una maggiore richiesta di SQL per ogni pagina visualizzata

Consenti all'utente di modificare i modelli (memorizzati in file)

  • Pro:

    1. I cambiamenti sono più importanti
    2. L'utente è (quasi) libero di fare quello che vuole (attrezzi GA, FeedBurner, etc)
    3. accesso Un FTP può essere attivato, l'utente radicamento nel suo dir Template.
  • Contro:

    1. Lo stesso problema per i file statici

Inoltre, dove mi sono bloccato è su come gestire file statici (immagini, css, js): non riesco a vedere come definire un VirtualHost in Apache (o nginx), che sarebbe richiesta il database per vedere quali utenti appartiene questo URL.

Grazie per il vostro aiuto, apprezzo!

È stato utile?

Soluzione

Ok, risponderò io stesso in base a ciò che ho fatto e la mia ricerca.

Come Steve menzionate, bisogna stare molto attenti a lasciare agli utenti di personalizzare il layout di pagina.

Il rischio deve essere ben valutata!

Nel mio caso, consentendo agli utenti di cambiare la completa HTML / CSS / JS è possibile, in un certo senso, come Posterous o Tumblr fa.

I rischi sono:

  • Un utente potrebbe aggiungere un codice javascript che raccolga autenticazione dei cookie di altri utenti. In questo modo, l'utente potrebbe avere accesso a qualsiasi autenticazione gettone per la parte di amministrazione di ogni altri utenti. Una soluzione semplice è quello di evitare i cookie trasversali tra la parte di amministrazione e il sito web dell'utente.
  • Un utente potrebbe tentare di eseguire codice nel modello, come Python, PHP, Java, Ruby, etc (per quanto riguarda che cosa serve). La soluzione è quella di utilizzare un motore di modello che non consentire del tutto l'uso del codice, solo i tag . Jinja2 per Python è una misura perfetta per questo.

Se queste due condizioni sono ben valutate, l'opzione " Consenti all'utente di modificare i modelli (memorizzate nel database) " è una buona soluzione.

Ma se siete preoccupati per troppi colpi il database potrebbe avere, l'ultima soluzione, alias " Consenti all'utente di modificare i modelli (memorizzati in file) ", potrebbe essere possibile, se:

  • assicurarsi che l'utente non può accedere altra cartella che la directory modello può avere accesso. si può fare così con qualcosa come la creazione di un server FTP che utilizzano il database per l'accesso utente (come ProFTPd con MySQL), e chrooting l'utente nel suo modello di dir. Una quota è molto importante anche per impostare, in modo da evitare l'utente di utilizzare il suo modello dir come dispositivo di stoccaggio;)

Beh, penso che ho coperto tutto il problema. E 'possibile che mi manca qualche punto, se è il caso, si prega di aggiungere un commento o un nuovo post e io completare la risposta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top