ďťż

[php & mysql] kolorowanie składni i... niewykonywanie się kodu! JAK?

       

Podstrony


telcocafe

Witajcie. Mam pewien problem. Otóż napisałem sobie skrypt który wyświetla artykuły. Wszystko działa pięknie tylko jak np. w tym artykule zamieszczę kod php a w nim oczywiście jest echo to wykonuje się to co jest w tym echo zawarte! w jednym z artykułów miałem formularz i był on wyświetlany właśnie w echo :/ Chcę uniknąć takiej sytuacji ale nie wiem jak sobie z tym poradzić...

Próbowałem to zrobić za pomocą highlight_string($row['tresc']) i to zadziałało heh ale co z tego, że pokazywało kod HTML (nawet BR było pokazywane). Bardzo proszę o pomoc...

Oto kod art.php

<?php require('config.php'); /*dolacz plik config.php i polacz sie z baza (ponizej) */ @mysql_connect($host, $user, $pass) or die ('Nie można połączyć się z bazą danych!'); @mysql_select_db($name) or die ('Nieprawidłowa nazwa bazy danych!'); $IP=$_SERVER['REMOTE_ADDR']; $SQL='SELECT COUNT(*) FROM ip WHERE IP=''.$IP.'''; $Query=mysql_query($SQL); $Result=mysql_fetch_array($Query); $Ban=$Result[0]; if($Ban<>0) { echo 'Zostales zbanowany!'; exit; } $wybor=mysql_query('SELECT * FROM artykuly ORDER BY id DESC'); require('function.php'); /*dolacz plik*/ if (isset($_GET['id'])) /*wyswietla konkretny artykul*/ { $wyswietl=mysql_query('SELECT tytul,tresc,opis,autor FROM artykuly WHERE id='.$_GET['id'].';'); $row=mysql_fetch_array($wyswietl); echo '<font size="+1">'.$row['tytul'].'</font><br /><br />'; echo ''.Odbezpiecz($row['opis']).'<br /><br />'; echo ''.Odbezpiecz($row['tresc']).'<br /><br />'; echo 'Autor: '.Odbezpiecz($row['autor']).'<br /><br />'; } else{ while ($row=mysql_fetch_array($wybor)) /*tworzy petle i wyswietla listę artykulow */ { $id=$row['id']; echo '<a href="index.php?strona=art&id='.$id.'"><font size="+1">'.$row['tytul'].'</a></font><br /><br />'; echo ''.$row['opis'].'<br /><br />'; echo 'Dodano: '.$row['data'].',&nbsp;&nbsp;&nbsp;Dodał:&nbsp;' .$row['autor'].'<br /><br /><br /><br />'; } } ?>



a jak wygląda funkcja Odbezpiecz?

htmlspecialchars() ?

Tak wygląda funkcja odbezpiecz i zabezpiecz :)

<? function Zabezpiecz($text) { /* funkcja zabezpiecza tekst przy zapisywaniu do mysql */ $text = trim(htmlspecialchars(addslashes($text))); return $text; } function Odbezpiecz($text) { $text = stripslashes($text); $text = nl2br($text); return $text; /* funkcja odwrotna do Zabezpiecz,usuwamy znaki zabezpieczajace */ } ?>
Użytkownik bl4ck_b0x edytował ten post 11 marzec 2007, 13:32


IMHO przy zapisywaniu do MySQL wystarczy addslashes (ew. mysql_real_escape_string, czy z czego się tam korzysta).
Przy odczytywaniu trim + stripslashes + htmlspecialchars + nl2br, czyli:
function Odbezpiecz($text) { return trim(stripslashes(htmlspecialchars(nl2br($text)))); }
Aż mnie dziwi, że htmlspecialchars w trakcie wpisywania do bazy nie działa... Może dodawałeś arty przez PHPMyAdmin?

arty są dodawane z panelu admina ale tam nie włączyłem tych zabezpieczeń przed HTML'em bo czasem potrzeba będzie coś pogrubić itd....

Wiesz, co? Zamień tę swoją funkcję odbezpieczania na tę, którą Ci podałem i podaj rezultat tych działań...

wszystko się zlało w jedno ;-) nie ma tych BR'ów i pokazuje cały kod.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.