ďťż
Podstrony
|
telcocafeNa stronie mam przykładowy wynik wyszukiwania. Niestety nie są podświetlane wszystkie wyniki. Używam funkcji str_replace. Kod funkcji:function highlightText($text, $word) { $textNew = str_replace($word, '<span class="highlight">'.$word.'</span>', $text); return($textNew); } Gdzie $text to przeszukiwany tekst, a $word to szukana fraza. Próbowałem na różne sposoby, ale szukam dobrego i szybkiego zamiennika, by po zadaniu pytania coś podświetliło mi zarówno coś jak i COŚ, Coś oraz CoŚ (jeżeli wystąpią :P ). function highlightText($text, $word) { $textNew = str_ireplace($word, '<span class="highlight">'.$word.'</span>', $text); return($textNew); } Nie wiem czemu, ale nie działa... Fatal error: Call to undefined function: str_ireplace() in /var/www/sites/yoyo.pl/a/n/andrzej-aa/gallery/app/functions.inc.php on line 29 Szukałem również w PHP Manual. Znalazłem zastosowanie: <?php $bodytag = str_ireplace("%body%", "black", "<body text=%BODY%>"); ?> Ale nie rozumiem jego działania. Hmmm... Może czas się przesiąść na nowszą wersję PHP? PS. O ile dobrze pamiętam, na yoyo trzeba mieć skrypt o rozszerzeniu php5, jeśli chcesz mieć funkcje z nowszej wersji PHP. $bodytag = str_ireplace("%body%", "black", "<body text=%BODY%>"); Czyli inaczej: $tekst = str_ireplace('jakis tekst', 'zamiennik jakiegos tekstu', 'JAKIS tekst'); Teraz rozumiesz? Nie zauważyłem PHP5 w PHP Manualu ;p Raczej nie przesiądę cię na PHP5, ponieważ na razie trzymam się PHP4 i to mi wystarcza, a przesiadka na piątkę trochę może kosztować na mojej stronie... Chyba, że są strony z opisem różnic, albo Redakcja kiedyś umieści w Ekspercie takowy artykuł. Użytkownik andrzej_aa edytował ten post 08 styczeń 2007, 08:04 Niektórzy pewnie uznają, że źle robię, ale to jest jedyny sposób bym dowiedział się co i jak... Temat nie został zamknięty, ponieważ nie uzyskałem wyczerpującej odpowiedzi. Chodzi mi o to, że funkcja str_ireplace nie daje efektu, którego oczekiwałem... Przykład... Tekst jest podświetlany, ale zamiast np. Barwy jesieni jest BarWy jesieni. Czy da się coś z tym zrobić? function highlightText($text, $words) { $words = preg_split('#[\+\-\s]+#is', $words); for ($i = 0; $i < count($words); $i++) { $text = str_replace($words[$i], '<span style="color:red">' . $words[$i] . '</span>', $text); } return $text; } echo highlightText('Ala ma kota.', 'ma+kota'); ? // edit: kurde, zapomniałem, że to nie rozróżnia wielkość liter... PS. http://www.andrzej-a...22%3C/script%3E - załataj to :) Użytkownik Coldpeer edytował ten post 24 styczeń 2007, 21:35 Dobre, ale postaram się w domu to poprawić i nie będzie tak ciekawo :P //edit no no... nie pomyślałem o tym ;) ale htmlspecialchars raczej Ci utrudni życie :P P.S. wciąż nie wiem jak to zrobić... czy za pomocą funkcji regularnych Pascala nie da się? //edit Coldpeer... Trochę się napracowałeś ;) ale udałe Ci się... Teraz nikt nie znajdzie żadnego błędu na stronie... Poprawiłem na każdej, na której mógł się pojawić. Użytkownik andrzej_aa edytował ten post 26 styczeń 2007, 11:44 Coldpeer... Trochę się napracowałeś ;) ale udałe Ci się... Teraz nikt nie znajdzie żadnego błędu na stronie... Poprawiłem na każdej, na której mógł się pojawić. A tam, nie cała minuta. Popularny XSS wynikający z braku filtrowania znaczników HTML przesyłanych metodą GET. ;) Ha, ha! Minuta? Miałem logi z wyszukiwania, ale skasowałem bo mi panel admina nie włączał się i PHPMyAdmin szwankował. To nie była minuta :) andrzej_aa: minuta znalezienie (ee, mniej - pierw tylko sobie dałem alerta żeby sprawdzić, czy filtrujesz, czy nie :)), potem sobie tylko zmieniałem CSS oraz JS :P http://www.andrzej-a...22%3C/script%3E Użytkownik Coldpeer edytował ten post 26 styczeń 2007, 13:00 No nieźle ;) jak to zablokować? //edit ha ha ! bardzo śmieszne... jak przekonwertować string do systemu 16 bitowego? tak by w nazwie mogły się znaleźć tylko znaki 16-bitowe... Użytkownik andrzej_aa edytował ten post 26 styczeń 2007, 13:16 Wartość "pic_file" jest pobierana z bazy danych - sprawdzaj, czy wartość, którą pobrałeś istnieje w tabeli w danym polu. Coś w stylu: $wynik = $db->query('Select id from tabela where id = '.$_GET['pic_file']); if($db->num_rows($wynik) > 0) // istnieje Oraz jako, że jest to id, więc zawiera tylko liczby całkowite, dopuszczaj tylko cyfry :) Użytkownik Coldpeer edytował ten post 26 styczeń 2007, 13:17 Nie mogę tego załatać... Coś mam w kodzie nie tak :/ Może to Cię naprowadzi. Pierw z $_GET['pic_file'] wyciągasz same cyfry takim regexpem: $_GET['pic_file'] = preg_replace('@[^0-9]@', '', $_GET['pic_file']); I sprawdzaj, czy istnieje takie id w bazie, jak napisałem wyżej. // ah, sprawa wygląda o wiele prościej. pic_file przechowuje nie tylko cyfry - to hash, więc jest typu pewnie varchar. To tylko sprawdzaj, czy istnieje taki rekord w bazie. Użytkownik Coldpeer edytował ten post 26 styczeń 2007, 13:38 Poradziłem sobie, ale na innych stronach można to samo zrobić... Nie wiem co się dzieje... //edit Poprawione ;) Wszystko działa sprawnie... Są małe problemy, ale może ich nie dostrzeżesz :ph34r: //edit Coś przedobrzyłem... teraz strona w ogóle się nie otwiera. //edit Już naprawiłem... Teraz spróbuj znaleźć błąd :D Użytkownik andrzej_aa edytował ten post 26 styczeń 2007, 14:16 Nie mogę nic znaleźć :) BTW: chyba przesadziłeś trochę z tym newsem na głównej ;] Włamanie umożliwiające podmianę treści? Ale tylko z odpowiednio spreparowanym linkiem i bez większych szkód dla strony ;) PS. fajny pomysł z linkiem do panelu admina przez copyright'a Użytkownik Coldpeer edytował ten post 26 styczeń 2007, 14:54 Wiem ,ale nie potrafiłem tego opisać... Będzie włamanie ;p chyba że masz lepszy pomysł :> I nie znajdziesz :P Strona jest już poprawna ;) //edit Zamiast wpisywać url to mam skrót na fasta :P Użytkownik andrzej_aa edytował ten post 26 styczeń 2007, 14:56 chyba że masz lepszy pomysł :> "Luki XSS na stronie" chociażby Zamiast wpisywać url to mam skrót na fasta :P Dlatego mówię, że fajny pomysł. // @down: zrobisz jak zechcesz. to tylko propozycja z mojej skromnej osoby :D Użytkownik Coldpeer edytował ten post 26 styczeń 2007, 15:27 "Luki XSS na stronie" chociażby No dobra. Chociaż nie każdy może wiedzieć co to <_< Jak wykazują wyniki mojej ankiety... Dlatego mówię, że fajny pomysł. A ja to potwierdzam :D //edit Wszystkie luki załatane ;) Użytkownik andrzej_aa edytował ten post 29 styczeń 2007, 08:08 |
|||
Sitedesign by AltusUmbrae. |