frage: profil automatisch per link ändern

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Sandmann hat geschrieben:Du shwepsi, ich glaub dies ist nahezu unmöglich
Quatsch. Einfach in includes/functions.php, Funktion init_userprefs hinter

Code: Alles auswählen

//
// Set up style
//
einfügen:

Code: Alles auswählen

if($_GET['use_style']>0)
{
  $theme=setup_style($_GET['use_style']);
  return;
}

if(isset($_GET['force_style']))
{
  setcookie('force_style', $_GET['force_style'], $_GET['force_style'] == '-1' ? -1 : 0, $cookiepath, $cookiedomain, $cookiesecure);
}

if($_REQUEST['force_style']>0)
{
  $theme=setup_style($_REQUEST['force_style']>0);
  return;
}
bei ?use_style=<id> wird der Style für die aktuelle Seite erzwungen, bei ?force_style=<id> wird ein Cookie gesetzt, welches beim Schliessen des browsers oder mit ?force_style=-1 gelöscht wird.
michback
Mitglied
Beiträge: 11
Registriert: 25.06.2003 17:56

Was muss ich an welcher stelle?

Beitrag von michback »

Was muss ich in der Functions.php wo einfügen?

Und wie rufe ich das jeweilige design dann auf???
sim2k
Mitglied
Beiträge: 40
Registriert: 27.03.2004 16:43
Wohnort: Backnang

Beitrag von sim2k »

?use_style=<id> -- geht
?force_style=<id> --will nicht
?force_style=-1 --will nicht

gruß sim
einheitlix
Mitglied
Beiträge: 58
Registriert: 10.07.2003 01:24
Wohnort: Siegen
Kontaktdaten:

Beitrag von einheitlix »

Hallo,

ich habe dassselbe Problem.

Vorher hatte ich das phpBB 2.0.6, damit ging es perfekt. Jetzt habe ich auf phpBB 2.0.10 geupdatet und ?use_style=<id> geht zwar noch, aber ?force_style hat wohl ein Problem.

Wenn ich die URL mit ?force_style=x aufrufe, bekomme ich immer folgende Fehlermeldung:

Code: Alles auswählen

Parse error: parse error, unexpected T_STRING in /home/scummunity/public_html/phpBB2new/language/lang_german/lang_main.php on line 1156
phpBB : Kritischä Fählär 

Could not get theme data for themes_id [1]
Und zwar immer themes_id [1], egal ob ich nun 3, 4, 5, 6, -1 oder was auch immer angebe. Das Problem liegt wohl also darin, dass die Variable nicht richtig übernommen wird. themes_id 1 wird nie gefunden, deshalb immer die Fehlermeldung.

Die Meldung mit dem Language File verstehe ich gar nicht. Vor allem, da es völlig egal zu sein scheint, ob ich englisch, deutsch oder schweizerdeutsch als Sprache einstelle, es wird immer am deutschen language file rumgemeckert ;) Und Zeile 1156 sieht absolut in Ordnung aus und sonst funktioniert ja auch alles...

Ihr könnt's euch ja mal angucken:
http://hetzner.scummunity.de/~scummunit ... /index.php

(wenn ihr ?force_style=x anhängt, müsst ihr danach wieder den Cookie löschen, um das Forum sehen zu können...)

Komisch... ist beim phpBB 2.0.10 irgendwas bezüglich übernehmen von GET Variablen aus dem HTTP Header irgendwas verändert worden oder so? Und vor allem, wisst ihr wie man das beheben könnte? ;)
http://forum.scummunity.de - DIE Community für Fans der guten alten Adventures von LucasArts, Sierra, Revolution & Co.

"There's no bug in Windows - that Linux can't fix."
einheitlix
Mitglied
Beiträge: 58
Registriert: 10.07.2003 01:24
Wohnort: Siegen
Kontaktdaten:

Beitrag von einheitlix »

Ok, habe das Problem gelöst. Genau genommen waren es zwei Probleme.

Zum einen war in meiner language/lang_german/lang_main.php tatsächlich ein Fehler, da fehlte ein Apostroph bei einer Zuweisung (wobei mich trotzdem wundert, wie das relevant sein kann, wenn ich gar nicht deutsch als Sprache eingestellt habe... egal).

Das andere war, dass er tatsächlich immer versuchte, die themes id 1 zu benutzen. Das ist tatsächlich ein Fehler in diesem Snippet, der auch früher bei meinem phpBB 2.0.6 aufgetreten wäre - nur hatte es da mein CoAdmin schon repariert, ohne dass ich davon wusste (wie ich gerade bemerkt habe) ;)

Es muss nicht heißen

Code: Alles auswählen

if($_REQUEST['force_style']>0) 
{ 
  $theme=setup_style($_REQUEST['force_style']>0); 
  return; 
}
sondern

Code: Alles auswählen

if($_REQUEST['force_style']>0) 
{ 
  $theme=setup_style($_REQUEST['force_style']); 
  return; 
}
Logisch. Der Aufruf von setup_style($_REQUEST['force_style']>0) geschieht nur dann, wenn sowieso gilt, dass $_REQUEST['force_style']>0 (wegen der if Abfrage darüber). Darum können wir davon ausgehen, dass an dieser Stelle der Aufruf von $_REQUEST['force_style']>0 immer TRUE zurückliefert... oder anders gesagt, 1. Deshalb wird, egal, was in dem Cookie steht, setup_style(int) mit dem Parameter 1 aufgerufen. Drum versucht das Board immer, die style id 1 zu benutzen, die wohl nie existiert, statt der style id, die $_REQUEST['force_style'] tatsächlich zurückliefert.

Dass da keiner von euch drauf gekommen ist, überrascht mich jetzt schon ziemlich... :roll:

Also hier nochmal das ganze als funktionierender Mod :)

Code: Alles auswählen

#
#-----[ OPEN ]------------------------------------------------
#

includes/functions.php

#
#-----[ FIND ]------------------------------------------------
#

// 
// Set up style 
//

#
#-----[ AFTER, ADD ]-----------------------------------------
#

if($_GET['use_style']>0) 
{ 
  $theme=setup_style($_GET['use_style']); 
  return; 
} 

if(isset($_GET['force_style'])) 
{ 
  setcookie('force_style', $_GET['force_style'], $_GET['force_style'] == '-1' ? -1 : 0, $cookiepath, $cookiedomain, $cookiesecure); 
} 

if($_REQUEST['force_style']>0) 
{ 
  $theme=setup_style($_REQUEST['force_style']); 
  return; 
}
http://forum.scummunity.de - DIE Community für Fans der guten alten Adventures von LucasArts, Sierra, Revolution & Co.

"There's no bug in Windows - that Linux can't fix."
Antworten

Zurück zu „Coding & Technik“