Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Uruchomienie Prediction Football na PHP 7
jwr
post 5.08.2020, 19:29:54
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.06.2014

Ostrzeżenie: (0%)
-----


Witam,

Posiadam oprogramowanie Prediction Football, które kilka lat temu było rozwijane przez John'a Astill'a. Tego projektu już nie ma w sieci. Musiałem zwiększyć wersję PHP na serwerze na PHP 7 i niestety to oprogramowanie przestało działać. Pojawiają się takie błędy:

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; UserType has a deprecated constructor in /home/xxx/websites/mojadomena.pl/typer/usertypeclass.php on line 9

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; User has a deprecated constructor in /home/xxx/websites/mojadomena.pl/typer/userclass.php on line 9

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Message has a deprecated constructor in /home/xxx/websites/mojadomena.pl/typer/msgclass.php on line 2

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; MessageList has a deprecated constructor in /home/xxx/websites/mojadomena.pl/typer/msgclass.php on line 36

Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Dbase has a deprecated constructor in /home/xxx/websites/mojadomena.pl/typer/dbasefunctions.php on line 8

Fatal error: Uncaught Error: Call to undefined function mysql_pconnect() in /home/xxx/websites/mojadomena.pl/typer/dbasefunctions.php:123 Stack trace: #0 /home/xxx/websites/mojadomena.pl/typer/dbasefunctions.php(55): Dbase->connect() #1 /home/xxx/websites/mojadomena.pl/typer/dbasedata.php(7): Dbase->Dbase() #2 /home/xxx/websites/mojadomena.pl/typer/index.php(11): require_once('/home/xxx/w...') #3 {main} thrown in /home/xxx/websites/mojadomena.pl/typer/dbasefunctions.php on line 123

usertypeclass.php:

  1. class UserType {
  2.  
  3. // Contructor for the user class.
  4. function UserType() {
  5. }


userclass.php:

  1. class User {
  2. // The basedir for this league
  3. var $basedir;


msgclass.php:

  1. class Message {
  2. // The message type e.g. Error, Warning, Info
  3. var $type;


  1. class MessageList {
  2. // Array of current messages.
  3. var $currentMessages;


dbasefunctions.php:

  1. class Dbase {
  2.  
  3. // MySQL Version number
  4. var $mysqlver;


Czy jest możliwe, aby to oprogramowanie działało na PHP 7?
Go to the top of the page
+Quote Post
Tomplus
post 5.08.2020, 22:45:23
Post #2





Grupa: Zarejestrowani
Postów: 1 834
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Użyj zamiast:
  1. function UserType()


  1. public function __constructor()



a zamiast: mysql_pconnect("localhost", ...)
użyj:
mysqli_connect("p:locahost", ...); //oczywiście zamiast ... są kolejne wartości.

Go to the top of the page
+Quote Post
jwr
post 6.08.2020, 20:24:58
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.06.2014

Ostrzeżenie: (0%)
-----


Jak zamieniłem w pliku usertypeclass.php tę linię:

  1. function UserType()


Na tę linię:

  1. public function __constructor()


To teraz tylko pojawia się ten błąd:

Fatal error: Uncaught Error: Call to undefined function mysql_pconnect() in /home/xxx/websites/mojadomena.pl/typer/dbasefunctions.php:123 Stack trace: #0 /home/xxx/websites/mojadomena.pl/typer/dbasefunctions.php(55): Dbase->connect() #1 /home/xxx/websites/mojadomena.pl/typer/dbasedata.php(7): Dbase->Dbase() #2 /home/xxx/websites/mojadomena.pl/typer/index.php(11): require_once('/home/xxx/w...') #3 {main} thrown in /home/xxx/websites/mojadomena.pl/typer/dbasefunctions.php on line 123

W pliku dbasefunctions.php jest taki kod:

  1. function connect() {
  2. global $globalPersistent;
  3.  
  4. if ($globalPersistent == true) {
  5. $this->link = mysql_pconnect($this->host, $this->username, $this->password)
  6. or die("Could not connect to $this->host\n".mysql_error());
  7. } else {
  8. $this->link = mysql_connect($this->host, $this->username, $this->password)
  9. or die("Could not connect to $this->host\n".mysql_error());
  10. }
  11. mysql_query("set names 'latin1'");
  12. }


Cytat(Tomplus @ 5.08.2020, 23:45:23 ) *
a zamiast: mysql_pconnect("localhost", ...)
użyj:
mysqli_connect("p:locahost", ...); //oczywiście zamiast ... są kolejne wartości.


W tej 123 linii mam tylko zmienić mysql na mysqli? Czy we wszystkich liniach mam zmienić mysql na mysqli?

A w tych dwóch liniach: ($this->host, $this->username, $this->password) mam wprowadzić dane bazy danych?

Ten post edytował jwr 6.08.2020, 20:29:29
Go to the top of the page
+Quote Post
viking
post 7.08.2020, 04:54:22
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Musisz zmienić w każdym miejscu i możliwe że będzie się różnić kolejność argumentów. Rozszerzenia mysql od v7 nie ma.


--------------------
Go to the top of the page
+Quote Post
Tomplus
post 7.08.2020, 05:12:05
Post #5





Grupa: Zarejestrowani
Postów: 1 834
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Tak powinno być.
  1. mysqli_connect('p:' . $this->host, $this->username, $this->password);

Go to the top of the page
+Quote Post
jwr
post 7.08.2020, 07:59:38
Post #6





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.06.2014

Ostrzeżenie: (0%)
-----


Występuje taki błąd:

Parse error: syntax error, unexpected 'or' (T_LOGICAL_OR) in /home/xxx/websites/mojadomena.pl/typer/dbasefunctions.php on line 124

  1. function connect() {
  2. global $globalPersistent;
  3.  
  4. if ($globalPersistent == true) {
  5. $this->link = mysqli_connect('p:' . $this->host, $this->username, $this->password);
  6. or die("Could not connect to $this->host\n".mysqli_error());
  7. } else {
  8. $this->link = mysqli_connect('p:' . $this->host, $this->username, $this->password);
  9. or die("Could not connect to $this->host\n".mysqli_error());
  10. }


Kod w 124 linii w pliku:

  1. or die("Could not connect to $this->host\n".mysqli_error());
Go to the top of the page
+Quote Post
viking
post 7.08.2020, 09:38:26
Post #7





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Żeby się zabrać za takie przepisanie trzeba znać podstawy PHP chociaż. Masz średniki w 5 i 8 linii. Będziesz tak po kolei każdy błąd wklejał? To trochę ci jeszcze zejdzie.


--------------------
Go to the top of the page
+Quote Post
Tomplus
post 7.08.2020, 10:47:41
Post #8





Grupa: Zarejestrowani
Postów: 1 834
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


I jeszcze:
wkleiłeś bezwiednie to co podałem, bo ja sam myślałem że jest tylko jedna funkcja do połaczenia.

ta litera P przed hostem oznacza Persistent,
więc jeżeli drugie połaczenie nie potrzebuje trwałego polaczenia to należy pominac dopisywanie P przed hostem.

Dlatego:

  1. function connect() {
  2. global $globalPersistent;
  3.  
  4. if ($globalPersistent == true) {
  5. $this->link = mysqli_connect('p:' . $this->host, $this->username, $this->password);
  6. or die("Could not connect to $this->host\n".mysqli_error());
  7. } else {
  8. $this->link = mysqli_connect($this->host, $this->username, $this->password);
  9. or die("Could not connect to $this->host\n".mysqli_error());
  10. }
  11. }


a najlepiej to skrócić:
  1. function connect() {
  2. global $globalPersistent;
  3. $persistent =($globalPersistent == true) ? 'p:' : '';
  4. $this->link = mysqli_connect($persistent . $this->host, $this->username, $this->password);
  5. or die("Could not connect to $this->host\n".mysqli_error());
  6. }

Go to the top of the page
+Quote Post
jwr
post 7.08.2020, 10:57:05
Post #9





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.06.2014

Ostrzeżenie: (0%)
-----


Tomplus,

Niestety nie działa:

Parse error: syntax error, unexpected 'or' (T_LOGICAL_OR) in /home/xxx/websites/mojadomena.pl/typer/dbasefunctions.php on line 123

  1. or die("Could not connect to $this->host\n".mysqli_error());
Go to the top of the page
+Quote Post
nospor
post 7.08.2020, 11:09:39
Post #10





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




Przeciez viking napisal: sredniki przed OR sa zbedne


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jwr
post 7.08.2020, 11:33:55
Post #11





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.06.2014

Ostrzeżenie: (0%)
-----


Po wprowadzeniu tego kodu:

  1. function connect() {
  2. global $globalPersistent;
  3. $persistent =($globalPersistent == true) ? 'p:' : '';
  4. $this->link = mysqli_connect($persistent . $this->host, $this->username, $this->password)
  5. or die("Could not connect to $this->host\n".mysqli_error());
  6. }
  7. mysql_query("set names 'latin1'");
  8. }


Bez myślnika na końcu:

  1. $this->link = mysqli_connect($persistent . $this->host, $this->username, $this->password)


Teraz pojawia się taki błąd:

Parse error: syntax error, unexpected 'mysql_query' (T_STRING), expecting function (T_FUNCTION) or const (T_CONST) in /home/xxx/websites/mojadomena.pl/typer/dbasefunctions.php on line 125

125 linia:

  1. mysql_query("set names 'latin1'");
Go to the top of the page
+Quote Post
viking
post 7.08.2020, 11:38:27
Post #12





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Przeczytaj jeszcze raz mój post #4. Zwłaszcza ostatnie zdanie. Zaraz bana dostaniesz smile.gif Mod łaskawy ale bez przesady.


--------------------
Go to the top of the page
+Quote Post
nospor
post 7.08.2020, 11:40:06
Post #13





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




Bo wywaliles
mysql_query("set names 'latin1'");
poza funkcje

Cytat
Mod łaskawy ale bez przesady.

Mod ostatni dzien dzis w pracy przed urlopem, to szczesliwy wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
jwr
post 7.08.2020, 12:05:52
Post #14





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 28.06.2014

Ostrzeżenie: (0%)
-----


Cytat(viking @ 7.08.2020, 12:38:27 ) *
Przeczytaj jeszcze raz mój post #4. Zwłaszcza ostatnie zdanie. Zaraz bana dostaniesz smile.gif Mod łaskawy ale bez przesady.


Czemu masz chamskie zachowanie do mnie? Wydaje się, że to forum jest od pomocy. Założyłem kulturalnie temat i poprosiłem o pomoc. Masz jakiś problem ze sobą? facepalmxd.gif

Regulmin forum przedstawia:

3. Zasady panujące na forum:

f. Każdy użytkownik forum powinien starać się traktować innych uczestników dyskusji tak samo, jak sam chciałby być traktowany. Oczekując szacunku, pamiętajmy o okazywaniu go innym.

3. Odpowiadanie na pytania:

a. Odpisując na czyjeś pytanie starajmy się być konstruktywni i pomocni. Komentarze typu: "popieram przedmówcę" niewiele wnoszą do dyskusji.
b. Odpowiadając trzymajmy się ściśle tematu. Pytającemu na pewno na tym zależy.
c. Jeżeli nie znasz odpowiedzi, nie pisz nic. Po prostu czekaj.

4. Formułowanie treści wiadomości (postów).

a. Bądź profesjonalny i ostrożny w tym co mówisz o innych. Unikaj jak ognia obrażania uczestników dyskusji. Ostateczny skutek takich działań może być tylko jeden: zablokowanie Tobie dostępu do forum przez administratora.

b. Bądź ostrożny pisząc z humorem lub sarkazmem. Bez osobistego kontaktu Twój żart może być odebrany jako złośliwa krytyka.

@nospor,

Nie zmieniałem nic w tej linii. Ta linia jest tak ustawiona w tym kodzie od początku.

Oryginalny kod:

  1. function connect() {
  2. global $globalPersistent;
  3.  
  4. if ($globalPersistent == true) {
  5. $this->link = mysql_pconnect($this->host, $this->username, $this->password)
  6. or die("Could not connect to $this->host\n".mysql_error());
  7. } else {
  8. $this->link = mysql_connect($this->host, $this->username, $this->password)
  9. or die("Could not connect to $this->host\n".mysql_error());
  10. }
  11. mysql_query("set names 'latin1'");
  12. }
Go to the top of the page
+Quote Post
viking
post 7.08.2020, 12:17:06
Post #15





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


W którym niby miejscu tego posta jestem chamski? Ty jesteś niegrzeczny w stosunku do nas gdy zamiast czytać i poprawić co ci parser mówi traktujesz nas jak interaktywną pomoc. To zaledwie jedna metoda. Metod i ogólnie kodu jest pewnie od groma. Jak ty sobie wyobrażasz przepisanie tego jeśli brakuje ci elementarnych podstaw?


--------------------
Go to the top of the page
+Quote Post
nospor
post 7.08.2020, 12:26:43
Post #16





Grupa: Moderatorzy
Postów: 36 446
Pomógł: 6292
Dołączył: 27.12.2004




Ignorujesz to co pisze viking i masz czelnosc jego chamskim nazywac.... no cos tu jest nie tak o to raczej nie z zachowaniem vikinga. Ok, mozesz czegos nie rozumiec, ale to nie powod by ignorowac czyjes odpowiedzi na twoj problem i latac z tym samym co 5 razy.

Cytat
Nie zmieniałem nic w tej linii. Ta linia jest tak ustawiona w tym kodzie od początku.

Linii moze i nie zmieniales. Ale zmieniles jej LOKALIZACJE co ladnie widac na kodzie oryginalnym i kodzie po twoich zmianach. Teraz ta linia jest poza funkcja wiec zamiast mnie poprawiac zacznij czytac co sie do ciebie mowi. I kto tu znowu jest "chamski"? wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Tomplus
post 7.08.2020, 17:59:56
Post #17





Grupa: Zarejestrowani
Postów: 1 834
Pomógł: 225
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 7.08.2020, 12:09:39 ) *
Przeciez viking napisal: sredniki przed OR sa zbedne


ja nawet nie zauważyłem tego średnika biggrin.gif
Gdybym użył w kodzie, to bym zauważył.


@jwr
Wszystkie funkcje zaczynające się od mysql_ muszą być zamienione na
  1. mysqli_
.

Co do set names 'latin1' lepiej ustawić
  1. utf8
jako domyślne, bo później będziesz miał problem z kodowaniem.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.04.2024 - 01:23