Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML] Input, znaki specjalne, problem
Forum PHP.pl > Forum > Przedszkole
malinka
Witam,

używam skryptu który nakłada teksty na obrazek. Wygląda on mniej więcej tak jak poniżej:

  1. <?php
  2. $im = imagecreatefromjpeg('images/'.$_GET['i']);
  3. putenv('GDFONTPATH=' . realpath('.'));
  4. $font = 'font.ttf';
  5.  
  6. $text1 = $_GET['tekst'];
  7. $text2 = $_GET['tekst2'];
  8.  
  9. $tb1 = imagettfbbox(14, 0, 'font.ttf', $text1);
  10. $tb2 = imagettfbbox(14, 0, 'font.ttf', $text2);
  11. $x1 = ceil((297 - $tb1[2]) / 2); // lower left X coordinate for text
  12. $x2 = ceil((297 - $tb2[2]) / 2); // lower left X coordinate for text
  13.  
  14.  
  15. imagettftext($im, 14, 0, $x1, 404, $black, $font, $text1);
  16. imagettftext($im, 14, 0, $x1, 404, $black, $font, $text2);
  17.  
  18. imagejpeg($im, NULL, 100);
  19. ?>


na stronie jako "podgląd" używam:

  1. <img src="tekstnaobrazek.php?tekst=<?=$_GET['tekst']?>&tekst2=<?=$_GET['tekst2']?>&i=<?=$_GET['i']?>" alt="Podgląd" />


I chodzi o to, że użytkownik wpisuje w inputa jakiś tekst i o ile w pierwszym nie ma problemu bo mam ustaloną walidację w js, na same liczby, o tyle z drugim walidacja polega tylko na sprawdzeniu czy input jest pusty czy nie. Jednak wpisanie " / ' # i paru innych znaków specjalnych powoduje że obrazek w divie nie chce się wyświetlić a w inpucie tekst w momencie wystąpienia znaku się ucina bądź zmienia na \.
np wpisanie: alicja "ma" kota spowoduje wyświetlenie w inpucie -> alicja , natomiast obrazek się nie pokaże. jest tylko tekst zawarty w "alt".
Czy jest sposób który pozwoli na użycie tych znaków bez rozsypania kodu? :o)
Za wszelkie rady i wskazówki będę wdzięczna. To jest jedyny problem który mi pozostał przy stronie...

Edit: Zmieniłam ustawienia Magic quotes na serwerze. i jedyne znaki które "rozwalają" skrypt jest & " # i +. Teoretycznie mogłabym zrobić regułę która by nie pozwoliła na użycie tych znaków, ale nie jest to dla mnie rozwiązanie ;o) czy ktoś ma jakiś pomysł?
pgrzelka
musisz usunąć znak "/" lub go zamienić na inny przed przekazaniem go w parametrze, jeśli zamieniasz to w tekstnaobrazek.php musisz go z powrotem 'odmienić'
malinka
mówisz o znaku na końcu <img /> ? :o)

edit: dobra to było głupie ;o) wyłączenie mq pomogło poniekąd, ale nadal jest kilka znaków które rozwalają obrazek....
erix
  1. <img src="tekstnaobrazek.php?tekst=<?=$_GET['tekst']?>&tekst2=<?=$_GET['tekst2']?>&i=<?=$_GET['i']?>" alt="Podgląd" />

Człowieku, otwarta furtka na XSS...

Poza tym, masz taką funkcję, co się zwie urlencode" title="Zobacz w manualu PHP" target="_manual.
malinka
Cytat(erix @ 24.06.2009, 00:26:36 ) *
  1. <img src="tekstnaobrazek.php?tekst=<?=$_GET['tekst']?>&tekst2=<?=$_GET['tekst2']?>&i=<?=$_GET['i']?>" alt="Podgląd" />

Człowieku, otwarta furtka na XSS...

Poza tym, masz taką funkcję, co się zwie urlencode" title="Zobacz w manualu PHP" target="_manual.



przeczytałam na szybko o XSS rzeczywiście nie jest to zbyt optymistyczne....

co do samej funkcyjki, nadal rozsypywało się na " a na tym najbardziej mi zależy... ale chyba koniec końców dodam funkcja która zamieni mi cudzysłów na apostrof albo zrobie walidacje na te znaczki w JS.

pytanie na szybko, bo jak kominowałam z <img src> i przekazywaniem poprzez POST to nie udawało mi się wyświetlić obrazka...
Jest to pierwszy kontakt z php w ogóle dlatego dla niektórych może być banalne to pytanie. Chodzi mi o to, jak wyświetlić obrazek bez "Getów" tylko postami i dodatkowo wyświetlić zawartość po przeładowaniu.

mam dwa pliki. index i po wcisnieciu submit przekierowuje do show, gdzie pojawia sie nowy button zapisz. teraz zapamiętywałam wpisany tekst poprzez wykorzystanie w inpucie value="<?=$_GET['komu']?>. Wiedziałam że post jest bezpieczniejszy, ale przy skrypcie nakładającym tekt na obrazek specjalnie niebezpieczeństwa nie widziałam. jednak z postem nie jestem w stanie sobie poradzić :o(
erix
Tu nie ma znaczenia, czy POST. Liczy się sam fakt wyświetlenia.

A jak użyłaś tej funkcji, o której wspomniałem?
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.