Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 18. Mai 2015 13:11
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Drei auf einen Streich?
if (!isset($DONT_LOAD_DB))
{
debug_buffer('Initialize Database');
cmsms()->GetDb();
debug_buffer('Done Initializing Database');if (isset($CMS_ADMIN_PAGE) && !isset($CMS_LOGIN_PAGE))
{
$db = cmsms()->GetDb();
$current_version = $CMS_SCHEMA_VERSION;
$query = "SELECT version from " . cms_db_prefix() . "version";
$current_version = $db->GetOne($query);
if ($current_version < $CMS_SCHEMA_VERSION)
{
redirect($config['root_url'] . "/install/upgrade.php");
}
}
}
1. Ich kann nicht so richtig glauben, dass es Sinn macht, hier zwei mal eine Datenbankverbindung aufzubauen (cmsms()->GetDb()) - wird ja eh nur 1x die Version in der Datenbank abgefragt.
2. Dann scheint mir diese Zeile zu viel zu sein
$current_version = $CMS_SCHEMA_VERSION;
denn 2 Zeilen später wird der Wert von $current_version ja von dem Wert aus der Datenbankabfrage überschrieben.
3. Und last but not least kann dies
if ($current_version < $CMS_SCHEMA_VERSION)
{
redirect($config['root_url'] . "/install/upgrade.php");
}
durchaus in die Hose gehen - nämlich genau dann, wenn /install/upgrade.php nicht vorhanden ist. Da wird ins Nichts weitergeleitet.
Da erscheint mir dies sinnvoller
if ($current_version < $CMS_SCHEMA_VERSION && is_file($config['root_url'] . "/install/upgrade.php"))
{
redirect($config['root_url'] . "/install/upgrade.php");
}
Oder sehe ich schon Gespenster?
Offline
#2 18. Mai 2015 14:32
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.436
Re: Drei auf einen Streich?
So weit ich das erkennen kann, wird mit GetDb() nicht jedesmal eine neue Datenbankverbindung hergestellt. Lediglich beim ersten Aufruf wird eine Verbindung hergestellt und ein Datenbank-Objekt zurückgegeben. Dieses wird nach dem ersten Aufruf in einer Variable zwischengespeichert. Bei weiteren Aufrufen wird lediglich eine Referenz auf dieses Datenbank-Objekt zurückgegeben.
Abgesehen davon ... ja, theoretisch könnte das in die Hose gehen. Aber wenn man bedenkt, dass die beiden Versionen (die in der DB und die in der version.php) nur dann in der Form abweichen können, wenn man neuere Dateien auf den Server geladen hat, wodurch - wenn sowohl Entwickler als auch Anwender alles korrekt gemacht haben - automatich immer eine "/install/upgrade.php" existieren dürfte, dann finde ich das eher trivial.
Ändert aber nichts daran, dass der Kuddelmuddel auch einfacher geht. Vor allem wenn man bedenkt, dass im Code schon eine gefühlte Ewigkeit drin steht, dass genau dieser Passus "später mal" entfernt werden soll.
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#3 18. Mai 2015 15:03
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: Drei auf einen Streich?
Abgesehen davon ... ja, theoretisch könnte das in die Hose gehen. ... dann finde ich das eher trivial.
Sicherlich, ist aber insgesamt inkonsistent - da wird auf Teufel komm raus auf PHP-Funktionen und -Versionen geprüft, die schon lange Standard sind ...
Vor allem wenn man bedenkt, dass im Code schon eine gefühlte Ewigkeit drin steht, dass genau dieser Passus "später mal" entfernt werden soll.
Das Problem dürfte sein, dass es nur im Code und maximal noch auf einer (vergilbten) Haftnotiz des notierenden Entwicklers steht, der vermutlich schon gar nicht mehr an Bord ist. Andere Projekte verwenden dafür ein funktionierendes Ticketsystem ...
Offline
Seiten: 1