Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: prawidłowa poprawa funkcji eregi na preg_match - mimo wszystko nie wyświetla się obrazek
Forum PHP.pl > Forum > PHP
r3pilc3
Witam.
W XAMPP 1.7.1 strona wyświetlał mi się prawidłowo.
Teraz mam XAMPP1.7.7 (PHP5.3.8)..
..i wyświetla mi się komunikat, że funkcja eregi jest przestarzała. Więc zamieniłem ją:

if(eregi($action, $activeon))

na:

if(preg_match("/".$action."/i", $activeon))
lub
if(preg_match('/$action/i', $activeon))

..tak i tak jest OK (poprawcie mnie jak źle zmieniłem)

Zamieniłem eregi na preg_match i powinno być wszystko ok. Niestety w panelu logowania nie wyświetla się obrazek.
Myslę, że powinien skoro zrobiłem zamnianę eregi na preg_match zgodnie z wymogami.

-Jak włączę pełne raportowanie błędów, to nie wyświetla się żaden błąd!

http://i50.tinypic.com/20tl3xj.png

Co może być nie tak? Jakieś pomysły smile.gif
toffiak
Kod generowany jest prawdopodobnie przez skrypt, więc potrzebny jest kod tego skryptu, proszę sprawdzić także logi dla xamppa. Logi są w katalogu \xampp\apache\logs\error.log
irmidjusz
Cytat(r3pilc3 @ 25.07.2012, 18:43:05 ) *
if(eregi($action, $activeon))
na:
if(preg_match("/".$action."/i", $activeon))
lub
if(preg_match('/$action/i', $activeon))


Akurat jeśli użyjesz tego zapisu:
if(preg_match('/$action/i', $activeon))
to nie zadziała (żeby działało, musisz zapisać warunek jako "/{$action}/i" a nie '/$action/i').

Masz jakiś bardzo pogmatwany ten swój kod (wcześniej już o to pytałeś w innym temacie). Czy mógłbyś tu wrzucić cały kod (ten, który nie działa) oraz koniecznie rzeczywiste wartości tych parametrów $action i $actionon (zrzuć je var_dumpem i przeklej). Co znajduje się w $action? Czy nie możesz porównać tych stringów bez użycia wyrażeń regularnych?
erix
Cytat
to nie zadziała (żeby działało, musisz zapisać warunek jako "/{$action}/i" a nie '/$action/i').

Jasne... string i wtedy odpowiadaj.

Wyłącz wysyłanie nagłówka obrazkowego, otwórz CAPTCHA w przeglądarce i wtedy powinno wypluć błąd.
irmidjusz
I tylko tyle zmieniłeś w tym kodzie, że zamiast ergi jest preg_match w tym ifie - i nie ma obrazka? Żadnych błędów PHP nie pluje?

A jeśli użyjesz takiego sprawdzenia:

if(stripos($activeon, $action) !== false)

zamiast preg_match, to co, nadal nie ma obrazka?

Tak w ogóle, to mógłbyś jeszcze podać wartość tej zmiennej $action w momencie sprawdzania, gdy nie ma obrazka. Ale generalnie to dziwne wszystko.

Jesteś pewien, że to z powodu tego preg_match obrazek się nie wyświetla? Problem może być zupełnie gdzie indziej. Jesteś pewien, że teraz jak zmienisz w swoim kodzie preg_match na eregi, to wyświetla captche?

r3pilc3
Cześć. Usunołem swoje posty poniważ rozwiązałem swój problem.
Błędów było 3.
Zamienić z nowymi wymogami:

1) session_unregister($key);
zastąpić:
$_SESSION[$key]=$GLOBALS[$key];

2)if(eregi($action, $activeon))
zastąpić:
if(preg_match("/{$action}/i", $activeon))
________________________________________
Tyle mi podpowiedzieliście... Resztę rozwiązałem na innym forum.
Błąd tkwil w pliku, który generóje obraz.
U mnie na Windows7 w XAMPP1.7.7 nie wyskakiwały błęy.
Błęy na innym forum wykrył kolega, który sprawdził zawartość pliku w swoim Apach na Linux.
Wystarczyło w nim zamienić:

[HTTP_USER_AGENT]
zastąpić:
['HTTP_USER_AGENT']

oraz otworzyć plik w notepad++ i zapisać plik kodowaniem ANSI (a miałem UTF-8)

Wynik dla zainteresowanych:
http://i45.tinypic.com/287jl8m.png
ps. Te błędy co się wyświetlają - ponieważ zainstalowałem XAMPP w najnowszej wersji 1.8.0, który posiada nowszą wersję PHP 5.4.4 i mam błędy, które widać. Ale to w nowym temacie poproszę o pomoc.

Dziękuję zaintereowanym moim tematem za zaangarzowanie..
Irmidiuszowi dałem punkt -jako pomoc w rozwiązaniu tematu ponieważ on podał prawidłową poprawę funkcji erefii na preg_match.
Na innym forum nikt nie był w stanie mi pomóc z tą funkcją.
Pozdrawiam.
Temat zamknięty.
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.