Un Evento Unico. 5 Sale. 27 Interventi. SEO, SOCIAL, E-Commerce, Mobile, Turismo.
CLICCA QUI e SCOPRI DI PIù X Chiudi
 
Forum GT: Condividiamo idee e conoscenza Forum GT: Condividiamo idee e conoscenza


Condividi questo contenuto nei Social Network:
Ti stiamo aspettando: Registrati subito e gratis. Entra a far parte di una delle comunità più attive in Italia. Se hai dimenticato i tuoi dati li puoi recuperare subito.


Vai indietro   Forum per Webmaster: Condividiamo Idee e Conoscenza > Sviluppo e Gestione siti web > Php - Mysql
Benvenuto! Forum Regole FAQ Lista utenti Calendario Segna come letti


Rispondi
 
LinkBack Strumenti di discussione
Vecchio 10-02-10, 15:06   #1 (permalink)
User
 
Data di registrazione: Jun 2007
Ubicazione: Liguria(Sanremo) - Lombardia(Sesto S.G.)
Messaggi: 40
Angry php e tinymce problema di salvataggio dati

Buongiorno a tutti ragazzi e un grazie anticipato a chi saprà aiutarmi.
Premetto che nonostante parecchio tempo che programmo in php mi ritengo ancora un neofita.

Il mio problema è il seguente: quando salvo un testo su db editato con tinymce il 90% delle volte la query non funziona. Ora cerco di spiegarmi meglio.
Questo è il file editor.php che mostra l'editor:
Codice PHP:
<?php
session_start
();
if (isset(
$_SESSION['id_user'])) {
    
$user $_SESSION['id_user'];
}

?>

<head>
  <title>Editor</title>

    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" href="css/editor.css" type="text/css" />

  <script type="text/javascript" src="tinymce/jscripts/tiny_mce.js"></script>
  <script type="text/javascript">
    tinyMCE.init({
    //General options
    mode : "textareas",
    theme : "advanced",
    plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,imagemanager,filemanager",
    // Theme options
    theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
    theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
    theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
    theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,spellchecker,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,blockquote,pagebreak,|,insertfile,insertimage",
    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : false,
    // Example content CSS (should be your site CSS)
    content_css : "css/example.css",
    // Drop lists for link/image/media/template dialogs
    template_external_list_url : "js/template_list.js",
    external_link_list_url : "js/link_list.js",
    external_image_list_url : "js/image_list.js",
    media_external_list_url : "js/media_list.js",
    // Replace values for the template plugin
    template_replace_values : {
    username : "Some User",
    staffid : "991234"
    }
    });
  </script>
</head>
<body>
<div id="wrapper" style="background-image: url(imagesEditor/sfondo.jpg);">
<?php
echo "<input type=\"button\" value=\"Logout\" onclick=\"location.href='logout.php'\">";
?>
  <div id="header">
     <?php
      
if (isset($user)) {
          if(
$user == 1) {
            echo 
"<form method=\"post\" action=\"save.php\"><p><textarea name=\"content\" cols=\"90\" rows=\"20\">";
            include (
'../articolo.php');
            echo 
"</textarea></p></form>";
            }
      } else {
          echo 
"<b>Il Login non &egrave; stato correttamente effettuato,<br /> ripetere l'operazione</b><br /><br />";
          echo 
"<input type=\"button\" value=\"Login\" onclick=\"location.href='login.htm'\">";
      }
       
?>
  </div>
</div>
</body>
</html>
L'articolo arriva all'editor tramite l'
Codice PHP:
include ('../articolo.php'); 
ed è un testo con formattazione html e alcune volte dei link a funzioni javascript. L'action del form come avrete visto è save.php che riporto qui sotto.
Codice PHP:
<?php
session_start
();
require_once(
"../includes/db_conn.php");

if (isset(
$_SESSION['articolo'])) {
    
$indice $_SESSION['articolo'];
}

