Seite 1 von 1

Probleme mit Umstellung auf PHP 7.3

Verfasst: 04.11.2019 19:16
von Lizardx
Hallo,

ich benutze schon immer das Script "Letzte Beiträge auf einer nicht phpBB Seite anzeigen". Das phpBB Forum befindet sich im Unterverzeichnis und im Root wird das Script angewandt. Nun zu meinem Problem:

Nächsten Monat muss ich bei meinem Webhosting Tarif alles auf PHP 7.3 umstellen. Dieses Script funktioniert aber leider nur mit PHP 5.6. Ich kenne mich leider mit PHP gar nicht aus. Frage: Ist es möglich, dass folgende Script so anzupassen, dass es auch unter PHP 7.3 läuft? Bin für jede Hilfe dankbar.

Code: Alles auswählen

<?php
// ############ Anfang Festlegung der Vorgaben ########################################

// Laenge der angezeigten Themenueberschrift in Buchstaben
$topic_length = '60';

// Maximal angezeigte Beiträge
$topic_limit = '7';

// Eingeschraenkte Forumsanzeige ('0' = Aus; '1' = Ein)
$special_forums = '1';

// IDs der zugelassenen Foren (nur wenn Forumsanzeige = "1"); Trennung der IDs mit einem Komma
$forum_ids = '28';

// Relative Pfadangabe zur config.php
$config_path = '/';

// Absoluter Pfad des Forums auf dem Server, bitte eingeben !!!
$root_path = 'https://forum.domain.de/';



// ############ Ende Vorgaben #######################################

//Ermittlung des aktuellen Server-Verzeichnisses für Einbindung config.php
$path = dirname(__FILE__);

// Einbinden der phpBB-Konfigurationsdatei und somit Ermittlung der MySQL-Zugangsdaten
include_once($path.$config_path .'config.php');

// Verbindungsaufbau mit Zugangsdaten aus config.php, Fehlermeldung bei Problemen
mysql_connect($dbhost, $dbuser, $dbpasswd) OR die('Serververbindung fehlgeschlagen');

// Verbindung mit der phpBB-Datenbank herstellen
mysql_select_db($dbname) OR die('Datenbankverbindung fehlgeschlagen!');


//Abfrage ob Foreneinschraenkung gesetzt per Verzweigung und Uebergabe der moeglichen IDS an die Variable
$where_forums = ( $special_forums == '0' ) ? '' : 't.forum_id NOT IN ('. $forum_ids .') AND ';

//Definition der SQL-Abfrage
$sql = "SELECT t.*, f.forum_id, f.forum_name, u.username AS first_poster, u.user_id AS first_poster_id, u2.username AS last_poster, u2.user_id AS last_poster_id, p.post_username AS first_poster_name, p2.post_username AS last_poster_name, p2.post_time
FROM ". $table_prefix ."topics t, ". $table_prefix ."forums f, ". $table_prefix ."users u, ". $table_prefix ."posts p, ". $table_prefix ."posts p2, ". $table_prefix ."users u2
WHERE $where_forums t.topic_poster = u.user_id AND f.forum_id = t.forum_id AND p.post_id = t.topic_first_post_id AND p2.post_id = t.topic_last_post_id AND u2.user_id = p2.poster_id
ORDER BY t.topic_last_post_id DESC LIMIT $topic_limit";


//Durchfuehrung der SQL-Abfrage und Ergebnisuebergabe an $result
$result = mysql_query($sql);

// Wenn Abfrafge fehlgeschlagen = Fehlermeldung
if( !$result )

{
die('SQL-Abfrage fehlgeschlagen!: '. mysql_error());
exit();
}

//Definition Array für Aufnahme der Abfragedaten
$line = array();

// Uebergabe der Daten bis zum letzten Datensatz an Array per Schleife
while( $row = mysql_fetch_array($result) )

{
$line[] = $row;
}

