Editor TinyMCE opslaan in MySql

Status
Niet open voor verdere reacties.

Radio247

Gebruiker
Lid geworden
8 dec 2011
Berichten
31
Hallo;
Ik heb heb website in php met mysql.
De teksten op de site worden dan ook uitgelezen vanuit de mysql.

Het aanpassen van deze teksten ging aldoor met behulp van HTMLAREA.
Helaas is dat nogal verouderd en geeft problemen waardoor ik op zoek ben naar een nieuwe systeem voor online werken in een "beveiligde" omgeving.

Weet iemand een net en gratis alternatief?

Alvast bedankt voor het meedenken.
 
Laatst bewerkt door een moderator:
CKeditor, TinyMCE om maar een paar te noemen. Ik gebruik de eerste.
Was ook niet moeilijk te vinden hoor.
 
Laatst bewerkt:
In mijn cms wordt TinyMCE gebruikt, zit (standaard) ook in bijv. WordPress en Joomla.
Maar CKeditor is in deze software eigenlijk meestal als plugin/module/extension beschikbaar, als alternatief voor TinyMCE.

Deze editors zijn bedoeld voor het bewerken van content, niet om een hele pagina te maken.
 
Gevorderd?

Allereerst hartelijk dank voor de reacties.
Helaas heb ik niet eerder kunnen reageren wegen ziekenhuis opname.

Ik ben aan de slag gegaan met tinymce (SDK versie) maar loop tegen het probleem aan de de wijzigingen die ik maak niet worden opgeslagen.
De gegevens uit de database worden wel in de editor geplaatst, maar het opslaan in de database wil niet lukken.
Iemand enig idee of het ligt aan het uitlezen van de tekst in de tekstverwerker, of heb ik een fout in mijn update script?

Alvast bedankt voor de tip(s)

PHP:
<?php
/* Connect met database */
include '../../connect.php';

	/*Selecteer info */
	$sql = "SELECT * FROM cpl_txts WHERE txtid = '$_GET[id]'";
	$result = mysqli_query($conn, $sql);
	$row = mysqli_fetch_array($result);

if(isset($_POST['savetxt']))
	{
	/* UPDATEN VAN TEKSTEN */
	/* Direct daarna een refresh naar de overzichten pagina */

	$upd = "UPDATE cpl_txts SET text = '$_POST[textarea]' WHERE id = '$_POST[txtid]'";
	$result = mysqli_query($conn, $upd);

	echo "<script>window.location='txts_Review.php'</script>";
	}
	else
	{	
?>

<!DOCTYPE html>
<html>
<head>
  <script src="tinymce/tinymce.min.js" referrerpolicy="origin"></script>
  <script type="text/javascript">
  tinymce.init({
    selector: 'textarea'
  });
  </script>
</head>

<body>
  <form method="post">
    <textarea> <?php echo "$row[text]" ?> </textarea>
  </form>
</body>

<?php
	echo "<input type='submit' name='savetxt' value='Opslaan'> ";
	}
?>
</html>
 
Laatst bewerkt:
Persoonlijk hou ik meer van deze notatie, daarmee voorkom je tekst bugs. Hetzelfde voor de andere queries
PHP:
$upd = "UPDATE cpl_txts SET text = '" . $_POST[textarea] . "' WHERE id = '" . $_POST[txtid] . "'";

$_GET en $_POST lopen door elkaar. Welke wil je gebruiken?
WHERE txtid = $_GET[id] en eindje eronder WHERE id = $_POST[txtid]


Advies om scripts onderaan vlak boven </body> te zetten.
PHP:
<script src="tinymce/tinymce.min.js" referrerpolicy="origin"></script>
<script>
tinymce.init({
  selector: 'textarea'
});
</script>
</body>
</html>
 
Laatst bewerkt:
Ik zie wel een gigantische gevaar voor SQL-injection!!!
Verder zal je key zonder de string-quotes worden herkend als een define.

Ik zal zo een beter voorbeeld posten.
 
Laatst bewerkt:
Zoiets! Niet getest verder, maar wel veiliger.

PHP:
<?php
/* Connect met database */
include '../../connect.php';
 
    /*Selecteer info */
    $sql = "SELECT * FROM cpl_txts WHERE txtid = '".mysqli_real_escape_string($conn,$_GET['id'])."'";
    $result = mysqli_query($conn, $sql);
    if($result) {
            $row = mysqli_fetch_array($result);
         if($_SERVER['REQUEST_METHOD']=="POST") {
                /* UPDATEN VAN TEKSTEN */
                /* Direct daarna een refresh naar de overzichten pagina */
 
            $upd = "UPDATE cpl_txts SET 
            text = '".mysqli_real_escape_string($conn,$_POST['textarea'])."' 
          WHERE id = '".mysqli_real_escape_string($conn,$_POST['txtid'])."'";
            $update = mysqli_query($conn, $upd);
         if($update) {
            header("Location:'txts_Review.php");
        } else {
            echo "Updaten niet gelukt. Error: ".mysqli_error($conn);
        }
    
    }  else {
            echo "Ophalen niet gelukt. Error: ".mysqli_error($conn);
    }
?>
 
<!DOCTYPE html>
<html>
<head>
  <script src="tinymce/tinymce.min.js" referrerpolicy="origin"></script>
  <script type="text/javascript">
  tinymce.init({
    selector: 'textarea'
  });
  </script>
</head>
 
<body>
  <form method="POST">
    <textarea> <?php echo $row['text'] ?> </textarea>
    <input type='submit' name='savetxt' value='Opslaan'>
  </form>
</body>
 

</html>
 
Met mysqli_real_escape_string() worden de meest gevaarlijke karakters ge-escaped.
Vaak wordt hieraan toegevoegd de % en de _ Ook de ` en de ; worden er soms nog bijgezet om het echt helemaal dicht te timmeren :D
 
Met mysqli_real_escape_string() worden de meest gevaarlijke karakters ge-escaped.
Vaak wordt hieraan toegevoegd de % en de _ Ook de ` en de ; worden er soms nog bijgezet om het echt helemaal dicht te timmeren :D

Voor zover ik weet is alles wel veilig met die functie. Je moet er wel voor zorgen dat je de waarde tussen single-quotes zet en dat je de invoer controleert.
Het gebruik van prepared statements is nog beter, maar dat gaat niet lekker bij MySQLi, wel weer in PDO.

Ooit heb ik eens een functie gezien die op diverse typische SQL-functies triggerde, waaronder WHERE. Best een brakke oplossing.
Want dan moet je dus niet als invoer Station Purmerend Overwhere intypen :p
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan