UWAGA: W PHP wykryto krytyczne podatności, przez które Wasze strony/fora mogą zostać zhakowane! Dzisiaj mają być udostępnione poprawione wersje, warto monitorować i ustawić odpowiendie wersje PHP na swom serwerze.

Poprawki będę zawarte w wersjach PHP: 8.5.12, 8.4.27, 8.3.36 oraz 8.2.35! Jeśli używacie jeszcze wersje PHP 7.x lub 8.0.x lub 8.1.x, należy, jak najszybciej podnieść wersje PHP i/lub zaktualizować swoje fora!

Do momentu wdrożenia oficjalnej łatki, ryzyko ataku można drastycznie zmniejszyć poprzez zmianę konfiguracji w pliku php.ini:
Ustaw: session.upload_progress.enabled = Off

Albo np., można zrobić: https://ma.ttias.be/php-cve-2026-109618 ... itigation/

Dla serwera Apache ustaw w pliku .htaccess

Kod: Zaznacz cały

RewriteEngine On
RewriteCond %{HTTP:Content-Type} multipart/form-data [NC]
RewriteRule ^ - [F]
i/lub - nie testowałem

Kod: Zaznacz cały

<If "req('Content-Type') =~ /multipart/i">
    Require all denied
</If>

Dla nginx

Kod: Zaznacz cały

# http {} context, e.g. /etc/nginx/conf.d/block-multipart.conf
map $http_content_type $block_multipart {
    default       0;
    "~*multipart" 1;
}

# inside every server {} that passes requests to PHP, including default/catch-all servers
if ($block_multipart) {
    return 403;
}
_____________________________________________________

Pojawiła się nowa wersja systemu - phpBB 3.3.19. Ostatnie wydania (od wersji 3.3.17 do najnowszej) przynoszą kluczowe poprawki, które chronią Twoje forum przed zagrożeniami i dbają o spokój Twojej społeczności. Polecam nie odkładać tego na później, tyllko zaktualizować fora!

Polski pakiet językowy dla phpBB 3.3.19

Funkcja add_file

Rozmowy z innymi użytkownikami forum na różne tematy, niekoniecznie związane ze skryptem phpBB.
Awatar użytkownika
Betrayal
Zasłużony
Posty: 649
Rejestracja: 18 marca 2006, 16:15
Lokalizacja: Otwock pod W/w

Funkcja add_file

Post autor: Betrayal » 22 kwietnia 2007, 16:04

Witam

Utworzyłem plik index.php o następującej budowie:

Kod: Zaznacz cały

$key_path = "./";
include ($key_path . "db_config.php");
include ($key_path . "modules/functions.php");

$style = new Style ();
$style-> file_html('index.html');

@include ($key_path . "language/polish.php");

foreach( $lang["header"] as $key => $value ) {
  $style-> add_file("LANG_" . $key, $value);
}
Jak widać, znajduje się tam odwołanie do pliku polish.php, który wygląda tak:

Kod: Zaznacz cały

$lang["header"] = array(
    "POWERED_INFO" => "Forum oparte o skrypt ***",
);
Następnie utworzyłem plik index.html i funkcję file_html.

Plik:

Kod: Zaznacz cały

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<title><{BOARD_TITLE}> &bull; <{LANG_POWERED_INFO}></title>
</head>
<body>

</body>
</html>
Funkcja:

Kod: Zaznacz cały

public function file_html($file)
  {
    if (file_exists ("styles/KeyStyle/$file"))  include ("styles/KeyStyle/$file");

    else echo ('<span style="color:red;"><b>Brak pliku ' . $file . ' w szablonie ' .  $this->style_name . '</b></span>');
  
  }
Teraz chciałbym stworzyć funkcję add_file. Polegałaby ona na tym, że LANG_ znajdujący się w pętli foreach łączył się z $key i zamieniał się na $value. Normalnie użyłbym funkcji str_replace, ale chodzi o to, że LANG_ połączone z $key w pliku index.html wyglądało tak:

Kod: Zaznacz cały

<{LANG_$key}>
I to zamieniało się po wejściu na stronę na odpowiedni kod, który jest załączony w pliku polish.php, np. dam w pliku index.html kod:

Kod: Zaznacz cały

<{LANG_POWERED_INFO}>
A na stronie ma się wyświetlić napis "Forum oparte o skrypt ***"

Mam nadzieję, że zrozumieliście o co chodzi. Jest mi to bardzo potrzebne, gdyż nie chcę mieszać kodu PHP z kodem HTML w jednym pliku.

Pozdrawiam

P.S. Jeżeli nie zrozumieliście, o co mi chodzi, ściągnijcie EKINboard, tam jest coś podobnego. Prosiłbym także o nieodsyłanie mnie na strony oferujące ściągnięcie systemu templatek, a także niezmienianie jakiegokolwiek pliku. Proszę jedynie o zbudowanie takowej funkcji, gdyż sam nie daję sobie rady :) Proszę bardzo o tę pomoc, bo pisałem na profesjonalnych forach o PHP i nikt nie raczył odpowiedzieć mi na pytanie ;(

ODPOWIEDZ

Wróć do „Ogólne dyskusje”