// Strukturiertes Auslesen des Arrays und Variablenuebergabe
for( $i = 0; $i < count($line); $i++ )
{
$forum_id = $line[$i]['forum_id']; //Forums-ID
$topic_id = $line[$i]['topic_id']; //Themen-ID

$forum_url = $root_path .'forum' . $forum_id . '.html'; //Forums-Link
$topic_url = $root_path .'topic'. $topic_id . '.html'; //Themen-Link

// Ausgabeformat der Beitragsueberschrift (Thema)
$topic_title = ( strlen($line[$i]['topic_title']) < $topic_length ) ? $line[$i]['topic_title'] : substr(stripslashes($line[$i]['topic_title']), 0, $topic_length) .'...';

// Themenklassifizierung
$topic_type = ( $line[$i]['topic_type'] == '2' ) ? 'Beitrag ': '';
$topic_type .= ( $line[$i]['topic_type'] == '3' ) ? 'Globaler Beitrag ': '';
$topic_type .= ( $line[$i]['topic_type'] == '1' ) ? 'Kritischer Beitrag ': '';
$topic_type .= ( $line[$i]['topic_vote'] ) ? 'Abstimmung ': '';

$views = $line[$i]['topic_views'];
$replies = $line[$i]['topic_replies'];

$first_time = date('d.m.Y', $line[$i]['topic_time']);
$first_author = ( $line[$i]['first_poster_id'] != '-1' ) ? '<a href="'. $root_path .'profile.php?mode=viewprofile&amp;u='. $line[$i]['first_poster_id'] .'" target="_blank">'. $line[$i]['first_poster'] .'</a>' : ( ($line[$i]['first_poster_name'] != '' ) ? $line[$i]['first_poster_name'] : 'guest' );
$last_time = date('d.m.Y', $line[$i]['post_time']);
$last_author = ( $line[$i]['last_poster_id'] != '-1' ) ? $line[$i]['last_poster'] : ( ($line[$i]['last_poster_name'] != '' ) ? $line[$i]['last_poster_name'] : 'guest' );
$last_url = '<a href="'. $root_path .'viewtopic.php?p='. $line[$i]['topic_last_post_id'] .'#p'. $line[$i]['topic_last_post_id'] .'">'. $last_author .'</a>';
// ############## Eigentliche Ausgabe der Beitraege #############



echo '<ul><li><a href="'. $topic_url .'" target="_top">'. utf8_encode($topic_title) .'</a>';

echo ' in <a href="'. $forum_url .'" target="_top" style="text-decoration:none">'. $line[$i]['forum_name'] .'</a> von ';
// User, Bei Bedarf loeschen

// Datum, Bei Bedarf loeschen


echo $last_url.' (';

echo $last_time.')</li></ul>';





// ############## Ende Eigentliche Ausgabe ##############
}





	




mysql_close(); // Beendigung der Datenbankverbindung
?>

Re: Probleme mit Umstellung auf PHP 7.3

Verfasst: 04.11.2019 19:25
von chris1278
Aber bestimmt nicht mit phpbb 3.2.x denn die 3.2.x Reihe ist nicht mit php 7.3 kompatibel.

Stelle dein Server auf 7.2 um nicht höher.

Re: Probleme mit Umstellung auf PHP 7.3

Verfasst: 04.11.2019 19:36
von Lizardx
Das Forum läuft bei mir bereits unter PHP 7.3. Ich kann meinen Server umstellen nur in: PHP 5.6, PHP 7.1, PHP 7.2 und PHP 7.3

Meine phpBB Version ist auf dem aktuellsten Stand. Das Forum befindet sich im Unterorder. Dieser Unterordner ist auf PHP 7.3 eingestellt.

Mein Root Verzeichnis ist gerad (nur wegen diesem Script) auf PHP 5.6 eingestellt.

Re: Probleme mit Umstellung auf PHP 7.3

Verfasst: 04.11.2019 19:53
von Crizzo
Lizardx hat geschrieben: 04.11.2019 19:36 Das Forum läuft bei mir bereits unter PHP 7.3. Ich kann meinen Server umstellen nur in: PHP 5.6, PHP 7.1, PHP 7.2 und PHP 7.3
Dann wäre PHP 7.2 zu empfehlen, da phpBB 3.2.x nicht mit PHP 7.3 und höher lauffähig ist.

Was genau funktioniert denn mit dem Script nicht? Was leider auch so überhaupt nicht die phpBB-Funktionen nutzt.

Re: Probleme mit Umstellung auf PHP 7.3

Verfasst: 04.11.2019 20:05
von Lizardx
Crizzo hat geschrieben: 04.11.2019 19:53Was genau funktioniert denn mit dem Script nicht? Was leider auch so überhaupt nicht die phpBB-Funktionen nutzt.
Die Tabelle mit den letzten Beiträge erscheinen einfach nicht.

