• User Attivo

    In pratica crei una pagina ad un indirizzo(che presumo sia il titolo della guida o altro) e a quell'indirizzo c'è una pagina PHP che si scrive da un form, e ovviamente al salvataggio, la pagina stessa verrà sostituida da quella scritta dall'utente.

    Giusto!?


  • User

    Il sito dovra trattare guide inerenti alle citta da visitare con mappe migliori hotel ecc. ecc. Ho creato una mappa italiana in flash clicchi la regione e si apre un sotto menu con le città, associate ai link guida, vorrei che quando le guide non ci sono la pagina abbia una editor in cui l'utente crea la pagina che si sostituisca a quella da cui si scrive.

    Esempio: io clicco Abbruzzo vado ad abbruo.hmtml/php con editor, scrivo invio e appena ricarico trovo la guida.


  • User Attivo

    Allora, in pratica, devi avere una pagina template li pronta che contenga il textarea/editor e il codice per autoriscriversi:

    [php]
    echo '<form action="" method="POST"><textarea name="testo"></textarea><button type="submit">Salva</button>';

    if(strlen(trim($_POST['testo']))>0)
    {
    $testo = htmlspecialchars($_POST['testo']);
    $fp = fopen('indirizzo_della_pagina.php','w+');
    fwrite($testo,$fp);
    fclose($fp);
    header('Location: indirizzo_della_pagina.php');
    }
    [/php]

    L'unico mio dubbio è che non si possa riscrivere una pagina che è utilizzata in quel momento.


  • User

    Come fa allora wikipedia??? O.o


  • User Attivo

    Wikipedia fa tutto tramite DB, dubito abbia pagine fisiche sugli argomenti/notizie.

    La pagina, per quanto ne so io, potrebbe essere una, e tramite l'url-rewrite e il DB sembra una fisica...

    Però il mio è un dubbio, non so se sia così o meno...dato che non ho mai avuto la necessità di autodistruggere delle pagine! Hehehe

    Comunque, se si può fare, il codice li lo fa.


  • User

    Devi usare sempre un database, all'accesso alla pagina della guida, se esiste la voce nel database la visualizzi e magari fornisci un link per modificarla se necessario, se la guida non esiste, fai visualizzare il form per crearla, che salverà poi il testo immesso nel database.


  • User

    Grazie bonzetto, potresti fornirmi un po di codice??? Sono a digiuno di php e per una pagina non voglio leggere un libro (o faro più avanti). Grazie in anticipo


  • User

    Premesso che dovresti leggerlo subito il libro, altrimenti non capisci una mazza!

    Si premette che tu abbia un database, con una tabella con i seguenti campi:
    -id_pagina
    -nome_pagina(univoco)
    -testo_pagina

    
    
    //dati per autenticarsi
    $db_Server = 'localhost';
    $db_Username = 'username';
    $db_Password = 'password';
    $db_DbDefault = 'db_1';
    
    //funzione per connettersi al database
    function db_connect(){
        global $db_Server, $db_Username, $db_Password, $db_DbDefault;
        global $MYSQL_ERRNO, $MYSQL_ERROR;
    
        $connection = mysql_connect($db_Server, $db_Username, $db_Password);
        if(!$connection){
            $MYSQL_ERRNO = 0;
            $MYSQL_ERROR = "Connessione fallita con il server $db_Server";
            return 0;
            }
        else if(empty($dbname) && !mysql_select_db($db_DbDefault)){
            $MYSQL_ERRNO = mysql_errno();
            $MYSQL_ERROR = mysql_error();
            return 0;
        }        
            
        else return $connection;
    }
    
    function sql_error(){
        global $MYSQL_ERRNO, $MYSQL_ERROR;
        if(empty($MYSQL_ERROR)){
            $MYSQL_ERRNO = mysql_errno();
            $MYSQL_ERROR = mysql_error();
        }
        return "$MYSQL_ERRNO: $MYSQL_ERROR";
          /* magari lanciare una pagina d'errore personalizzata e mandare una mail */
    
    }
    
    $connection = db_connect();
        if(!$connection) die(sql_error());
    
    if(!(isset($_GET['nome']))){
    //abbiamo sbagliato indirizzo vedi tu cosa vuoi fare
    }
    else if(isset($_GET['nome'])){
    $nome = $_GET['nome'];
    $result = mysql_query( "SELECT * FROM t_guide WHERE nome_pagina = '$nome'", $connection );
    [INDENT] 
    if(mysql_num_rows($result) < 1){
    //la pagina nn esiste a database quindi visualizza il form che lascio a te
    }
    else{
    $risultato_query = mysql_fetch_row($result);
    echo $risultato_query[2];
    }
    
    [/INDENT]
    }
    
    
    
    
    
    
    

    Poi devi creare un file .htacess con queste righe

    
    RewriteEngine On
    RewriteRule ^guide/([^/]+).html$ /link_alla_pagina_di_cui_sopra.php?nome=$1
     
    

    Non l'ho provato ma è una buona base da cui partire!!


  • User

    Quindi con sto codice creo una pagina guida.php e poi a Roma Napoli associo il link guida.php?id=id della guida
    giusto??? Se l' id non e presente lui lo crea con quel contenuto giusto???


  • User

    Puoi fare anche come hai detto tu con l'id e li il file htaccess non ti serve più e devi modificare il mio codice.


  • User

    Nooo, io voglio fare come dici tu ma voglio capire cosa ne devo fare di quel codice, cioe creo una pagina edit.php o guida.php giusto??? Adesso come faccio ad associare tutte le guide a questa pagina io pensavo di collegare a roma tipo guida.php?id=2 se era vuota mi conpariva il form per scrivere la guida altrimenti la visualizzavan


  • ModSenior

    Ciao ReferPoint,
    la cosa migliore è studiare un pò php, usare qualcosa di già fatto, o affidarsi a qualcuno che sà farlo, in quanto ad esempio il codice postato da Bonzetto è si funzionante per quel compito specifico, ma non si occupa minimamente della sicurezza sia per quanto riguarda l'autenticazione che per eventuali SQL Inejction, oltre problemi relativi alla configurazione di php (Con magic_quotes su OFF avresti problemi di SQL Inejction in questo caso, e nell'inserimento di apostrofi nelle frasi che mandarebbero in errore la query di inserimento).
    Anche realizzare qualcosa di semplice richiede determinate conoscenze per evitare problemi di vario tipo.
    E sopratutto nei libri non si tratta praticamente mai la sicurezza come si dovrebbe, sopratutto nei libri non recenti.


  • User

    Lo sò però cerca di capire che il lavoro prende abbastanza mente e tempo e un nuovo linguaggio non fa al caso mio dato che tenermi informato e migliorare 15 linguaggi mi rompe abbastanza (pascal tutti i c il mio python assembly, e' veramente ardua)


  • ModSenior

    Capisco che non tutti hanno il tempo, motivo per cui secondo me è molto migliore la scelta di utilizzare uno script completo realizzato da chi ha preso tutte le precauzioni del caso.
    Anche se studiando pochissime cose saresti già in grado di farlo quello che serve a te.
    Perchè rischieresti che chiunque ha un minimo di conoscenza di php riesce a modificarti le pagine, e non è proprio il massimo.


  • User

    Riusciresti??? Non so se è una cosa difficile o che richieda troppo tempo quindi se non puoi non fa alcuna differenza, al massimo mi indichi un altro metodo con qui affrontare il problema....boh...


  • ModSenior

    Intanto bisognerebbe vedere come hai fatto il login e l'iscrizione al sito, per vedere se va bene o meno.


  • User

    In che senso???


  • ModSenior

    Non hai detto di aver fatto la pagina di login ed iscrizione per gli utenti che devono scrivere le pagine?


  • User

    Io ho fatto login e iscrizione ma non solo per chi scrive ma per tutti....lo posto???


  • ModSenior

    Si, perchè dobbiamo vedere come aggiungere i permessi ad esempio di amministratore ad esempio per scrivere pagine.