Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Znak " przerywa odczytywanie zmiennych
Forum PHP.pl > Forum > Przedszkole
Jarod
Panowie mam problem. Mam w systemie link "Baza sprzętu". Kiedy użytkownik kliknie na ten link, zostaje wypisany cały sprzęt który on poasiada z możliwością edycji, kasowania.
Np.
Rysunek 1

Wszystko wyświetla się ok (chodzi mi o ten monitor - druga pozycja)


Po prawej stronie jest link "więcej". Po kliknięciu go myszką dostajemy pełne informacje o sprzęcie + naprawy (nie pokazałem tego na rysunku). Zauważcie, że na tym drugim pisze już tylko Monitor 17. Znak " blokuje wyświetlenie reszty..

Rysunek 2

We wszystkich skryptach dodających do bazy stosowałem strip_tags. Skrytp odpowiedzialny za link "więcej" to:

---
Prosze dac linak do kodu php najlepiej z rozszerzenie phps (pokolowana skladnia)
Kodu bylo duzo i zle sie go czytalo pozatym nie byl kompetny, ulatwi to znaleznie rozwiazania uzytkownikom przegladajacym temat.
hwao
crash
Za dużo tego wkleiłeś, forum się rozjechało tongue.gif Nawet nie widać gdzie ci się coś sypie. Jeśli chodzi o " używaj funkcji *slashes(), albo ustaw w php.ini magic quotes gpc.
Jarod
Poprawiłem pierwszego posta. Wcześniej rzyczywiście strasznie zamotałem. Może to rojaśni mój problem. Proszę o jakieś wskazówki.
yavaho
Zamieniaj znaki " na "
  1. <a href="index.htm">Monitory 17&quot; (iiYama)</a>
crash
Użyj htmlspecialchars" title="Zobacz w manualu PHP" target="_manual() z ENT_NOQUOTES na nazwie monitora i innych "podejżanych" ciągach...
Jarod
Cytat(crashu @ 2005-06-18 12:36:29)
Użyj htmlspecialchars" title="Zobacz w manualu PHP" target="_manual() z ENT_NOQUOTES na nazwie monitora i innych "podejżanych" ciągach...

Ale przecież htmlspecialchars() to prawie to samo co strip_tags.. Tyle że strip_tags nie obcina znaków htmlowych na stałe..

I jeszcze jedno: Przecież w jednym miejscu wyświetla znak " a drugim skrypcie nie.. Pokręcone to..
crash
Nie chodzi o usuwanie tagów, ale o zamiane " na &quot;
Jarod
Cytat(crashu @ 2005-06-18 12:58:38)
Nie chodzi o usuwanie tagów, ale o zamiane " na &quot;

Rzeczywiście to pomaga. Mam jeszcze takie pytanie.
Czy lepiej stosować przy zapisie do bazy strip_tags czy htmlspecialchars ?

I przy odczytywaniu zawsze stosować htmlspecialchars()?

A może przepuszczać najpierw przez strip_tags a potem jeszcze raz przez htmlspecialchars ?

pozdrawiam
qsysiu
Cytat(J4r0d @ 2005-06-18 13:02:38)
Cytat(crashu @ 2005-06-18 12:58:38)
Nie chodzi o usuwanie tagów, ale o zamiane " na &quot;

Rzeczywiście to pomaga. Mam jeszcze takie pytanie.
Czy lepiej stosować przy zapisie do bazy strip_tags czy htmlspecialchars ?

I przy odczytywaniu zawsze stosować htmlspecialchars()?

A może przepuszczać najpierw przez strip_tags a potem jeszcze raz przez htmlspecialchars ?

pozdrawiam

Strip usunie znaczniki html. Później puść przez html.. i po kłopocie. Gorzej z wydajnością. Ale to nie mój problem
dag



Cytaty z manuala:
strip_tags:
  1. <?php
  2.  
  3. $text = '<p>Test paragraph.</p><!-- Comment --> Other text';
  4. echo strip_tags($text);
  5. echo &#092;"n\";
  6.  
  7. // Allow <p>
  8. echo strip_tags($text, '<p>');
  9.  
  10. ?>

da rezultat:
Cytat
Test paragraph. Other text
<p>Test paragraph.</p> Other text



htmlspecialchars
  1. <?php
  2.  
  3. $new = htmlspecialchars(&#092;"<a href='test'>Test</a>\", ENT_QUOTES);
  4. echo $new; // &lt;a href='test'&gt;Test&lt;/a&gt;
  5.  
  6. ?>


IMHO wystarczy htmlspecialchars.
Cytat
The translations performed are:

    * '&' (ampersand) becomes '&amp;'
    * '"' (double quote) becomes '&quot;' when ENT_NOQUOTES is not set.
    * ''' (single quote) becomes ''' only when ENT_QUOTES is set.
    * '<' (less than) becomes '&lt;'
    * '>' (greater than) becomes '&gt;'
Jarod
Cytat(dag @ 2005-06-18 14:18:35)
IMHO wystarczy htmlspecialchars.

Uważam, że się mylisz. Jeśli zastosuję tylko htmlspecialchars to pomyśl co się stanie jak użytkownik wpisze w formularzu np imie coś takiego
  1. <strong>imie<strong>
dag
Cytat(J4r0d @ 2005-06-18 16:41:04)
Cytat(dag @ 2005-06-18 14:18:35)

IMHO wystarczy htmlspecialchars.

Uważam, że się mylisz. Jeśli zastosuję tylko htmlspecialchars to pomyśl co się stanie jak użytkownik wpisze w formularzu np imie coś takiego
  1. <strong>imie<strong>

Oczywiście masz rację ;-) mi chodziło jednak o rozwiązanie jedynie tego jednego problemu.
Jarod
Więc może lepiej zrobić tak jak kazał ksysiu?

Po przemyśleniu problemu doszedłem do wniosku, że najlepszym rozwiązaniem jest zapisywać strongi do bazy wykorzystując strip_tags. A przy odczytywaniu stosować htmlspecialchars.
Dziękuje wszystkim za pomoc.

pozdrawiam
Guest
A ja mam inny problem. Mam pole textarea i jak w nim wpisze coś takiego
Cytat
<?php
#$%^!@!#!@#%$%&^)()L?I:L
?>


To wszystko się rozwala.. sadsmiley02.gif
strife
Cytat(Guest @ 2005-06-18 20:18:50)
A ja mam inny problem. Mam pole textarea i jak w nim wpisze coś takiego
Cytat

<?php
#$%^!@!#!@#%$%&^)()L?I:L
?>


To wszystko się rozwala.. sadsmiley02.gif

A nie pomaga htmlspecialchars" title="Zobacz w manualu PHP" target="_manual questionmark.gif?

BTW.

Czytałeś wogóle ten temat??
Guest
Czytałem. htmlspecialchars nie pomaga
Guest
Zauważyłem coś takiego. Jeśli wpiszę
Cytat
dupa<?phpfgdfgdf?>

To zapisze do bazy dupa (stosuje htmlspecialchars)

A jeśli wpisze
Cytat
<?phpfgdfgdf?>


To wstawia do bazy pusty wiersz i potem się rozypuje. Obcina wszystko między znakiem < i >. Jak sprawdzić długoś takiego stringu bez tego co ma obciąć żeby nie zapisywał pustego stringu?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.