[PHP] Przejście z php 5.2 na php7

2016-04-03 11:39:10 Post #1 bordovy

 
To mój pierwszy post na tym Forum, więc...

Witam

Sprawa dość poważna - mam niecałe trzy miesiące na przejście z php 5.2 na przynajmniej 5.6, a najlepiej na php7.
Z tym, że mój usługodawca już zapowiedział, że jesli robić zmiany, to najlepiej na "7-mkę" własnie, bo i tak wkrótce cała "piątka" zostanie wyoutowana.
Poprzerabiałem zapisy dotyczące mysql_ (na mysqli_), lecz domyślam się, że mam babola w plikach konfiguracyjnych.

W logach - nic.
Dając error reporting w plikach - nic.

Dlatego szukam pomocy tutaj...

Z góry dziękuję za odpowiedzi.

Pozdrawiam.

2016-04-03 11:45:18 Post #2 nospor

 
Włącz wyświetlanie wszystkich błędów
http://nospor.pl/php-faq.html#faq-2

No i przydałoby się byś pokazał kod

2016-04-03 11:45:55 Post #3 nospor

 
No i czym się objawia błąd? Biała strona?

2016-04-03 13:23:55 Post #4 bordovy

 
Tak była biała strona, lecz po wprowadzonych poprawkach - już tak nie jest.
Za to pojawił się kolejny błąd w funkcji
function date_diff($date_from,$date_to)

linie od 1397
http://wklej.org/id/2213917/

//edit
gdzieś wyczytałem, że może chodzić o ustawioną strefę czasową
ja mam tak:
date_default_timezone_set('Europe/Warsaw');

Ale jak nawet zakomentowuję tę linię - mam ten sam błąd
Fatal error: Cannot redeclare date_diff() in ... on line 1491

2016-04-03 14:04:45 Post #5 nospor

 
Date_diff () to standardowa nazwa funkcji w PHP i nie możesz tworzyć własnej o takiej nazwie

2016-04-03 14:10:53 Post #6 bordovy

 
OK, zmieniłem (choć nie wiem - po prostu nie pamiętam), czy gdzieś to nie było potrzebne, ale jak coś to wyjdzie

teraz jest zen_date_diff...

No i pojawiło się szereg innych błędów - do przewidzenia - lecz jednego nie mogę zrozumieć. Do tej pory wszystko hulało poprawnie. Zero błędów...

Mam teraz na przykład taki błąd:
Undefined index: odwiedziny in ... on line 18

otwieram ten plik, a tej linii:
$licznik = $_COOKIE["odwiedziny"];


Kolejny błąd:
Undefined variable: head_info in ... on line 1505
Nie mo�na usun�� starych sesji :

Otwieram ten plik.... nie ma takiej linii

2016-04-03 14:15:45 Post #7 nospor

 
O Notice pisałem tu

http://nospor.pl/notice-wyswietlac-czy-nie.html
masz tam napisane jak poprawnie pisac

2016-04-03 14:33:34 Post #8 bordovy

 
Bardzo przystępnie napisany art
Pomogło mi to w jeszcze czym innym, ale te byk (odwiedziny) pozostał.

cały plik wygląda tak:
http://wklej.org/id/2214258/
więc nie rozumiem, co mógłbym tu dopisać - ja też nie jestem zwolennikiem ukrywania błędów (przynajmniej wiem, że są, a przy okazji uczę się, jak ich unikać w przyszłości)

//edit
$licznik = !$_COOKIE["odwiedziny"];

usunąłem !

2016-04-03 14:45:38 Post #9 nospor

 
$licznik = isset($_COOKIE["odwiedziny"]) ? $_COOKIE["odwiedziny"] : null;

2016-04-03 14:55:28 Post #10 bordovy

 
I niech mi ktoś powie, że teraz jest prościej

nospor oczywiście, że tak działa

Pozostaje (narazie) kwestia tego:
Notice: Undefined variable: head_info ... on line 1505
Nie mo�na usun�� starych sesji :

DELETE FROM session WHERE session_end<1459687760

No to teraz (po zmianach) sprawa jest taka:
W tej linii jest ; (średnik)
$head_info .= '
<script type="text/javascript" language="JavaScript">
function selecturl(s) {
var gourl = s.options[s.selectedIndex].value;        window.top.location.href = gourl;
}
</script>'
;

Gdy daję bez kropki, tzn:
$head_info = '

to Notice się nie wyświetla, tylko pozostaje informacja
Nie mo�na usun�� starych sesji :

DELETE FROM session WHERE session_end<1459687760

i nic więcej - tylko to

2016-04-03 15:08:28 Post #11 nospor

 
Masz błąd bazy dla zapytania delete. Wyświetl go sobie

2016-04-03 15:12:59 Post #12 bordovy

 
Co prawda w innym pliku, lecz mam taką funkcję:
function old_session(){
global $guest_tbl;

$query=mysqli_query($sql="$con, DELETE FROM {$this->session_tbl} WHERE session_end<".time());
if(!$query AND $this->DEBUG)die("Nie można usunšć starych sesji : <br><br>".$sql."<br><br>".mysqli_error());

}

Zapytanie jest chyba poprawne?

//Hm... zapytanie jest poprawne, tylko zapomniałem dodać linijki łączącej z bazą (do tej pory nie było to potrzebne)

Pozostał znów ten błąd (?), co wcześniej:
aktualnie wyświetla mi się tylko to:
Notice: Undefined variable: head_info in ... on line 1505


