Aktuelle Url bestimmen / Sprache umschalten
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Aktuelle Url bestimmen / Sprache umschalten
Hallo,
ich suche schon eine ganze Weile, finde aber irgendwie keine Lösung dafür.
Ich möchte gerne raus bekommen, auf welcher Seite ich mich aktuell befinde. In der Browserzeile steht z.B. "http://www.phpbb.de/viewforum.php?f=6" drinnen, aber wie kann ich es in phpbb3 abfragen?
Gruß Helmut
ich suche schon eine ganze Weile, finde aber irgendwie keine Lösung dafür.
Ich möchte gerne raus bekommen, auf welcher Seite ich mich aktuell befinde. In der Browserzeile steht z.B. "http://www.phpbb.de/viewforum.php?f=6" drinnen, aber wie kann ich es in phpbb3 abfragen?
Gruß Helmut
Zuletzt geändert von Helmut am 13.09.2008 15:40, insgesamt 1-mal geändert.
Ich bin nicht ganz dicht.... na und.
Hallo,
schau mal in die "viewonline.php"
Dort der Bereich ab:
Erst wird ausgelesen, welche User online sind und dann welche session_page gerade aktiv ist.
Weiter unten wird ein
abgefragt.
Dort wird ermittelt welche Seite der User gerade betrachtet.
schau mal in die "viewonline.php"
Dort der Bereich ab:
Code: Alles auswählen
// Get user list
Weiter unten wird ein
Code: Alles auswählen
switch ($on_page[1])
Dort wird ermittelt welche Seite der User gerade betrachtet.
Hallo Dr.Death,
danke für deine Antwort, aber das bringt mich jetzt nicht wirklich weiter. So wie ich gesehen habe, geht das nur für die Seiten, welche sich in der Liste (z.B. case 'index':) befinden.
Ich bräuchte das für meine Homepage, da ich das für die Umschaltung der Sprache nutzen will und so auf der aktuellen Seite bleibe. Ich habe mehrere hundert Seiten eingebunden, die müsste ich dann theoretisch alle dort eintragen was schon eine Menge Arbeit ist. Daher suche ich nach einer einfacheren Lösung bzw. könnte man das nicht auch so machen, dass bei case '': alle Angaben aus der Datenbank kommen?
Gruß Helmut
danke für deine Antwort, aber das bringt mich jetzt nicht wirklich weiter. So wie ich gesehen habe, geht das nur für die Seiten, welche sich in der Liste (z.B. case 'index':) befinden.
Ich bräuchte das für meine Homepage, da ich das für die Umschaltung der Sprache nutzen will und so auf der aktuellen Seite bleibe. Ich habe mehrere hundert Seiten eingebunden, die müsste ich dann theoretisch alle dort eintragen was schon eine Menge Arbeit ist. Daher suche ich nach einer einfacheren Lösung bzw. könnte man das nicht auch so machen, dass bei case '': alle Angaben aus der Datenbank kommen?
Gruß Helmut
Ich bin nicht ganz dicht.... na und.
- tas2580
- Ehemaliges Teammitglied
- Beiträge: 3029
- Registriert: 01.07.2004 05:42
- Wohnort: /home/tas2580
- Kontaktdaten:
Wie währe es damit?
http://de3.php.net/reserved.variables
Code: Alles auswählen
$_SERVER['SCRIPT_FILENAME']
$_SERVER['REQUEST_URI']
$_SERVER['PHP_SELF']
$_SERVER['QUERY_STRING']
Heute ist ein guter Tag um dein Forum zu testen.
Ehemaliger Benutzername: [BTK] Tobi
Ehemaliger Benutzername: [BTK] Tobi
Hallo Tobi,
danke dir für den Tipp, hätte da eigentlich selber drauf kommen müssen.
Ich habe es jetzt testweise so gemacht, wobei das immer noch nicht die Lösung ist. Für die Themenseiten geht es ganz gut, aber sobald eine $sid angehängt ist, geht es nichtmehr, da lang=* in der Url zwischen drinnen steckt.
funktions.php
overall_header.html
@Dr.Death
Aber trotzdem würde mich es interessieren, wie ich meine ganzen Seiten am einfachsten in die viewonline.php bringe. Das wäre für eine Statistik z.B. "Wer war wo online" interessant.
[EDIT]
so, ich habe es jetzt auch für die Foren hinbekommen, aber eine Sache gefällt mit noch nicht dabei. Ich verwende dabei preg_replace(, aber da habe ich noch ein kleines Problem damit, so sieht es jetzt aus:
Ich möchte ganz gerne die Ersetzung für $lang_in[1] = '/=en/'; für die Sprache (de, en, ....) die Variable $user_lang dafür verwenden, dort steht die aktuelle Usersprache drinnen. Wie bekomme ich die in die $lang_in rein, ohne dass ich eine Fehlermeldung bekomme?
[EDIT2]
So, ich habs rausbekommen, es muss so aussehen: $lang_in = "~=$user_lang~i";
[EDIT3]
Hier noch ein kleiner Nachtrag. Wenn keine lang=* angegeben war, dann konnte man auch keine Sprache wählen. Der Teil kommt noch dazu, um die lang=* anzuhängen.
Gruß Helmut
danke dir für den Tipp, hätte da eigentlich selber drauf kommen müssen.

Ich habe es jetzt testweise so gemacht, wobei das immer noch nicht die Lösung ist. Für die Themenseiten geht es ganz gut, aber sobald eine $sid angehängt ist, geht es nichtmehr, da lang=* in der Url zwischen drinnen steckt.
funktions.php
Code: Alles auswählen
//SVI language switch
$user_lang = request_var('lang', $user->lang_name);
$sql = 'SELECT lang_id, lang_iso, lang_local_name
FROM ' . LANG_TABLE . "
ORDER BY lang_id";
$result = $db->sql_query($sql);
while ($lang_row = $db->sql_fetchrow($result))
{
$iso = $lang_row['lang_iso'];
$lang_name = $lang_row['lang_local_name'];
$template->assign_block_vars('langswitch', array(
'LANGSWITCH' => $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?lang=" . $iso,
'FLAGSWITCH' => append_sid("{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme' . "/images/flags/" . $iso .".png"),
'ALTSWITCH' => $lang_name,
));
}
$db->sql_freeresult($result);
//-------------------------
Code: Alles auswählen
<!-- Language -->
<div>
<!-- BEGIN langswitch -->
<a href="http://{langswitch.LANGSWITCH}"><img src="{langswitch.FLAGSWITCH}" alt="Flagge {langswitch.ALTSWITCH}" /></a>
<!-- END langswitch -->
</div>
<br />
<!-- Language -->
@Dr.Death
Aber trotzdem würde mich es interessieren, wie ich meine ganzen Seiten am einfachsten in die viewonline.php bringe. Das wäre für eine Statistik z.B. "Wer war wo online" interessant.
[EDIT]
so, ich habe es jetzt auch für die Foren hinbekommen, aber eine Sache gefällt mit noch nicht dabei. Ich verwende dabei preg_replace(, aber da habe ich noch ein kleines Problem damit, so sieht es jetzt aus:
Code: Alles auswählen
//SVI language switch
$user_lang = request_var('lang', $user->lang_name);
$url_lang = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$sql = 'SELECT lang_id, lang_iso, lang_local_name
FROM ' . LANG_TABLE . "
ORDER BY lang_id";
$result = $db->sql_query($sql);
while ($lang_row = $db->sql_fetchrow($result))
{
$iso = $lang_row['lang_iso'];
$lang_name = $lang_row['lang_local_name'];
$lang_in[1] = '/=en/';
$lang_in[2] = '/=de/';
$lang_out = '='.$iso;
$url_lang = preg_replace($lang_in, $lang_out, $url_lang);
$template->assign_block_vars('langswitch', array(
'LANGSWITCH' => $url_lang,
'FLAGSWITCH' => append_sid("{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme' . "/images/flags/" . $iso .".png"),
'ALTSWITCH' => $lang_name,
));
}
$db->sql_freeresult($result);
//-------------------------
Ich möchte ganz gerne die Ersetzung für $lang_in[1] = '/=en/'; für die Sprache (de, en, ....) die Variable $user_lang dafür verwenden, dort steht die aktuelle Usersprache drinnen. Wie bekomme ich die in die $lang_in rein, ohne dass ich eine Fehlermeldung bekomme?
[EDIT2]
So, ich habs rausbekommen, es muss so aussehen: $lang_in = "~=$user_lang~i";
[EDIT3]
Hier noch ein kleiner Nachtrag. Wenn keine lang=* angegeben war, dann konnte man auch keine Sprache wählen. Der Teil kommt noch dazu, um die lang=* anzuhängen.
Code: Alles auswählen
// Wenn keine lang= angegeben wurde
$lang_in = "~=$user_lang~i";
if (preg_match($lang_in, $url_lang))
{
$url_lang;
}
else
{
$url_lang = $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?lang=" . $user_lang . '&' . $_SERVER['QUERY_STRING'];
}
Gruß Helmut
Ich bin nicht ganz dicht.... na und.
Hallo,
so, ich muss das Thema doch nochmal aufgreifen. Also die Sache mit der Sprachumschaltung sowohl für Gäste als auch für eingeloggte User funktioniert einwandfrei, aber ich habe einen kleinen Schönheitsfehler entdeckt. Manchmal wird mehrfach &lang=de in den Link eingefügt, kommt aber nicht immer vor, das sieht dann so aus:
Der Code dazu in der functions.php sieht so aus:
Vermutlich hängt es mit dem ersten Teil für die Erkennung ob "&lang=de" schon in den Link eingefügt ist oder nicht, zusammen. Ich komme leider nicht dahinter, warum das manchmal mehrfach drinnen steht, funktionieren tut es trotzdem. Vielleicht kann mir jemand da weiterhelfen, die Ursache für dieses Verhalten zu finden.
Gruß Helmut
so, ich muss das Thema doch nochmal aufgreifen. Also die Sache mit der Sprachumschaltung sowohl für Gäste als auch für eingeloggte User funktioniert einwandfrei, aber ich habe einen kleinen Schönheitsfehler entdeckt. Manchmal wird mehrfach &lang=de in den Link eingefügt, kommt aber nicht immer vor, das sieht dann so aus:
Code: Alles auswählen
http://localhost/phpBB3/viewforum.php?lang=de&lang=de&lang=de&f=1
Code: Alles auswählen
//SVI language switch
$user_lang = request_var('lang', $user->lang_name);
$url_lang = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
// Wenn keine lang= angegeben wurde
$lang_in = "~=$user_lang~i";
if (preg_match($lang_in, $url_lang))
{
$url_lang;
}
else
{
$url_lang = $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'] . "?lang=" . $user_lang . '&' . $_SERVER['QUERY_STRING'];
}
//Umschalten von lang=
$sql = 'SELECT lang_id, lang_iso, lang_local_name
FROM ' . LANG_TABLE . "
ORDER BY lang_id";
$result = $db->sql_query($sql);
while ($lang_row = $db->sql_fetchrow($result))
{
$iso = $lang_row['lang_iso'];
$lang_name = $lang_row['lang_local_name'];
$lang_in = "~=$user_lang~i";
$lang_out = '='.$iso;
$url_lang_2 = preg_replace($lang_in, $lang_out, $url_lang);
$template->assign_block_vars('langswitch', array(
'LANGSWITCH' => $url_lang_2,
'FLAGSWITCH' => append_sid("{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme' . "/images/flags/" . $iso .".png"),
'ALTSWITCH' => $lang_name,
));
}
$db->sql_freeresult($result);
//-------------------------
Gruß Helmut

Ich bin nicht ganz dicht.... na und.
Re: Aktuelle Url bestimmen / Sprache umschalten
Hallo,
ich möchte das Thema nochmal aufgreifen, da mich eviL<3 auf ein mögliches Sicherheitsproblem aufmerksam gemacht hatte.
Ich verwende für meinen neuen Mod Quickly language change 0.0.1 (Vorabversion) unter anderem $_SERVER['QUERY_STRING'] und dazu meinte eviL<3, dass sich da HTML injizieren lässt (sogenanntes XSS - cross site scripting). Er schlägt mir vor, parse_str() zu verwenden, aber ich komme damit nicht so richtig klar.
Wäre nett, wenn mir jemand ein Beispiel nennen würde, wie ich parse_str() genau anwenden muss.
[EDIT]
Ich habe es jetzt mit parse_url() gelöst, das sollte eine mögliche Sicherheitslücke schließen.
Gruß Helmut
ich möchte das Thema nochmal aufgreifen, da mich eviL<3 auf ein mögliches Sicherheitsproblem aufmerksam gemacht hatte.
Ich verwende für meinen neuen Mod Quickly language change 0.0.1 (Vorabversion) unter anderem $_SERVER['QUERY_STRING'] und dazu meinte eviL<3, dass sich da HTML injizieren lässt (sogenanntes XSS - cross site scripting). Er schlägt mir vor, parse_str() zu verwenden, aber ich komme damit nicht so richtig klar.
Wäre nett, wenn mir jemand ein Beispiel nennen würde, wie ich parse_str() genau anwenden muss.

[EDIT]
Ich habe es jetzt mit parse_url() gelöst, das sollte eine mögliche Sicherheitslücke schließen.
Gruß Helmut
Ich bin nicht ganz dicht.... na und.