Also, ich habe gerad eine phpinfo Anfrage gemacht. Das Forum läuft unter PHP Version 7.3.9

Re: Probleme mit Umstellung auf PHP 7.3

Verfasst: 04.11.2019 20:16
von Crizzo
Das fängt schon mal hiermit an: https://www.php.net/manual/de/function. ... onnect.php

Diese Funktion gibt es ab PHP 7.0.0 nicht mehr.

Dann gibt es das auch nicht mehr: https://www.php.net/manual/de/function. ... ect-db.php , genauso wie das: https://www.php.net/manual/de/function.mysql-query.php etc.

Evtl. solltest du da einfach auf eine Extension umsteigen oder das Teil komplett neu bauen. :wink:
Lizardx hat geschrieben: 04.11.2019 20:05 Das Forum läuft unter PHP Version 7.3.9
Nochmal: stell es auf PHP 7.2.x

Re: Probleme mit Umstellung auf PHP 7.3

Verfasst: 19.11.2019 12:48
von Lizardx
Wenn ich auf PHP 7.2. umstelle, funktioniert das Script ebenfalls nicht. Ich habe nun einige Mysql Befehle in das neue Format ersetzt. Beispiel:

mysql_connect

in:

mysqli::__construct

Wo ist der Fehler? Wie gesagt, ich kenne mich mit PHP und Mysql nicht gut aus. Hier ist nun das geänderte Script:

Code: Alles auswählen

Wenn ich auf PHP 7.2. umstelle, funktioniert das Script ebenfalls nicht. Ich habe nun einige Mysql Befehle in das neue Format ersetzt. Beispiel:

mysql_connect

in:

mysqli::__construct

Wo ist der Fehler? Wie gesagt, ich kenne mich mit PHP und Mysql nicht gut aus. Hier ist nun das geänderte Script:

[code]<?php
// ############ Anfang Festlegung der Vorgaben ########################################

// Laenge der angezeigten Themenueberschrift in Buchstaben
$topic_length = '60';

// Maximal angezeigte Beiträge
$topic_limit = '7';

// Eingeschraenkte Forumsanzeige ('0' = Aus; '1' = Ein)
$special_forums = '1';

// IDs der zugelassenen Foren (nur wenn Forumsanzeige = "1"); Trennung der IDs mit einem Komma
$forum_ids = '28';

// Relative Pfadangabe zur config.php
$config_path = '/';

// Absoluter Pfad des Forums auf dem Server, bitte eingeben !!!
$root_path = 'https://forum.nline.com/';



// ############ Ende Vorgaben #######################################

//Ermittlung des aktuellen Server-Verzeichnisses für Einbindung config.php
$path = dirname(__FILE__);

// Einbinden der phpBB-Konfigurationsdatei und somit Ermittlung der MySQL-Zugangsdaten
include_once($path.$config_path .'config.php');

// Verbindungsaufbau mit Zugangsdaten aus config.php, Fehlermeldung bei Problemen
mysqli::__construct($dbhost, $dbuser, $dbpasswd) OR die('Serververbindung fehlgeschlagen');

// Verbindung mit der phpBB-Datenbank herstellen
mysqli::select_db($dbname) OR die('Datenbankverbindung fehlgeschlagen!');


//Abfrage ob Foreneinschraenkung gesetzt per Verzweigung und Uebergabe der moeglichen IDS an die Variable
$where_forums = ( $special_forums == '0' ) ? '' : 't.forum_id NOT IN ('. $forum_ids .') AND ';

//Definition der SQL-Abfrage
$sql = "SELECT t.*, f.forum_id, f.forum_name, u.username AS first_poster, u.user_id AS first_poster_id, u2.username AS last_poster, u2.user_id AS last_poster_id, p.post_username AS first_poster_name, p2.post_username AS last_poster_name, p2.post_time
FROM ". $table_prefix ."topics t, ". $table_prefix ."forums f, ". $table_prefix ."users u, ". $table_prefix ."posts p, ". $table_prefix ."posts p2, ". $table_prefix ."users u2
WHERE $where_forums t.topic_poster = u.user_id AND f.forum_id = t.forum_id AND p.post_id = t.topic_first_post_id AND p2.post_id = t.topic_last_post_id AND u2.user_id = p2.poster_id
ORDER BY t.topic_last_post_id DESC LIMIT $topic_limit";


