ďťż

[PHP] "<<" ucina tekst

       

Podstrony


telcocafe

Witam. Mam taki problem: jeśli mam jakiś tekst, w tórym znajduje cię taki ciąg "<<", to przy zapisywaniu tego tekstu do bazy, tekst po tym ciągu znika. Jak mogę się zabezpieczyć przed takim czymś??

np jest tekst: "lalallalal<<tattatat"
to po zapisie do bazy, zawartosc pola jest "lalallalal"



Dziwny problem. Ja nie mam takich kłopotów.
Dodajesz z poziomu php czy przez np. phpMyAdmin?
Podaj ten swój kod? Może masz jakąś funkcję php, która jest za to odpowiedzialna?

hmm może spróbuj z nie z "tekst" tylko 'tekst'
w php "$zmienna" to wyjdzie jej zawartość, a jak '$zmienna' to napis zmienna.

<? if(isset($_POST["dodac"])==true && $_POST["dodac"]==1) { $dodac=0; include("poloncz.php"); $godzina = date(h); $godzina++; $czas= date(Y) .'-'.date(m).'-'.date(d).'  (' .$godzina.':'.date(i); $czas.=':'; $czas.=date(s); $czas.=')'; if(isset($_POST["id_newsa"])==true) { $id_newsa = $_POST["id_newsa"]; $wynik =mysql_query("SELECT * FROM tab_news  WHERE id = $id_newsa", $connection) or die(mysql_error()); $wynik = mysql_num_rows($wynik); if($wynik>0) { $autor = $_POST["autor"]; $autor = strip_tags($autor); $tresc = $_POST["tresc"]; $tresc = strip_tags($tresc); mysql_query("INSERT INTO tab_komentarze (id_newsa, autor, czas, tresc) VALUES ('$id_newsa', '$autor' , '$czas', '$tresc' );") or die(mysql_error()); } } } ?>

kod dodawania do bazy, chodzi mi dokladnie o zawartosc zmiennej $tresc, to jej zawartosc jest ucinana od wystąpienia znaku "<<"



$tresc = strip_tags($tresc);
Funkcja strip_tags() usuwa tagi HTML-a, tj. zawartość pomiędzy "<" a ">" :) Zamiast tego zrób lepiej zamianę "<" na znak specjalny "&lt;" a ">" na "&gt;".

BTW: pisze się "połącz", a nie "połoncz" :P

//edit: jeszcze dam Ci taką wskazówkę: zamiast pisać:
if(isset($_POST["dodac"])==true && $_POST["dodac"]==1)
wystarczy:
if($_POST['dodac'])
;)
Użytkownik Coldpeer edytował ten post 25 marzec 2006, 12:14

$tresc = strip_tags($tresc);
Funkcja strip_tags() usuwa tagi HTML-a, tj. zawartość pomiędzy "<" a ">" :) Zamiast tego zrób lepiej zamianę "<" na znak specjalny "&lt;" a ">" na "&gt;".

BTW: pisze się "połącz", a nie "połoncz" :P


hmm ale jak zrobie zamianę to strip_tags() nie wytnie mi znaczników html

Ja robie to troche inaczej, natomiast do bazy dodaje taki tekst jaki wpisal uzytkownik bez strip_tags(), ale tylko z addslashes(). Dopiero gdy z bazy pobieram wyniki z bazy to je filtruje. Robie jedna funkcje ktora usuwa znaki html i stripslashes oraz znak nowej lini zamieniam na <br />.

Cos mniej wiecej takiego:
function outText($string) { // usun zbedne  $string=stripslashes($string); // zamien HTML  $string = str_replace("<", "&lt;", $string);        $string = str_replace(">", "&gt;", $string);       // kolejny wiersz  $string = nl2br($string); // zwroc rezultat return $string; }

btw. mozliwe w kodzie literowki nie sprawdzalem go.
Użytkownik adex edytował ten post 26 marzec 2006, 12:36

//edit: jeszcze dam Ci taką wskazówkę: zamiast pisać:
if(isset($_POST["dodac"])==true && $_POST["dodac"]==1)
wystarczy:
if($_POST['dodac'])
;)

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

  • Sitedesign by AltusUmbrae.