PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Variable auslesen, die per URL übergeben wurde


jmar
06.01.2005, 00:56
Hallo,

wie kann man eine Variable, die per URL übergeben wurde, in vB auslesen und in der gesamten Usersitzung (Session) zur Verfügung haben?

Es wird z.B. aufs Forum gelinkt mit http://dasforum.de/forum/index.php?variable=10

In Templates möchte ich auf diese Variable zugreifen können, also z.B. eine if-Abfrage

<if condition="$variable == 10">Irgendein Code</if>

machen können.

Wenn der User nach obigem Aufruf weiter klickt, dann wird ja keine Variable mehr übergeben. Geht das dann überhaupt, dass die Variable trotzdem weiter in vB zur Verfügung steht (mit dem eingangs übergebenen Wert)?

Gruss
Johannes

Mystics
06.01.2005, 01:18
Nein, auf jeden Fall nicht ohne Hack, der das Cookie bzw. die Session-Informationen erweitert.

jmar
06.01.2005, 12:31
Hmm, schade.

Kannst du mir einen Tip geben, in welcher Richtung ich im Forum suchen kann, um ähnliches zu finden? Ich hab gestern stundenlang nach sowas gesucht, auch bei vbulletin.org, hab aber nichts gefunden.

Das müsste doch eigentlich so ähnlich wie das Linken auf einen bestimmten Style sein. Wo also in der URL die styleid übergeben wird. In Folgelinks taucht die ja auch nicht mehr auf, der gewählte Style bleibt aber bestehen.

In welcher Datei wird die Variable styleid definiert?
In welcher Datei wird die Styleinformation in Cookies/Session geschrieben?

Mystics
06.01.2005, 21:42
includes/sessions.php:// handle style defaults
if (isset($_REQUEST['styleid']))
{
// note: 0 is a valid styleid! (it'll remove the cookie)
$styleid = intval($_REQUEST['styleid']);
vbsetcookie('styleid', $styleid);
}
else if (isset($_COOKIE[COOKIE_PREFIX . 'styleid']))
{
$styleid = intval($_COOKIE[COOKIE_PREFIX . 'styleid']);
}
else
{
$styleid = 0;
}Genau das Format brauchst du auch für deine Variablen in dieser Datei an dieser Stelle.

Hoffi
06.01.2005, 23:22
Es kann folgendes klappen. Probier es mal aus. In meinem Testboard hab ich es kurz probiert und es klappt. Kann aber je nach Server und Boardeinstellungen nicht klappen.


<if condition="$_REQUEST['variable']==10">JA</if>

Mystics
07.01.2005, 01:33
Es kann folgendes klappen. Probier es mal aus. In meinem Testboard hab ich es kurz probiert und es klappt. Kann aber je nach Server und Boardeinstellungen nicht klappen.


<if condition="$_REQUEST['variable']==10">JA</if>
Ja, das klappt schon, aber nicht für seinen Fall:Wenn der User nach obigem Aufruf weiter klickt, dann wird ja keine Variable mehr übergeben. Geht das dann überhaupt, dass die Variable trotzdem weiter in vB zur Verfügung steht (mit dem eingangs übergebenen Wert)?Und eben dafür braucht man das Cookie.

Hoffi
07.01.2005, 01:48
Ja, sorry.

Oder er fügt hinter allen Links die das weitergeben sollen die Condition an mit dem Wert drin. Kommt drauf wann das immer weitergegeben werden soll. Sind es zwei drei seiten dann gehts. Soll es das ganze Board sein, dann nur über Cookie.

Wobei es funktionieren könnte wenn der entsprechnede Teil im PHP Include eingegeben wird.

jmar
07.01.2005, 12:58
Der Wert sollte sich übers gesamte Board ziehen. (Ein Partner, der aufs Forum mit seiner partnerid linkt, soll dann im Header mit Logo und Backlink auftauchen.)

Ich hab jetzt folgendes in phpinclude_start, damit scheint es zu funktionieren.


/*
// Example of how to include a seperate file:

ob_start();
include('yourheader.html');
$your_code = ob_get_contents();
ob_end_clean();

// Now place a reference to $your_code where you want the resulting HTML to be displayed.
// This will most likely be the header or footer template.
*/

// handle partner defaults
if (isset($_REQUEST['partnerid']))
{
$partnerid = intval($_REQUEST['partnerid']);
vbsetcookie('partnerid', $partnerid);
}
else if (isset($_COOKIE[COOKIE_PREFIX . 'partnerid']))
{
$partnerid = intval($_COOKIE[COOKIE_PREFIX . 'partnerid']);
}
else
{
$partnerid = 0;
}

// ==============================

// handle partner

if ( (isset($_COOKIE[COOKIE_PREFIX . 'partnerid'])) || (isset($_REQUEST['partnerid'])) )
{
$partnerid = intval($_REQUEST['partnerid']);

if ( (isset($_COOKIE[COOKIE_PREFIX . 'partnerid'])) && (!isset($_REQUEST['partnerid'])) )
{
$partnerid = intval($_COOKIE[COOKIE_PREFIX . 'partnerid']);
}

switch ($partnerid) {
case 2:
$partnercode='partner2';
break;
case 3:
$partnercode='partner3';
break;
case 4:
$partnercode='partner4';
break;
default:
$partnercode='no_partner';
}
}



In den Templates kann man dann entsprechend mit der Variablen $partnercode arbeiten.

Ein Partner kann aufs Forum über ...index.php?partnerid=xy linken ...

Vielen Dank für die Hilfe!

---

Jetzt müsste man noch eine kleine Partner-Verwaltung basteln, damit das nicht im Code gepflegt werden muss ...