ďťż
Podstrony
|
telcocafeWitajcie. 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'].', Dodał: ' .$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. |
|||
Sitedesign by AltusUmbrae. |