$contenuto $_POST['content'];

if (
$indice == '0') {
  echo 
"Erorre durante l'inserimento: l'indice è nullo!";
} else {
  
$strSQL "UPDATE `testi` SET `strArticolo` = '";
  
$strSQL .= $contenuto;
  
$strSQL .= "' WHERE `intTestoID` = '";
  
$strSQL .= $indice;
  
$strSQL .= "'";
mysql_query($strSQL);
  if (
mysql_query($strSQL)){
      
$_SESSION['articolo'] = '0';
      echo 
$strSQL;
      
header("location: pagina.php");
  }else{
      echo 
"<br />Erorre durante l'inserimento chiudere il programma e riprovare <br />";
      echo 
$strSQL;
    }
}
?>
Gli errori che si manifestano sono i seguenti:
  1. Nella pagina dell'editor i caratteri speciali vengono sostituiti con � e se si salva in questa condizione il risultato è uno scempio, quindi bisogna pazientemente correggere tutto.
  2. Al momento del salvataggio la query non funziona (Questo chiaramente perchè tra i caratteri speciali c'è l'apice.)
Il mio problema è che sostituisco tutti gli apici (o le ") con il codice relativo (&quot; o simile) mi rimpiazza anche quello che non dovrebbe quindi la chiamata ad eventuali funzioni javascript viene "annullata".
Ora quello che vi chiedo è:
  • posso fare in modo (vedi punto 1) di visualizzare l'articolo senza i problemi riportati sopra?
  • posso convertire solo i caratteri speciali del testo senza intervenire su quelli all'inteno dei tag html?
Sono sicuro che molti di voi riterranno questo mio problema facilmente sormontabile ma per me sta diventando un incubo!
Sono settimane che ci smanetto sopra provando tutto quello che mi è venuto in mente e anche tutto quello che sono riuscito a trovare sulla rete, ma non riesco a venirne a capo.... Please HELP ME!!
__________________
Luc@
Dragon non in linea   Rispondi citando
Vecchio 22-11-11, 15:57   #2 (permalink)
User
 
Data di registrazione: Jun 2009
Messaggi: 27
Ciao non ho mai incluso un editor wyswyg però forse potresti risolvere usando la funzione htmlentities

htmlentities("$_POST['content'])
Emanuelevt non in linea   Rispondi citando
Vecchio 23-11-11, 20:22   #3 (permalink)
Moderatore
 
L'avatar di lucabartoli
 
Data di registrazione: Feb 2010
Ubicazione: Torino
Messaggi: 498
Invia un messaggio tramite Skype a lucabartoli
Quote:
Dragon Visualizza il messaggio
[...]Il mio problema è che sostituisco tutti gli apici (o le ") con il codice relativo (&quot; o simile) mi rimpiazza anche quello che non dovrebbe quindi la chiamata ad eventuali funzioni javascript viene "annullata".[...]
Ciao Dragon,
ti consiglio di usare la funzione
Codice PHP:
$content=mysql_real_escape_string($_POST['content']); 
quando prendi in input il tuo articolo.

In questo modo ai caratteri "problematici" (\x00, \n, \r, \, ', ",\x1a) viene fatto l'escape aggiungendo un backslash e php non li vedrà più come caratteri speciali.

Facci sapere,
Luca
__________________

lucabartoli non in linea   Rispondi citando
Rispondi
Tags: , ,



Strumenti di discussione

Regole di scrittura
Non puoi postare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi allegare file
Non puoi editare i tuoi post

BB code is Attivo
smilies è Attivo
[IMG] il codice è Attivo
Il codice HTML è Disattivato
Trackbacks are Attivo
Pingbacks are Attivo
Refbacks are Disattivato
Vai al forum



Tutti gli orari sono GMT +3. Attualmente sono le 15:21.




Forum GT - © 2004-2009 GT idea S.r.l P.iva 02418200800 - Privacy/Disclaimer

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.