Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pomoc w poprawie starszej wersji PHP na nowszą zgodnie z wymogami.
Forum PHP.pl > Forum > PHP
r3pilc3
Witam :]
To mój 1szy post.
Mam nadzieję, że to forum bedzie przyjazne bez uszczypliwości o mojej nie najlepszej wiedzy na temat PHP czy opini na temat, że wróżka ma urlop i nie odpisze (bo nikt nie wie jakie mam z1000linii kodu).


Mam stronę działającą na zasadzie frameworka. Wieke plików.php z elementali javascript.
W XAMPP 1.7.1 (PHP 5.2.8) utworzyłem baze danych powprowadzałem dane. Wyświetlam stronę localhost/nazwastrony i wszystko działa ;]
Strona jest OK!

Pragnę tą stronę mieć w XAMPP 1.7.7, który posiada wersję PHP 5.3.8.
W tym żecz, że nowsza wersja PHP w XAMPP 1.7.7 napotyka błędy gdy prubuję wyświetlić stronę administratora.
Strona główna nie zawiera błędów. natomiast strona logowania administratora napotyka błedy. Oto strona dla wzrokowców: (zwróćcie uwagę, że obrazek się nie wyświetla)
http://i49.tinypic.com/24m8io8.jpg

Z jednym błędem, który się wyświetlał sobie poradziłem.
Funkcja sesion_unregister(), która zgodnie z nowymi wymogami jest 'zła' poprawiłem ją w sposób taki, że:
session_unregister($key);
zastąpiłem:
$_SESSION[$key]=$GLOBALS[$key];

i już się nie wyświetla ten błąd. Tak, więc został mi jeden błąd.


"Teraz moja prośba o pomoc"
Wyświetla mi się jeszcze 1 błąd (6x pisze to samo)

Deprecated: Function eregi() is deprecated in (ŚcieżkaPliku\admin.php) on line 242

Komunikat ten oznacza poprostu iż funkcja eregi z której wtedy korzystałem została zdeprecjonowana i należy ją zastąpić nowszym odpowiednikiem.
Myslę, że tym odpowiednikiem jest preg_match()

Więc pokażę Wam część kodu związaną z funkcją eregi

foreach($menus as $option){

if($option['activeon'])
foreach($option['activeon'] as $activeon){
if(eregi($action, $activeon)) {
$option['active']=true;
} }


Po zamianie funkcji eregi zgodnie z wymogami kod powinien wyglądać następująco:

foreach($menus as $option){

if($option['activeon'])
foreach($option['activeon'] as $activeon){
if(preg_match("/".$action."/i", $activeon)) {
$option['active']=true;
} }


lub zamiast if(preg_match("/".$action."/i", $activeon)) mozna wpisać if($action == $activeon)
tak i tak działa strona logowania działa bez wyświetlania się żadnych błędów na niej.

Problem w tym, że po zmianie EREGI na PREG_MATCH nie wyświetla mi się już w ogóle obrazekk. A powinien się wyświetlać abym mógł przepisać z niego losowo generujący się kod w celu poprawnego zalogowania na stronie.

Nie wiem co jest nie tak. Jeśli ktoś wpadł na jakiś pomysł to prosze o pomoc.
Odpada opcja wpisania w plik index.php wyłączenia raportowania błędów zamiast poprawić eregi:
error_reporting ('E_ALL ^E_DEPRECATED ^E_NOTICE');
Ponieważ wtey też obrazek się nie wyświetla.

To jest moje 1sze pytanie co nie tak z PREG_MATCH, który zastąpił przestarzałą funkcję eregi? smile.gif

///////////////////////////
///DRUGIE PYTANIE///
///////////////////////////
................
...w toku...
................
Pierw spróbuję wraz z Wami to rozwikłać

PROSZĘ O POMOC
!*!
Umieszczaj kod w odpowiednich znacznikach na forum.

  1. foreach($menus as $option){
  2.  
  3. if($option['activeon'])
  4. foreach($option['activeon'] as $activeon){
  5. if(preg_match("/".$action."/i", $activeon)) {
  6. $option['active']=true;
  7. } }


Skąd te $action?
r3pilc3
Problem rozwiązany.
Błąd był w pliku, który generował obraz oraz nalezało ten plik zapisać w kodowaniu ANSI a było kodowanie UTF-8.
Zamykam Temat.
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.