login  Naam:   Wachtwoord: 
Registreer je!
 Forum

WYSIWGY (Opgelost)

Offline ArcanA - 03/01/2009 19:05 (laatste wijziging 03/01/2009 19:26)
Avatar van ArcanAPHP beginner Hallo,

Ik heb een soort WYSIWYG editor gemaakt..

Ik heb wel een probleem.
De leden kunnen dus berichtjes naar elkaar verzenden enzovoort, Zodra ze hun berichtje verzonden hebben komt het dus in de database met de codes van de WYSIWYG.

Als de ontvanger het bericht leest dat de verzender verstuur heeft word het gewoon opgehaald uit de database, alleen dat ze enkel de codes zo zoals ze in de database worden gepompt..

Vb:
Ik zie geen VET
Maar de code ervan..

Versturen
  1. elseif($_GET['actie'] == 'versturen')
  2. {
  3. if($_SERVER['REQUEST_METHOD'] == 'POST')
  4. {
  5. $sql = "SELECT * FROM gebruikers WHERE login='".$_POST['ontvanger']."'";
  6. $query = mysql_query($sql) or die(mysql_error());
  7. if(empty($_POST['ontvanger']))
  8. {
  9. echo 'Geen ontvanger ingevuld.';
  10. }
  11. elseif(empty($_POST['onderwerp']))
  12. {
  13. echo 'Geen onderwerp ingevuld.';
  14. }
  15. elseif(empty($_POST['bericht']))
  16. {
  17. echo 'Geen bericht ingevuld.';
  18. }
  19. elseif(mysql_num_rows($query) == 0)
  20. {
  21. echo 'Ontvanger bestaat niet.';
  22. }
  23. else
  24. {
  25. $array = mysql_fetch_assoc($query);
  26. $sql2 = "INSERT INTO berichten (afzender_id,ontvanger_id,onderwerp,bericht,gelezen,tijd,map) VALUES ('".$id."','".$array['id']."','".mysql_real_escape_string($_POST['onderwerp'])."','".mysql_real_escape_string(RemoveXSS($_POST['bericht']))."','0','".time()."','0')";
  27. $query2 = mysql_query($sql2);
  28. echo 'Bericht verstuurd.';
  29. }
  30. }



bericht bekijken:

  1. elseif($_GET['actie'] == 'bekijken' and is_numeric($_GET['id']))
  2. {
  3. $sql = "SELECT * FROM berichten WHERE id ='".$_GET['id']."' AND ontvanger_id='".$id."'";
  4. $query = mysql_query($sql) or die(mysql_error());
  5. if(mysql_num_rows($query) == 0)
  6. {
  7. echo 'Dit bericht is niet van jou.';
  8. }
  9. else
  10. {
  11. $array = mysql_fetch_assoc($query);
  12. if($array['gelezen'] == 0)
  13. {
  14. $sql2 = "UPDATE berichten SET gelezen='1' WHERE id='".$_GET['id']."'";
  15. $query2 = mysql_query($sql2);
  16. }
  17. echo '<table width="100%" border="1">
  18. <tr>
  19. <td colspan="2">Bericht bekijken</td>
  20. </tr>
  21. <tr>
  22. <td width="50%">Afzender</td>
  23. <td><a href="profiel.php?id='.$array['afzender_id'].'">'.gebruiker($array['afzender_id']).'</a></td>
  24. </tr>
  25. <tr>
  26. <td>Onderwerp</td>
  27. <td>'.$array['onderwerp'].'</td>
  28. </tr>
  29. <tr>
  30. <td colspan="2">'.$array['bericht'].'</td>
  31. </tr>
  32. <tr>
  33. <td colspan="2"><a href="berichten.php?map='.$array['map'].'">Terug naar map</a> | <a href="berichten.php?actie=versturen&id='.$array['id'].'">Beantwoorden</a> | <a href="berichten.php?actie=verwijderen&id='.$array['id'].'">Verwijderen</a></td>
  34. </tr>
  35. </table>';
  36. }
  37. }
  38. else
  39. {



Weten jullie meer?

Mvg,
ArcanA

7 antwoorden

Gesponsorde links
Offline Martijn - 03/01/2009 19:30
Avatar van Martijn Crew PHP wat doet die RemoveXSS()?
Offline ArcanA - 03/01/2009 20:07 (laatste wijziging 03/01/2009 23:34)
Avatar van ArcanA PHP beginner
  1. function RemoveXSS($val)
  2. {
  3. $val = preg_replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/', '', $val);
  4.  
  5. $search = 'abcdefghijklmnopqrstuvwxyz';
  6. $search .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  7. $search .= '1234567890!@#$%^&*()';
  8. $search .= '~`";:?+/={}[]-_|\'\\';
  9. for ($i = 0; $i < strlen($search); $i++) {
  10.  
  11. $val = preg_replace('/(&#[xX]0{0,8}'.dechex(ord($search[$i])).';?)/i', $search[$i], $val); // with a ;
  12. $val = preg_replace('/(&#0{0,8}'.ord($search[$i]).';?)/', $search[$i], $val); // with a ;
  13. }
  14.  
  15. $ra1 = Array('javascript', 'vbscript', 'expression', 'applet', 'meta', 'xml', 'blink', 'link', 'style', 'script', 'embed', 'object', 'iframe', 'frame', 'frameset', 'ilayer', 'layer', 'bgsound', 'title', 'base');
  16. $ra2 = Array('onabort', 'onactivate', 'onafterprint', 'onafterupdate', 'onbeforeactivate', 'onbeforecopy', 'onbeforecut', 'onbeforedeactivate', 'onbeforeeditfocus', 'onbeforepaste', 'onbeforeprint', 'onbeforeunload', 'onbeforeupdate', 'onblur', 'onbounce', 'oncellchange', 'onchange', 'onclick', 'oncontextmenu', 'oncontrolselect', 'oncopy', 'oncut', 'ondataavailable', 'ondatasetchanged', 'ondatasetcomplete', 'ondblclick', 'ondeactivate', 'ondrag', 'ondragend', 'ondragenter', 'ondragleave', 'ondragover', 'ondragstart', 'ondrop', 'onerror', 'onerrorupdate', 'onfilterchange', 'onfinish', 'onfocus', 'onfocusin', 'onfocusout', 'onhelp', 'onkeydown', 'onkeypress', 'onkeyup', 'onlayoutcomplete', 'onload', 'onlosecapture', 'onmousedown', 'onmouseenter', 'onmouseleave', 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', 'onmousewheel', 'onmove', 'onmoveend', 'onmovestart', 'onpaste', 'onpropertychange', 'onreadystatechange', 'onreset', 'onresize', 'onresizeend', 'onresizestart', 'onrowenter', 'onrowexit', 'onrowsdelete', 'onrowsinserted', 'onscroll', 'onselect', 'onselectionchange', 'onselectstart', 'onstart', 'onstop', 'onsubmit', 'onunload');
  17. $ra = array_merge($ra1, $ra2);
  18.  
  19. $found = true;
  20. while ($found == true) {
  21. $val_before = $val;
  22. for ($i = 0; $i < sizeof($ra); $i++) {
  23. $pattern = '/';
  24. for ($j = 0; $j < strlen($ra[$i]); $j++) {
  25. if ($j > 0) {
  26. $pattern .= '(';
  27. $pattern .= '(&#[xX]0{0,8}([9ab]);)';
  28. $pattern .= '|';
  29. $pattern .= '|(&#0{0,8}([9|10|13]);)';
  30. $pattern .= ')*';
  31. }
  32. $pattern .= $ra[$i][$j];
  33. }
  34. $pattern .= '/i';
  35. $replacement = substr($ra[$i], 0, 2).'<x>'.substr($ra[$i], 2);
  36. $val = preg_replace($pattern, $replacement, $val);
  37. if ($val_before == $val) {
  38. $found = false;
  39. }
  40. }
  41. }
  42. return $val;
  43. }
Offline Sander1993 - 03/01/2009 20:18
Avatar van Sander1993 PHP interesse ik heb sowieso al 1 fout gevonden:
  1. $search .= '~`";:?+/={}[]-_|\'\\';

moet worden:
  1. $search .= '~`";:?+/={}[]-_|\'\';

of
  1. $search .= '~`";:?+/={}[]-_|\'\\'';
Offline Martijn - 03/01/2009 20:27 (laatste wijziging 03/01/2009 20:31)
Avatar van Martijn Crew PHP je middelste niet kijk maar naar de ;, je escaped nu de ' die m zou moeten sluiten
onderste ook niet

  1. $search .= '~`";:?+/={}[]-_|\'\\'';

moet zijn
  1. $search .= '~`";:?+/={}[]-_|\'\\';

die had een ' teveel 

nog een edit: de tags geeft m niet goed weer of ligt dat aan mij?
nog een nog een edit: lol, en ik zie dat dat dus is wat ie heeft, dus helemaal geen fout
Offline ArcanA - 03/01/2009 23:35
Avatar van ArcanA PHP beginner Ja lol idd .. 
Offline DenMette - 04/01/2009 10:06 (laatste wijziging 04/01/2009 14:57)
Avatar van DenMette PHP gevorderde vanaf dat er een attribuut in de tag komt te staan, dan zal RemoveXSS hier iets doen wat hij niet zou mogen doen.

Dit
  1. <a href='blabla'>Hello</a> Hoe gaat het?? <b style='font-weight:normal'>Dit moet vet staan</b>
Wordt
  1. <a href='blabla'>Hello</a> Hoe gaat het?? <b st><x>yle='font-weight:normal'>Dit moet vet staan</b>
De style attribuut en nog andere accepteert removexss niet omdat je hier ook vreemde zaken mee kan krijgen. Het is iets heel goed, maar ik zou het niet gebruiken omdat je op veel zaken gaat moeten letten.

de <x> wordt toegevoegd op lijn 35. En op lijn 15 staat de style attribuut dat jij moet gaan weg doen.


Er is nog wat fout in het algemeen met de code. Hier is de verbeterde versie die op het net te vinden is 

Plaatscode: 64550
Offline ArcanA - 04/01/2009 14:59
Avatar van ArcanA PHP beginner Ne hele dikke mercie DenMette!  
Het werkt  
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.295s