Programmierhilfe
Programmierhilfe
Darf ich mich hier mal an euch wenden mit einer Programmierfrage, wo ich derzeit auf der Stelle trampele?
In der forum_funktions lese ich derzeit die Parameter des Forums über SQL Statements aus. Parameter wie der Cookie heisst, welcher Pfad u.s.w.
Das dumme ist nun, dass alle die SQL Statements bei JEDEM laden der forum_funktions erneut eingelesen werden. Auf dauer relativ unperfomant.
So komme ich auf die Idee, die Parameter in $_SESSION abbzulegen, um unnötige Zugriffe auf die DB zu vermeiden.
Also baue ich in der forum_functions ein:
Soweit, sogut... Jedoch sind bei jeder Aktualisierung der HP oder einem Klick auf eine anderen, internen Link. genau all diese $_SESSION Vars wieder leer?
Seltsamerweise sind alle anderen $_SESSION Vars von Admidio weiterhin vorhanden. Lediglich die vom Forum werden jedes mal zurück gesetzt.
Die forum_functions binde ich am ende der common.php mit require_once("..") ein.
Bin sogar schon soweit gegangen, dass ich die Variablen aus der forum_function herausgenommen habe und den obigen Abschnitt in die common.php eingepflegt habe. Direkt hinter den $_SESSION Var Definitionen von Admidio.
Gleicher Effekt, bei jedem Aktualisieren oder Klick auf einen Link sind sie wieder leer!
Seltsamerweise scheinen sie jedoch NICHT ungesetzt zu sein. Denn die if(isset...) Abfrage zweigt nach mehrmaligem prüfen in den TRUE zweig und weisst die Inhalte zu - die jedoch leider leer sind!
Hat jemand eine Idee, was ich hier falsch mache?
Das dumme ist nun, dass alle die SQL Statements bei JEDEM laden der forum_funktions erneut eingelesen werden. Auf dauer relativ unperfomant.
So komme ich auf die Idee, die Parameter in $_SESSION abbzulegen, um unnötige Zugriffe auf die DB zu vermeiden.
Also baue ich in der forum_functions ein:
Code: Alles auswählen
// Globale Variablen fuer das Forum
$g_forum_session_id = ""; // Die Session fuer das Forum
$g_forum_session_valid = FALSE; // Session gueltig
$g_forum_user = ""; // Username im Forum
$g_forum_userid = ""; // UserID im Forum
$g_forum_neuePM = ""; // Nachrichten im Forum
$g_forum_sitename = ""; // Name des Forums
$g_forum_server = ""; // Server des Forums
$g_forum_path = ""; // Pfad zum Forum
$g_forum_cookie_name = ""; // Name des Forum Cookies
$g_forum_cookie_path = ""; // Pfad zum Forum Cookies
$g_forum_cookie_domain = ""; // Domain des Forum Cookies
$g_forum_cookie_secure =""; // Cookie Secure des Forums
// Session Variablen fuer das Forum auslesen
if(isset($_SESSION['g_forum_sitename'])
&& isset($_SESSION['g_forum_cookie_name'])
&& isset($_SESSION['g_forum_cookie_path'])
&& isset($_SESSION['g_forum_cookie_domain'])
&& isset($_SESSION['g_forum_cookie_secure'])
&& isset($_SESSION['g_forum_server'])
&& isset($_SESSION['g_forum_path']))
{
$g_forum_sitename = $_SESSION['g_forum_sitename'];
$g_forum_cookie_name = $_SESSION['g_forum_cookie_name'];
$g_forum_cookie_path = $_SESSION['g_forum_cookie_path'];
$g_forum_cookie_domain = $_SESSION['g_forum_cookie_domain'];
$g_forum_cookie_secure = $_SESSION['g_forum_cookie_secure'];
$g_forum_server = $_SESSION['g_forum_server'];
$g_forum_path = $_SESSION['g_forum_path'];
}
else
{
// Forums DB waehlen
mysql_select_db($g_forum_db, $g_forum_con);
$sql = "SELECT config_value FROM ". $g_forum_praefix. "_config WHERE config_name = 'sitename' ";
$result = mysql_query($sql, $g_forum_con);
db_error($result);
$row = mysql_fetch_array($result);
$g_forum_sitename = $row[0];
$_SESSION['g_forum_sitename'] = $g_forum_sitename;
[b].... für jeden der Parameter [/b]
Seltsamerweise sind alle anderen $_SESSION Vars von Admidio weiterhin vorhanden. Lediglich die vom Forum werden jedes mal zurück gesetzt.
Die forum_functions binde ich am ende der common.php mit require_once("..") ein.
Bin sogar schon soweit gegangen, dass ich die Variablen aus der forum_function herausgenommen habe und den obigen Abschnitt in die common.php eingepflegt habe. Direkt hinter den $_SESSION Var Definitionen von Admidio.
Gleicher Effekt, bei jedem Aktualisieren oder Klick auf einen Link sind sie wieder leer!
Seltsamerweise scheinen sie jedoch NICHT ungesetzt zu sein. Denn die if(isset...) Abfrage zweigt nach mehrmaligem prüfen in den TRUE zweig und weisst die Inhalte zu - die jedoch leider leer sind!
Hat jemand eine Idee, was ich hier falsch mache?
PATSCH- Ich glaube es ja echt nicht. Bin dahinter gekommen!
So unglaublich es klingt
$g_forum und $_SESSION['g_forum'] behandelt das PHP als ein und dieselbe Variable!
Da am Angfang meine globalen Variablen initiiert werden
Werden auch gleichzeitig und vollkommen automatisch die $_SESSION Variablen mit dem gleichen Namen in '' initiert.
Was bedeutet, die Variablen sind gesetz (der if(isset...)) kommt in die TRUE abhandlung und übernimmt die frisch initierten LEEREN Felder. Hammer!
Muss also meine Session Vars etwas anders bennenen, wie meine Globalen Vars.
Hätte das von euch jemand gedacht oder damit schon mal Erfahrung gemacht?




So unglaublich es klingt
$g_forum und $_SESSION['g_forum'] behandelt das PHP als ein und dieselbe Variable!
Da am Angfang meine globalen Variablen initiiert werden
Code: Alles auswählen
$g_forum_sitename = "";
$g_forum_server = "";
$g_forum_path = "";
$g_forum_cookie_name = "";
$g_forum_cookie_path = "";
$g_forum_cookie_domain = "";
$g_forum_cookie_secure ="";
Was bedeutet, die Variablen sind gesetz (der if(isset...)) kommt in die TRUE abhandlung und übernimmt die frisch initierten LEEREN Felder. Hammer!
Muss also meine Session Vars etwas anders bennenen, wie meine Globalen Vars.
Hätte das von euch jemand gedacht oder damit schon mal Erfahrung gemacht?
Ist bei dir gesetzt ?
Laut Anleitung ist dies nur dann der Fall und es wäre eine Erklärung warum es bei meinem Test eben funktioniert hat. Ich hab register_globals auf off.
Aber gewusst hab ich das nicht. Sind wir wieder ein Stück schlauer
Code: Alles auswählen
register_globals = ON
Laut Anleitung ist dies nur dann der Fall und es wäre eine Erklärung warum es bei meinem Test eben funktioniert hat. Ich hab register_globals auf off.
Aber gewusst hab ich das nicht. Sind wir wieder ein Stück schlauer

In der Tat ist bei mir
Gruß Thomas
Code: Alles auswählen
register_globals = ON
Werde dann heute noch ein paar Verbesserungen - vor allem Performance - im Forum Funktion Script vornehmen. Derzeit habe ich bei jedem laden einer Seite die Prüfung ob es den User im Forum gibt.
Das werde ich derart verändern, dass diese Abfrage nur bei einem gültigen Login gemacht wird und nur einmailig bis zum Logout bestehen bleibt.
Denke dadurch wird sich die Anzahl der SQL noch mal drastisch verringern.
Das werde ich derart verändern, dass diese Abfrage nur bei einem gültigen Login gemacht wird und nur einmailig bis zum Logout bestehen bleibt.
Denke dadurch wird sich die Anzahl der SQL noch mal drastisch verringern.