Home
Download
Add-ons
Help
Forum
Organisation
Project
Welcome,
Guest
. Please
login
or
register
.
Did you miss your
activation email?
May 26, 2012, 06:37:49 AM
1 Hour
1 Day
1 Week
1 Month
Forever
Login with username, password and session length
Search:
Advanced search
Interested in joining the WebsiteBaker team?
For more Information read
here
or on our
new website
.
155534
Posts in
21713
Topics by
7760
Members
Latest Member:
chris85
WebsiteBaker Community Forum
Deutsch (German)
Hilfe/Support
(Moderator:
badknight
)
Schon VOR config.php checken, ob User angemeldet ist?
Pages: [
1
]
Go Down
Author
Topic: Schon VOR config.php checken, ob User angemeldet ist? (Read 765 times)
chio
WebsiteBaker Org e.V.
Offline
Posts: 2264
Schon VOR config.php checken, ob User angemeldet ist?
«
on:
June 14, 2010, 08:15:39 AM »
Gibt es eine schnelle Möglichkeit schon im access-file zu checken, ob der aktuelle User angemeldet ist - noch bevor die config.php oder index.php geladen wird?
Etwa über $_SESSION?
Hintergrund: Eine Seite hat sehr sprunghaft viele Zugriffe, immer um bestimmte Zeiten herum. Ich denke daran, zumindest die Seiten der ersten Ebene (die sich nur selten ändern) zu cachen, und zwar schon im access-file:
if (user ist angemeldet) {wie üblich} else {include('cache-seite-xx.php'); fertig;}
Hintergrund2: Die Startseite ist sehr komplex (viele Module), da kann mal ein Fehler passieren. Die Redakteure möchten nicht, dass Fehler gleich für alle sichtbar sind.
Das Caching selbst wäre brachial: wird ein bestimmter Parameter mitgegeben, wird $output am ende der index.php als file rausgeschrieben.
Logged
*weg*
DarkViper
Development Team
Offline
Posts: 1252
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #1 on:
June 14, 2010, 08:57:20 AM »
ganz kurz: nein
etwas weniger kurz:
es ist nicht möglich, die richtige Session zu starten, solange man den APP_NAME noch nicht aus der Datenbank ausgelesen hat.
Eine 'Hauruck-Lösung' stellt die komplette Sicherheit in WB in Frage.
Logged
Anleitungen lesen und selber nachdenken ist anstrengend... Da lass ich doch lieber andere für mich denken...
In
1984
: Nineteen Eighty-Four is a unrealistic utopia!!
In
2012
: Nineteen Eighty-Four is a little piece only of our reality!!
chio
WebsiteBaker Org e.V.
Offline
Posts: 2264
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #2 on:
June 14, 2010, 09:45:22 AM »
Ich will ja gar keine Session starten. Es geht nur darum, zu erkennen ob ein Besucher überhaupt eine hat.
Also: Hat der aktuelle Besucher - sicher -
keine
Berechtigungen?
Das möchte ich wissen, bevor das ganze Werkel gestartet wird, weil ich es ja dann gar nicht brauche.
Logged
*weg*
DarkViper
Development Team
Offline
Posts: 1252
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #3 on:
June 14, 2010, 11:33:49 AM »
geht nicht..
Du brauchst den APP_NAME aus den Settings, um die aktuelle WB-Session öffnen zu können, die die meisten erforderlichen Infos enthält.
Die Datenbank und die Session sind die einzigen Stellen, wo Du Deine benötigten Infos holen kannst. Cookies sind für solche Zwecke indiskutabel.
Ansonsten hilft nur die Glaskugel.....
Logged
Anleitungen lesen und selber nachdenken ist anstrengend... Da lass ich doch lieber andere für mich denken...
In
1984
: Nineteen Eighty-Four is a unrealistic utopia!!
In
2012
: Nineteen Eighty-Four is a little piece only of our reality!!
chio
WebsiteBaker Org e.V.
Offline
Posts: 2264
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #4 on:
June 14, 2010, 12:35:11 PM »
Ja. APP_NAME kommt aus der Datenbank.
Aber: Wenn ich die Konstante APP_NAME (die sich ja nie mehr ändert) schon im access-file angebe - spricht da was dagegen? - dann weiß ich: Zu dieser Seite sollte eine Cache-Version vorhanden sein.
Das access-file ist ja schnell mal neu angelegt.
Dann kann ich ganz oben in framework/initialize.php das einfügen:
Code:
if(defined('APP_NAME') AND count($_POST)==0 AND count($_GET)==0) {
session_name(APP_NAME.'_session_id');
@session_start();
define('SESSION_STARTED', true);
if (isset($_SESSION['USER_ID'])) {
//User ist angemeldet - hier nichts tun
} else {
$p = WB_PATH.'/cache/cache'.$page_id.'.html';
if (file_exists($p)) {
include($p);
die();
}
}
}
Jetzt müsste ich mich nur mehr darum kümmern, dass die cache-files geschrieben/verwaltet werden. ("nur mehr" ist gut..)
Und schauen, dass eventuelle Parameter (GET/POST) keinen Ärger machen;
Ich hab mal auf die Ladezeiten (Latenzzeit) geschaut: Bei Seiten mit großen Menüs (dropdown mit 70 Seiten) und vielen Modulen trägt das ganz schön auf: von 1.5 Sekunden runter auf 200ms. Stimmt natürlich: Das geht nur mit Websites, die sich kaum ändern.
Nebenfrage: Warum legt WB eigentlich IMMER eine Session an?
«
Last Edit: June 14, 2010, 12:57:26 PM by chio
»
Logged
*weg*
DarkViper
Development Team
Offline
Posts: 1252
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #5 on:
June 14, 2010, 12:57:10 PM »
Das wird nur kurzfristig funktionieren, da zukünftig Accessfiles ein absolut einheitliches, festes Format haben müssen und nur noch von einer Core-Funktion angelegt werden dürfen. Sie werden bei einem Neuaufbau des Seitenbaumes oder einer Reorganisation gnadenlos vom System überschrieben werden.
(nur als kleine Vorwarnung auf die nächsten Releases)
Logged
Anleitungen lesen und selber nachdenken ist anstrengend... Da lass ich doch lieber andere für mich denken...
In
1984
: Nineteen Eighty-Four is a unrealistic utopia!!
In
2012
: Nineteen Eighty-Four is a little piece only of our reality!!
chio
WebsiteBaker Org e.V.
Offline
Posts: 2264
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #6 on:
June 14, 2010, 01:07:53 PM »
Naja - in diesem Fall würde einfach das Caching aussetzen; kein Malheur, weil keine anderen Folgen.
Solange bis man "nachgebessert" hat.
Logged
*weg*
pcwacht
AddOn Development
Offline
Posts: 2859
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #7 on:
June 14, 2010, 02:21:56 PM »
Caching kann auch ins template versteckt werden,
show cache if page_id = ('1',12',....) und so weiter
nachteile ist naturlich dass manche db abfrage schon passiert sind, aber sie haben auch mehr control aufs cache
Und grosse vorteile, soll immer klappen, auch nach ein update
Gruss,
John
Logged
http://www.ictwacht.nl
= Dutch ICT info
http://www.pcwacht.nl
= My first
both still work in progress, since years.....
chio
WebsiteBaker Org e.V.
Offline
Posts: 2264
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #8 on:
June 14, 2010, 03:15:42 PM »
Hallo John,
Das habe ich schon versucht. Das Problem dabei: Es bringt nicht viel.
Einige Module sind langsam, aber da müsste man die Module selbst ändern.
Vor allem bremst auch das Menü sehr stark, wenn viele Menüpunkte sind.
Logged
*weg*
thorn
Offline
Posts: 980
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #9 on:
June 14, 2010, 04:17:18 PM »
Hallo,
der passende Ort dafür wäre die index.php im root-Verzeichnis.
Und zwar ziemlich am Ende, aber bevor das Template aufgerufen wird.
Das hat den Vorteil, das dort die Session schon erzeugt ist, und du einfach is_authenticated() benutzen kannst.
Z.B:
Code:
if($wb->is_authenticated()) {
// require Template ... und so weiter
} else {
// Seite im Cache?
// aus Cache lesen,
// oder require Template ...
// in Cache schreiben
}
// Ausgeben
thorn.
«
Last Edit: June 14, 2010, 05:48:47 PM by thorn
»
Logged
Projekte
chio
WebsiteBaker Org e.V.
Offline
Posts: 2264
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #10 on:
June 14, 2010, 04:51:41 PM »
Ja, das ginge natürlich auch.
Aber: Wenn schon knausern, dann richtig! Also auch ohne functions und classes und allem.
ein fehlendes $_SESSION['USER_ID'] als Merkmal sollte völlig reichen, denke ich.
Logged
*weg*
pcwacht
AddOn Development
Offline
Posts: 2859
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #11 on:
June 14, 2010, 05:43:05 PM »
Am besten sie fangen an mit die index.php weil sie nuhr EIN bestand erweitern muss
Auch wird jedes access-file gleich dieser index.php ausfuhren
Anderungen am haupt index.php
Gleich nach $wb = new frontend();
kannst du is_authenticated(); nutzen
Ist am schnellsten.
Viel spass,
John
Logged
http://www.ictwacht.nl
= Dutch ICT info
http://www.pcwacht.nl
= My first
both still work in progress, since years.....
chio
WebsiteBaker Org e.V.
Offline
Posts: 2264
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #12 on:
June 16, 2010, 07:32:34 AM »
Wie kann ich eigentlich feststellen, ob es überhaupt eine bestehende Session gibt? Ohne eine anzulegen?
Logged
*weg*
DarkViper
Development Team
Offline
Posts: 1252
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #13 on:
June 16, 2010, 05:38:36 PM »
Normalerweise startet eine default Session automatisch (lässt sich in der PHP-ini einstellen), sobald auf eine Sessionvariable ( $_SESSION['xyz'] ) zugegriffen wird.
Aus Sicherheitsgründen nutzt WB jedoch nicht die default-Session, sondern versieht sie mit einem speziellen Namen.
session_name( APP_NAME.'_session_id' );
@ session_start( );
Wird die Session auf andere Weise gestartet, so steht sie zwar zur Verfügung, enthält aber nicht die Inhalte der eigentlichen WB-Session.
Des weiteren sind die Auswirkungen auf das komplette System völlig unkalkulierbar, wenn die Session ausserhalb des normalen Kontext gestartet wird. (WB ist in der Hinsicht sehr instabil)
Logged
Anleitungen lesen und selber nachdenken ist anstrengend... Da lass ich doch lieber andere für mich denken...
In
1984
: Nineteen Eighty-Four is a unrealistic utopia!!
In
2012
: Nineteen Eighty-Four is a little piece only of our reality!!
chio
WebsiteBaker Org e.V.
Offline
Posts: 2264
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #14 on:
June 24, 2010, 07:29:24 AM »
Ja, ich habe gemerkt, dass das "so" - ich hab ja in den php-Foren gestochert - nicht funktioniert.
Das bedeutet aber, dass dass ich grundsätzlich immer eine Session starten muss, um zu überprüfen, ob eine nötig ist.
Ist das schlau?
Selbst auf einer aktiven Site braucht nur jeder 1000e Besucher eine Session.
Könnte man nicht die Standard-Session benutzen, um anzuzeigen, dass es eine weitere Session (nicht Standard) gibt?
Logged
*weg*
DarkViper
Development Team
Offline
Posts: 1252
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #15 on:
June 24, 2010, 10:44:50 AM »
Quote from: chio on June 24, 2010, 07:29:24 AM
Selbst auf einer aktiven Site braucht nur jeder 1000e Besucher eine Session.
das ist sooo nicht ganz richtig.....
Grundsätzlich jeder Aufruf einer Seite benutzt die eine Session.
Viele Module sind ohne Session gar nicht lauffähig, da sie mittels Session verschiedene Einstellungen/Variablen von einem Seitenaufruf zum nächsten weiterreichen.
Die Session enthält u.a. die Grundeinstellungen eines Users, um bei jedem Seitenaufruf ein komplettes Neuerstellen aus der Datenbank zu vermeiden.
Auch ein nicht angemeldeter User ist trotzdem ein Benutzer der Site, nur eben der mit der UserID 0.. und vordefinierten Einstellungen.
Die erste Funktion die bei WB aufgerufen wird, heist nicht umsonst 'initialize' ... Was bedeutet, dass sie das System beim Start (und darunter ist absolut jeder externe Aufruf einer WB-Funktion zu verstehen) initialisiert und dadurch in einen genau definierten Ausgangszustand versetzt.
Logged
Anleitungen lesen und selber nachdenken ist anstrengend... Da lass ich doch lieber andere für mich denken...
In
1984
: Nineteen Eighty-Four is a unrealistic utopia!!
In
2012
: Nineteen Eighty-Four is a little piece only of our reality!!
chio
WebsiteBaker Org e.V.
Offline
Posts: 2264
Re: Schon VOR config.php checken, ob User angemeldet ist?
«
Reply #16 on:
June 24, 2010, 02:29:33 PM »
Jepp, ich hab den Krempel, um den es geht mal hier zusammengeschreieb, vielleicht kann ja wer was damit anfangen:
http://www.websitebaker2.org/forum/index.php/topic,18589.msg123998.html#msg123998
Logged
*weg*
Pages: [
1
]
Go Up
Jump to:
Please select a destination:
-----------------------------
General
-----------------------------
=> General Announcements
=> Security Announcements
=> Documentation
=> WebsiteBaker Website Showcase
=> Guest Area & Off-Topic
-----------------------------
English
-----------------------------
=> WebsiteBaker 2.9
===> Announcements
===> Help/Support
=====> Modules / Extensions
===> Suggestions
===> Software bugs
=> Help & Support
=> Modules
=> Droplets (PHP code for use with Droplet module) & Snippets (raw PHP code)
=> jQuery
=> Templates, Menus & Design
=> WebsiteBaker Language Files
=> WebsiteBaker 2.x discussion
=> WebsiteBaker 3
=> Archive (posts up to 2007)
-----------------------------
Deutsch (German)
-----------------------------
=> Ankündigungen
=> WebsiteBaker 2.9
===> Ankündigungen
===> Hilfe/Support
=====> Module / Extensions
===> Vorschläge
===> Softwarefehler
===> Erfahrungs und Testberichte
=> Hilfe/Support
=> Module & Snippets
=> Templates & Design
=> Tutorials
=> jQuery
=> Diskussion über WB
=> Off-Topic
=> Archiv für Themen bis 2007
-----------------------------
Nederlands (Dutch)
-----------------------------
=> Aankondigingen
=> Hulp & Ondersteuning
=> Niet-Terzake (Off Topic)
-----------------------------
Francais (French)
-----------------------------
=> Help/Support
-----------------------------
Italiano (Italian)
-----------------------------
=> Help/Support
-----------------------------
Bakery (WB shop module)
-----------------------------
=> Bakery English
=> Bakery Deutsch
-----------------------------
KeepInTouch (Multi Contact Module)
-----------------------------
=> KeepInTouch English
=> KeepInTouch Deutsch
Loading...