Visualizzazione risultati 1 fino 5 di 5

Discussione: Problema editor web

  1. #1
    Guest

    Predefinito Problema editor web

    Salve ho un problema che al momento non so se risponda a php o al lato client. Io posto in questa sezione, nel caso chiedo gentilmente all'amministrazione di spostare il topic dove necessario.

    Allora sto lavorando al mio sito, ancora in locale. Ho un sistema funzionante di registrazione utente in DB, con Login e avvio di pagine protette con sessioni, in php5. Fino a questo punto tutto funzionante, ho controllato stampando a video i cookies con degli echos e pare tutto ok. Ho ovviato ai Warnings classici quando si usano session e headers, usando la funzione nativa ob_start() ecc. ...
    il problema sorge quando ho cercato di inserire in una pagina di prova un editor WYSIWYG. Ho provato prima con uno scritto in javascript, semplice , preso e adattato dal sito html.it, poi ne ho provato uno più tosto , TinyMCE, li inseriti , tutto ok. La pagina php di lettura del form vede il contenuto della textarea o (dell'iframe nel caso del primo editor provato).

    Il problema che mi sta facendo perdere notti insonni è che questi editor mi funzionano perfettamente fuori dal sito, ma quando li inserisco all'interno del mio sito avviene che in seguito a ogni refresh di pagina o ogni volta che vado indietro prima di effettuare il submit del form perdo il testo digitato!!!!!!!! E' una cosa che devo correggere perchè qualsiasi utente potrebbe mandare in aggiornamento la pagina o indietro rischiando di perdere il testo ceh stava digitando.
    Ho smontato tutto il sito , ho provato a isolare gli script... ho provato a semplificare il tutto in un sito di prova con il solo editor e una pagina di login e le sessioni, niente .Pare che l'editor non funzioni con le sessioni php!!! Ovviamente ci deve essere qualsiasi motivo.
    Ora mi chiedevo se qualcuno ha riscontrato i miei stessi problemi quando è andato a inserire un editor di testi nell'area riservata del suo sito, nel caso posto anche il codice in questione.
    Non so se esistono dei settaggi particolari di TinyMCE...nel forum loro non mi ha calcolato nessuna forma di vita...Sono tutti utenti di CMS preconfezionati...

    Ho ricercato in lungo e in largo nel web, ma vedo che tutti usano CMS gia fatti e perciò non ho trovato ancora nessuno a conoscenza di questo problema. magari è una di quelle fesserie che ti passano sotto il naso...
    Ultima modifica di streetheritage : 15-09-2007 alle ore 16.23.06 Motivo: ho dimenticato una cosa

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Io non ho ben capito il tuo problema, però, se fai vedere la pagina dove hai questo problema, potrebbe essere di aiuto.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    ok, forse sarà più chiaro se mi spiego col codice, è che non si tratta di una pagina ...



    questa è la pagina che visualizza l'editor, articoli.php:
    Codice PHP:
    <?php
    if (file_exists("../Conf/session.conf.php")){
    include_once (
    "../Conf/session.conf.php");//funzioni per le sessioni
    } else {
    die (
    "Impossibile aprire la pagina. ");
    }
    controlPageRestricted();//funzione che protegge la pagina.

    ?>

    <script language="javascript" type="text/javascript" src="js/tinymce/jscripts/tiny_mce/tiny_mce.js"></script>
    <script language="javascript" type="text/javascript">
    tinyMCE.init({
    mode : "textareas"
    });
    </script>
    </head>
    <body>

    <form method="post" action="getTextPage.php">
    <textarea name="content" cols="50" rows="15"></textarea>
    <input type="submit" value="Save" />
    </form>


    una stupidissima pagina per vedere se il testo arriva alla pagina dell'action, getTextPage.php:

    Codice PHP:
    <?php
    if (file_exists("../Conf/session.conf.php")){
    include_once (
    "../Conf/session.conf.php");
    } else {
    die (
    "Impossibile aprire la pagina. ");
    }
    controlPageRestricted();
    //stampe a video di test:
    echo $_POST['content'];//test check editor

    echo $_SESSION['user_id'];//test check sessione
    echo $_SESSION['username'];


    ?>
    pagina delle funzioni per la gestione sessioni, session.conf.php:
    Codice PHP:
    <?php
    ini_set
    ('session.use_cookies',1);
    ini_set('session.use_only_cookies',1);
    ob_start();
    session_start();
    function
    controlPageRestricted(){//protegge le pagine riservate
    if (!isset($_SESSION['user_id']) || (!$_SESSION['user_id']) ||
    (!isset(
    $_SESSION['username'])) || (!$_SESSION['username']) ||
    (
    $_SESSION['user_ip']) != ($_SERVER['REMOTE_ADDR'])) {
    header('Location: http://localhost/StreetHeritage.copia/index.php?page=login');
    exit();
    } else {
    return
    true;
    }
    }
    function
    controlPage(){//controlla se l'utente è loggato nelle pagine pubbliche
    if (!isset($_SESSION['user_id']) || (!$_SESSION['user_id']) ||
    (!isset(
    $_SESSION['username'])) || (!$_SESSION['username']) ||
    (
    $_SESSION['user_ip']) != ($_SERVER['REMOTE_ADDR'])){
    return
    false;
    } else {
    return
    true;
    }
    }
    function
    logOut(){
    session_start();
    $_SESSION = array();
    session_destroy();
    echo
    "<div id='logout'><img src='http://localhost/StreetHeritage.copia/Img/logOut.png'/></div>";
    }
    ?>

    Gia che ci siamo, il metodo checkLogin() della classe Login ... se può aiutare, estratto da user.inc.php :
    Codice PHP:
    function checkLogin(){
    $DbTable = $this->DbTable;
    foreach (
    $this->arrData as $key=>$value);
    //creo delle variabili contenenti i dati da inserire nel database
    $this->username = $this->arrData['username'];
    $this->password = sha1($this->arrData['password']);
    $this->strSQL = "SELECT * FROM $DbTable WHERE username = '$this->username' and password = '$this->password' and active = TRUE";
    $this->Database->sqlQuery($this->strSQL);
    $this->Database->numRows();
    if (
    $this->Database->numRows() == 1) {
    $userArray = $this->Database->fetchArray();
    $_SESSION['user_id'] = $userArray['id'];
    $_SESSION['username'] = $userArray['username'];
    $_SESSION['user_ip'] = $_SERVER["REMOTE_ADDR"];

    return
    true;
    } else {
    echo
    "Login errato.<br /> ";
    $array = $this->Database->fetchArray();
    if (
    $array['username'] != $username) echo "Username non corretto.<br />";
    if (
    $array['password'] != $password) echo "Password non corretta.<br /> ";
    $this->Database->close();
    return
    false;
    exit;
    }
    }



    Gli script Articoli.php e getTextPage.php funzionano perfettamente separati dal sito, ovvero senza nessun tipo di inclusione di funzioni e metodi esterni, slegati da login e sessioni. Ovvero : l'editor non perde il testo se si preme il tasto indietro del browser oppure se si preme aggiorna, sempre nel browser (mi riferisco a FF) . Se inserisco l'editor in questo tipo di struttura accade che :
    l'editor è visualizzato e funziona, le sessioni e le pagine protette funzionano, ma quando scrivo nella textarea dell'editor se per caso mando indietro la pagina dal browser o se la aggiorno mi scompare il testo. Non riesco a capire dove stia l'errore, se nella struttura del sito, se devo solo aggiungere qualcosa di DHTML, o forse AJAX... oppure se faccio errori nelle session php o chissà cos'altro.
    Spero possiate aituarmi , vi ringrazio in anticipo.
    Ultima modifica di streetheritage : 16-09-2007 alle ore 17.37.52

  4. #4
    Ospite Guest

    Predefinito

    Non so se ho capito bene...
    Comunque, in getTextPage.php devi salvare il contenuto della textarea in una variabile di sessione:
    Codice PHP:
    $_SESSION['content']=$_POST['content'];
    poi in articoli.php:
    Codice PHP:
    <form method="post" action="getTextPage.php">
    <textarea name="content" cols="50" rows="15"><? echo $_SESSION['content'];?></textarea>
    <input type="submit" value="Save" />
    </form>

  5. #5
    Guest

    Predefinito

    Ti ringrazio Probid è una soluzione cui non avevo pensato!
    E' ok dopo aver effettuato il submit, purtroppo però persiste l'inconveniente che ,per fare un esempio, se un utente va a postare un articolo bello lungo, di cui (aggiungiamo un pò di sfortuna) non ne possiede una copia, se malauguratamente aggiorna o manda indietro prima di premere invio se lo perde tutto.
    Ultima modifica di streetheritage : 16-09-2007 alle ore 18.23.24 Motivo: errore lessicale

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •