Programmierhilfe

Topics from older beta tests.
Gesperrt
fly2me
Former team member
Beiträge: 300
Registriert: 27. Nov 2006, 10:38
Wohnort: Zürich

Programmierhilfe

Beitrag von fly2me »

Darf ich mich hier mal an euch wenden mit einer Programmierfrage, wo ich derzeit auf der Stelle trampele?
Jochen
Team
Beiträge: 1506
Registriert: 22. Feb 2006, 18:11

Beitrag von Jochen »

Natürlich nicht!!! :D

Was gibts denn, schieß los...
fly2me
Former team member
Beiträge: 300
Registriert: 27. Nov 2006, 10:38
Wohnort: Zürich

Beitrag von fly2me »

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:

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]                                                   
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?
Benutzeravatar
fasse
Administrator
Beiträge: 6227
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Sind alle deine g_forum... Variablen leer ? Oder nur einige ?

Kannst du evtl. noch mal die forum_functions.php so einchecken, wie es eigentlich mit $_SESSION klappen sollte.
fly2me
Former team member
Beiträge: 300
Registriert: 27. Nov 2006, 10:38
Wohnort: Zürich

Beitrag von fly2me »

Alle anderen Variablen, wie g_forum_userid, g_forum_user u.s.w. sind gefüllt und ok.
Nur die, die ich in die SESSION schaufeln möchte und wieder auslesen will, sind leer.
Benutzeravatar
fasse
Administrator
Beiträge: 6227
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Check mal bitte den Stand ein, mit dem du gerade arbeitest und wo es nicht funktioniert. Ohne test-Variablen und so.
fly2me
Former team member
Beiträge: 300
Registriert: 27. Nov 2006, 10:38
Wohnort: Zürich

Beitrag von fly2me »

PATSCH- Ich glaube es ja echt nicht. Bin dahinter gekommen! :D :D :D :D

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 ="";  
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?
Benutzeravatar
fasse
Administrator
Beiträge: 6227
Registriert: 12. Nov 2005, 16:06

Beitrag von fasse »

Ist bei dir

Code: Alles auswählen

register_globals = ON
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 :)
fly2me
Former team member
Beiträge: 300
Registriert: 27. Nov 2006, 10:38
Wohnort: Zürich

Beitrag von fly2me »

In der Tat ist bei mir

Code: Alles auswählen

register_globals = ON
Gruß Thomas
fly2me
Former team member
Beiträge: 300
Registriert: 27. Nov 2006, 10:38
Wohnort: Zürich

Beitrag von fly2me »

Die forum_function.php in der letzten Version klappt hervorragend!

Eine Sache die mir am Rande aufgefallen ist. Habe diese Änderungen in der Common und Message gemacht. Es läuft alles irgendwie schneller, oder ist's ne Einbildung?
fly2me
Former team member
Beiträge: 300
Registriert: 27. Nov 2006, 10:38
Wohnort: Zürich

Beitrag von fly2me »

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.
fly2me
Former team member
Beiträge: 300
Registriert: 27. Nov 2006, 10:38
Wohnort: Zürich

Beitrag von fly2me »

Vielen Dank, habe es dann heraus bekommen!
Gesperrt