Wcześniej o tym wspomniałem (to jest średnik). Gdy ukrywam tę część kodu
/*
$head_info .= '
<script type="text/javascript" language="JavaScript">
function selecturl(s) {
var gourl = s.options[s.selectedIndex].value;        window.top.location.href = gourl;
}
</script>'
;
*/

to mam... białą stronę
i tak kuźwa

2016-04-03 15:19:20 Post #13 nospor

 
Zajrzyj do manuala php jak wygląda poprawne wywołanie mysqli_query a potem porównaj z tym co masz ty

2016-04-03 15:34:04 Post #14 bordovy

 
W porządku - zmienione

Ponieważ znów sypnęło błędami, to korzystając nadal z Twojego arta, zamiast:
$referer = parse_url($_SERVER['HTTP_REFERER']);

zrobiłem
$referer = isset(parse_url($_SERVER['HTTP_REFERER'])) ? parse_url($_SERVER['HTTP_REFERER']) : null;


I dostałem strzał pt:
Fatal error: Cannot use isset() on the result of an expression (you can use "null !== expression" instead) in ... on line 35

2016-04-03 15:37:15 Post #15 nospor

 
Wywal parseurl z isset

2016-04-03 15:49:48 Post #16 bordovy

 
OK. Teraz mój plik wygląda tak:
http://wklej.org/id/2214592/

i się dopiero teraz wysypało
Notice: Undefined variable: cmd in ... on line 37

Notice: Undefined index: nick in ... on line 10

Notice: Undefined variable: act in ... on line 38

Notice: Undefined index: nick in ... on line 10

Notice: Undefined variable: news in ... on line 40

Notice: Undefined index: nick in ... on line 89

Notice: Undefined variable: nick in ... on line 89

Notice: Undefined index: gnick in ... on line 90

Notice: Undefined variable: author in ... on line 90

Notice: Undefined index: gnick in ... on line 91

Notice: Undefined variable: imie in ... on line 91

Notice: Undefined index: gauto in ... on line 94

Nie chcę nadwyrężać Twojej cierpliwości, ale nie rozumiem tego - pozmieniałem wszystko w tym pliku: na starej wersji (5.2) hula, a teraz (7) ni hu hu..la

2016-04-03 16:00:37 Post #17 nospor

 
Od samego początku pisałeś źle to się nie dziw ze wkoncu masz burdel. Wyłącz wyświetlenie błędów notice i tez ci będzie chilac jak na php 5.2

2016-04-03 16:16:50 Post #18 bordovy

 
Wyłączyłem - miałem wyświetlanie wszystkich błędów:
error_reporting(E_ALL);

Jak zakomentowałem ten wiersz, to... biała strona I tak właśnie...

//edit
Wyczytałem, że te linie:
$cmd = !preg_match("/".$_SERVER['HTTP_HOST']."/si", $referer['host'])&& count($_POST)?'':sec_variable($cmd);
$act = !preg_match("/".$_SERVER['HTTP_HOST']."/si", $referer['host'])&& count($_POST)?'':sec_variable($act);

kiedyś może i były przydatne... ale teraz już nie są i można je wyrzucić.
Szczerze mówiąc kod pisany był w roku 2004 (więc 12 lat już ma ) i nie pamietam dokładnie, ale chodziło tu raczej o jakieś zabezpieczenia


Ale w takim razie co z resztą?
if(!empty($_SESSION['gnick']) && empty($gnick)) $gnick=$_SESSION['gnick'];
if(!empty($_SESSION['nick']) && empty($nick)) header('Location: index.php');
$nick = ($_SESSION['nick']== 'alien' || empty($_SESSION['nick']))? $nick : $_SESSION['nick'];
$author = ($_SESSION['gnick']== 'alien' || empty($_SESSION['gnick']))? $author : $_SESSION['gnick'];
$imie = ($_SESSION['gnick']== 'alien' || empty($_SESSION['gnick']))? $imie : $_SESSION['gnick'];

2016-04-03 19:45:34 Post #19 nospor

 
Podałem ci przecież sposób z isset...
linijkę wcześniej co masz błąd o zmiennej masz dać

$zm=isset ($zm) ? $zm:null;

2016-04-03 20:16:28 Post #20 bordovy

 
$nick = isset(($_SESSION['nick']== 'alien') || empty($_SESSION['nick']))? $nick : $_SESSION['nick'] : null;

...ale wywala wtedy, że mam podwójny dwukropek...
if(preg_match("!<(.*)script(.*)>|<(.*)iframe(.*)>!si", $news)) header("Location: index.php");

Tutaj też isset?

Odpowiedz

1 2 3 >

Ostatnio na forum

  1. PHP Developer - Gdań... moze kobieta
  2. PHP Developer - Gdań... Tomek ARforce
  3. Hackathon Distribute... aleksandra_c
  4. Klasa obsługi szablo... freeboc
  5. PHP [Symfony] Develo... NewPerspective
  6. [Wrocław][PHP Develo... Software house Amsterdam Standard sp. z o.o.
  7. Senior PHP Developer... Kingit

Skrypty użytkowników

  1. Klasa obsługi szablo... Lirdoner
  2. Sekcje user76
  3. Klasa walidująca for... user76
  4. Licznik Gości online korey
  5. Form Builder Comandeer
  6. Dynamiczny licznik z... korey
  7. Captcha Comandeer