Newsgroup: it.comp.www.php
Titolo: pagine dinamiche e URL fisso: risolto?

Visto che la richiesta piu' ricorrente e' quella relativa alla creazione
di pagine dinamiche che potrebbero non essere indicizzate dai motori di
ricerca, ecco uno scriptino che potrebbe tornare utile.
La struttura dell'esempio permette anche agli utenti piu' utonti di
pubblicare le proprie pagine, senza bisogno di conoscere un gran che di
HTML, nel caso in cui ci sia il cliente fissato che vuole farsi le pagine
da solo senza leggere i manuali.
Naturalmente questo e' solo uno scheletro di partenza, che potrete
personalizzare in un mucchio di modi.
Il trucchetto talebano e' quello di impiegare i link simbolici di
Linux/Unix: se su Windows non ce l'avete lamentatevi con Guglielmo
Cancelli, oppure decidetevi a passare a Linux...
Praticamente per ogni pagina inserita nel database viene creato un link
simbolico che, a tutti gli effetti, appare come una pagina nuova (e
diversa), anche se continua a richiamare lo stesso script: quindi un sito
con centinaia di pagine porta via uno spazio insignificante.
Lo script visualizza anche il form per l'inserimento dei dati se viene
richiamato con la query string "nuovo" (es. index.php?nuovo)
Il brutto di questo script e' che richiede di impostare i permessi della
directory a 777 per poter aggiungere i nuovi symlink, ma sicuramente
qualcuno avra' il modo di tappare questo buco.
Tra le cose che sarebbero da aggiungere (e che, forse, prima o poi faro'):
- una password per l'inserimento dati
- un minimo di formattazione del testo
- la possibilita' di inserire anche immagini
- la possibilita' di editare testi gia' inseriti
Divertitevi!
Marco Bernardini
bernama chiocciola libero it
(e spero che Pan non tagli qualche linea di codice...)
<?
### ATTENZIONE: NON FUNZIONA CON WINDOWS ###
error_reporting(E_ALL);
# FORMATO DATABASE creapagine
/*
CREATE TABLE pagine (
  link varchar(8) NOT NULL default '',
  titolo text NOT NULL,
  testo text NOT NULL
) TYPE=MyISAM;
*/
# PARAMETRI PER LINK DATABASE
$dbserver = "127.0.0.1";
$database = "creapagine";
$tabella = "pagine";
$dbusr = "pippo";
$dbpw = "pluto";
# aggiorna il database
if (isset($_POST["BOTTONE"])) {
    $pagina = basename($_SERVER["PHP_SELF"]);
    $link = mysql_connect($dbserver, $dbusr, $dbpw)
        or die("Could not connect");
    mysql_select_db($database, $link)
        or die("Could not select database");
    $Qry = "INSERT into $tabella (link, titolo, testo)
        VALUES ('$url', '$titolo', '$testo')";
    $result = mysql_query($Qry)
        or die("Richiesta fallita:<br>$Qry");
    mysql_close($link);
    $Slink = "$url.php";
    symlink ($pagina, $Slink);
    echo "Creata la pagina <a href=\"$Slink\">$Slink</A>";
    exit;
}
# visualizza il form
if ($QUERY_STRING=="nuovo") {
    echo "<html>\n";
    echo "<head>\n";
    echo "<title>Inserimento nuova pagina</title>\n";
    echo "</head>\n";
    echo "<body>\n";
    echo "<form action=\"" . $_SERVER["PHP_SELF"] . "\" method=POST>\n";
    echo "link: <input name=\"url\"><br>\n";
    echo "titolo: <input name=\"titolo\"><br>\n";
    echo "testo:<br>\n";
    echo "<textarea rows=12 cols=40 name=\"testo\"></textarea><br>\n";
    echo "<input type=submit name=\"BOTTONE\" value=\"INSERISCI\">\n";
    echo "</form>\n";
    echo "</body>\n";
    echo "</html>\n";
    exit;
}
# elabora
$vedi = "";
$link = mysql_connect($dbserver, $dbusr, $dbpw)
        or die("Could not connect");
mysql_select_db($database, $link)
        or die("Could not select database");
$pagina = basename($_SERVER["PHP_SELF"], ".php");
if ($pagina == "index") {
    $vedi .= "INDICE:<br><br>\n";
    $titolo = "Indice";
    $Qry = "SELECT link FROM $tabella";
    $result = mysql_query($Qry) 
        or die("Richiesta fallita:<br>$Qry");
    while ($row = mysql_fetch_array($result)) {
        $vedi .= "<a href=\"";
        $vedi .= $row["link"];
        $vedi .= ".php\">";
        $vedi .= $row["link"];
        $vedi .= "</A><br>\n";
    }
} else {
    $Qry = "SELECT titolo, testo FROM $tabella where link=\"$pagina\"";    
    $result = mysql_query($Qry)
        or die("Richiesta fallita:<br>$Qry");
    while ($row = mysql_fetch_array($result)) {
        $titolo = $row["titolo"];
        $vedi .= "<h1>$titolo</h1>\n";
        $vedi .= nl2br($row["testo"]);
    }
    $paginavera = readlink($_SERVER["SCRIPT_FILENAME"]);
    $vedi .= "<HR>\n<a href=\"$paginavera\">Indice</A><br>\n";
}
mysql_close($link);
# VISUALIZZA
?>
<html>
<head>
<title><?=$titolo?></title>
<body>
<?=$vedi?>
</body>
</html>
-- 
Marco Bernardini
bernama chiocciola libero it

 ricerca, ecco uno scriptino che potrebbe tornare utile.
Se si preferisce approfondire un po' la questione:
http://pro.html.it/articoli/id_219/idcat_28/pro.html
http://freephp.html.it/articoli/view_articolo.asp?id=61

 
http://pro.html.it/articoli/id_219/idcat_28/pro.html
Che all'ultimo paragrafo suggerisce di fare piu' o meno quello che fa
questo script: creare degli indirizzi reali.
La soluzione indicata su freePHP e' un sacco interessante: devo
studiarla con calma...
ciao


studiarla con calma...
Se ne era parlato proprio in questo gruppo mesi fa:
http://groups.google.com/groups?selm=dsl8rtkl48fg9cpkm...@4ax.com
Leonardo
-- 
Time's angles, mages tell, conceal a place
incredible, beyond the mundane mind;
night-shrouded and between the seas of space
dread creatures drift in the ageless winds.