//Durchfuehrung der SQL-Abfrage und Ergebnisuebergabe an $result
$result = mysqli::query($sql);

// Wenn Abfrafge fehlgeschlagen = Fehlermeldung
if( !$result )

{
die('SQL-Abfrage fehlgeschlagen!: '. mysqli::$error());
exit();
}

//Definition Array für Aufnahme der Abfragedaten
$line = array();

// Uebergabe der Daten bis zum letzten Datensatz an Array per Schleife
while( $row = mysql_fetch_array($result) )

{
$line[] = $row;
}

// Strukturiertes Auslesen des Arrays und Variablenuebergabe
for( $i = 0; $i < count($line); $i++ )
{
$forum_id = $line[$i]['forum_id']; //Forums-ID
$topic_id = $line[$i]['topic_id']; //Themen-ID

$forum_url = $root_path .'forum' . $forum_id . '.html'; //Forums-Link
$topic_url = $root_path .'topic'. $topic_id . '.html'; //Themen-Link

// Ausgabeformat der Beitragsueberschrift (Thema)
$topic_title = ( strlen($line[$i]['topic_title']) < $topic_length ) ? $line[$i]['topic_title'] : substr(stripslashes($line[$i]['topic_title']), 0, $topic_length) .'...';

// Themenklassifizierung
$topic_type = ( $line[$i]['topic_type'] == '2' ) ? 'Beitrag ': '';
$topic_type .= ( $line[$i]['topic_type'] == '3' ) ? 'Globaler Beitrag ': '';
$topic_type .= ( $line[$i]['topic_type'] == '1' ) ? 'Kritischer Beitrag ': '';
$topic_type .= ( $line[$i]['topic_vote'] ) ? 'Abstimmung ': '';

$views = $line[$i]['topic_views'];
$replies = $line[$i]['topic_replies'];

$first_time = date('d.m.Y', $line[$i]['topic_time']);
$first_author = ( $line[$i]['first_poster_id'] != '-1' ) ? '<a href="'. $root_path .'profile.php?mode=viewprofile&amp;u='. $line[$i]['first_poster_id'] .'" target="_blank">'. $line[$i]['first_poster'] .'</a>' : ( ($line[$i]['first_poster_name'] != '' ) ? $line[$i]['first_poster_name'] : 'guest' );
$last_time = date('d.m.Y', $line[$i]['post_time']);
$last_author = ( $line[$i]['last_poster_id'] != '-1' ) ? $line[$i]['last_poster'] : ( ($line[$i]['last_poster_name'] != '' ) ? $line[$i]['last_poster_name'] : 'guest' );
$last_url = '<a href="'. $root_path .'viewtopic.php?p='. $line[$i]['topic_last_post_id'] .'#p'. $line[$i]['topic_last_post_id'] .'">'. $last_author .'</a>';
// ############## Eigentliche Ausgabe der Beitraege #############



echo '<ul><li><a href="'. $topic_url .'" target="_top">'. utf8_encode($topic_title) .'</a>';

echo ' in <a href="'. $forum_url .'" target="_top" style="text-decoration:none">'. $line[$i]['forum_name'] .'</a> von ';
// User, Bei Bedarf loeschen

// Datum, Bei Bedarf loeschen


echo $last_url.' (';

echo $last_time.')</li></ul>';





// ############## Ende Eigentliche Ausgabe ##############
}





	




mysqli::close(); // Beendigung der Datenbankverbindung
?>
  
[/code]

Re: Probleme mit Umstellung auf PHP 7.3

Verfasst: 19.11.2019 12:52
von Crizzo
Ja, natürlich nicht.

Wie ich schrieb, gehen die Funktionen nicht bei PHP 7.0 und höher. Also auch unter PHP 7.2 geht es nicht, damit läuft aber immerhin phpBB3.2.8 problemlos.

Aber so 1:1 kann du die ich ersetzen. Nimm am besten die phpBB Funktionen dafür, dann musst du nicht alles selbst machen.

Grüße

Re: Probleme mit Umstellung auf PHP 7.3

Verfasst: 23.12.2019 11:46
von BNa
Hallo,

hier nochmal die Verlinkung zu dem nun funktionierenden Script (irritiert ja sonst nur):

viewtopic.php?f=6&t=243749&p=1399225#p1399225

Gruß...