Generatore di pagine html in php

Fxxxx

Utente Attivo
17 Set 2011
63
0
0
Ciao a tutti sono nuovo di questo forum e comincio subito con una domanda...
Vorrei creare un form in html (e qui lo so fare...) in cui ogni utente (o solo utenti autenticati attraverso un login php) possa inserire del testo e un titolo. Cliccando il bottone invia (del form) agisce lo script php che crea una pagina html che si intitola con il titolo inserito dall'utente e avente come testo il testo inserito dall'utente...
Come posso fare ?
 

Fxxxx

Utente Attivo
17 Set 2011
63
0
0
Ok ma io voglio che ogni utente sia un editore del sito... che possa creare pagine html... se creo un database google non mi riconosce le pagine create dagli utenti....
capito?
 

Fxxxx

Utente Attivo
17 Set 2011
63
0
0
Ok bene ma come faccio con i database... mi potresti scrivere un po' di codice ?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Immagino che tu abbia un sistema di registrazione degli utenti, ed essi siano registrati in un database. Se ancora non ce l'hai, crealo. Sul Web (e su Mr. Webmaster in particolare) trovi qualche buon tutorial.

Poi crei una tabella pages con un campo ID che si autoincrementa, l'ID dell'utente proprietario della pagina un campo in cui salvare lo slug della pagina (il nome per i motori di ricerca, ad esempio about per la pagina http://www.example.com/john/about.html) e il contenuto della pagina.

Per ogni utente metti a disposizione un'area in cui creare, modificare e cancellare le proprie pagine.

Poi crei uno script chiamato ad esempio page.php che accetta come parametri GET lo username dell'utente e lo slug della pagina. Quindi crei una regola di rewrite simile a questa:
Codice:
RewriteEngine On
RewriteRule ^([a-zA-Z0-9])/([a-zA-Z0-9\-])\.html$ page.php?user=$1&slug=$2 [L]
 

Fxxxx

Utente Attivo
17 Set 2011
63
0
0
Grazie ma mi hai complicato le cose...
io volevo semplicemente che ogni utente possa creare una pagine... senza che poi sia modificabile...
Basta che ci sia testo e titolo... come faccio ?
Riesci ad essere un po' più chiaro perché sono nuovo di php e voglio capirne le potenzialità
ciao e ancora grazie
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Se ogni utente può creare una pagina allora puoi benissimo aggiungere due campi alla tabella utenti contenenti il titolo e il contenuto della sua pagina. Quando la crea riempi quei campi e poi crei tramite mod_rewrite un URL del tipo http://www.example.com/john.html che visualizza la pagina dell'utente john.
 

Fxxxx

Utente Attivo
17 Set 2011
63
0
0
Io non voglio che ogni utente crei la sua pagina ma ogni visitatore può creare una pagina tipo: il nuovo film, come scaricare da internet.... comunque non cambia molto...
Per ricapitolare... Io creo un form in html che avvia uno script in php che inserisce nel database (che ho precedentemente creato) il titolo e il testo della pagina...
Poi devo creare un pagina php... come faccio? Cosa ci metto dentro? come faccio a richiamare dal database il contenuto richiesto?

Quindi ogni volta che un qualsiasi visitatore visita la pagina creata... automaticamente viene caricata la pagina creata in php che prende dal database il titolo e il testo relativo alla pagine che viene richiesta...
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Dovresti strutturare la cosa più o meno così:
PHP:
<?php
$db = new PDO('mysql:host=localhost;dbname=test', 'root', 'password');

if (isset($_GET['slug'])) {
    $stm = $db->prepare('SELECT * FROM pages WHERE slug = ?');
    $stm->execute($_GET['slug']);

    if ($stm->rowCount() == 0) {
        header('HTTP/1.1 404 Not Found');
        die('La pagina richiesta non esiste.');
    }

    $data = $stm->fetch(PDO::FETCH_ASSOC);

    echo <<<EOF
<h1>{$data['title']}</h1>
{$data['contents']}
EOF;
}
else {
    die('Non hai specificato il nome della pagina.');
}
 

Fxxxx

Utente Attivo
17 Set 2011
63
0
0
Ok questo va messo come faile collegato al form?
E poi per la pagina che dovrebbe leggere i dati come faccio...?
Ciao
 

Fxxxx

Utente Attivo
17 Set 2011
63
0
0
Il titolo deve essere scritto "title" come hai messo nello script dentro il gag h1 e per il testo "contents" ?
Per lo slug le alternative sono due: o le pagine create con un indirizzo numerico progressivo (mi puoi dire che funzione di php posso utilizzare?) o gli metto il testo inserito nel campo titolo (come posso fare?)
ciao
 
Invece di creare una pagina HTML per ogni utente potresti creare un database in cui salvi i dati inseriti da ogni utente e una sola pagina PHP in cui visualizzi la pagina dell'utente specificato.
Si infatti, potresti registrarti in un hosting che offre spazio web, li ci sarà un database, crei tutti i file che vuoi..
Una cose del genere la puoi fare anche con i CMS che comprendono tutte le funzioni che
un sito/portale deve avere come l'area utenti.
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
Roma
alessandro1997.netsons.org
Il campo puoi chiamarlo come vuoi, a patto che poi modifichi anche lo script che legge i dati.

Per creare lo slug partendo dal titolo io di solito uso questo snippet:
PHP:
$titolo = 'La mia pagina';
$slug = str_replace(' ', '-', $titolo);
$slug = preg_replace('/[^a-zA-Z0-9\-]/', '', $titolo);

// visualizza la-mia-pagina
echo $titolo;
 

Fxxxx

Utente Attivo
17 Set 2011
63
0
0
1)non ho capito: il codice che hai scritto dove deve essere messo?
2)e poi come faccio a integrare lo slug nel database?
3)cosa significa
echo $titolo;
tu mi dici che serve per visualizzare la pagina... ma deve essere abbinato allo script per creale lo slug?
 

Fxxxx

Utente Attivo
17 Set 2011
63
0
0
e quello che tu chiami risultato (che devo inserire nel database) è $slug vero?
La seconda e terza riga servono per trasformare gli spazi in - e le maiuscole in minuscole ?
 
Autore Discussioni simili Forum Risposte Data
E PHP 3
A PHP 4
L PHP 1
Web Designer Discussioni Varie 1
C PHP 1