[PHP] url parameters behouden

Pagina: 1
Acties:
  • 100 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb binnen het CMS Typo3 een soort affiliate systeem ontwikkeld in PHP/MYSQL die op basis van de url kijkt welke affiliate je bent, en dan kijkt welke nationaliteit je hebt en op basis daarvan laat hij bepaalde images zien op de website die voor elk land dus anders zijn.

Zo'n URL ziet er zo uit:
http://www.domein.org/index.php?id=12&affid=7

Hierbij is het dus pagina 12, en affiliate ID 7, dan kijkt hij in de database welke nationaliteit affiliate 7 is en zo laat hij dus de goede plaatjes zien.

Dit werkt allemaal goed, maar het probleem is wanneer ik dus op de site ben en op een link klik, dan gaat hij naar http://www.domein.org/index.php?id=17 (bijvoorbeeld)
Hij laat dus het affid=7 weg, dit is ook logisch natuurlijk.

Nu heb ik zitten proberen om hier een oplossingen voor te vinden en ook wat rondgezocht in een paar PHP boeken en op phpfreakz maar ik kan niet echt een manier hiervoor vinden.

Heeft iemand een idee hoe ik dit op zou kunnen lossen?

Een manier die ik zelf had bedacht is als hij ziet dat het een affid id is, die opslaan in een variabele en dat toevoegen aan de url, maar dan komt hij in een oneindige loop (logisch...)


Stukje van mijn URL check code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/* START AFFILIATE COUNTER */

/* get the url parameters */
$id = $_GET['id'];
$affid = $_GET['affid'];

/* check if it's an affid link, if not, skip all this and move on */
if ($affid) {
/* database configuration */
$HOST = "localhost";
$USER = "xxxxxx";
$PASS = "xxxxxx";

/* connecting and selecting database */
$link = mysql_connect($HOST, $USER, $PASS) or die("Could not connect : " . mysql_error());
mysql_select_db("wuproject_com_affiliate") or die("could not select database");

/* get current klik value from db */
$query = "SELECT kliks FROM affiliates WHERE affid = '$affid'";
$result = mysql_query($query) or die("query failed : " . mysql_error());
$num_results = mysql_num_rows($result);
$table = mysql_fetch_array($result);
$kliks = stripslashes($table['kliks']);

/* raise it by one */
$kliks++;

/* put it back in db */
$query = "UPDATE affiliates SET kliks = '$kliks' WHERE affid = '$affid' LIMIT 1";
$result = mysql_query($query) or die("query failed : " . mysql_error());

/* close db conn */
mysql_close($link);
}

/* END AFFILIATE COUNTER */


(in dit stukje code kijkt hij of je een affid bent, zo ja, verhoogt hij een getal in de db met 1, soort van statistiek, deze code voert hij uit voor ALLES, dit is dus het eerste waar hij aan begint.)

[ Voor 23% gewijzigd door Verwijderd op 23-05-2005 15:39 ]


Acties:
  • 0 Henk 'm!

Verwijderd

bijhouden in een Session-var?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Je bedoelt dat ik een sessie start, daarna de variabele opsla?

Ok dat kan, maar hoe krijgt ik "&affid=7" dan weer achter de volgende URL?

Ik zit net even te lezen over sessions en daar kom ik dit tegen:

url_rewriter.tags string
url_rewriter.tags specifies which HTML tags are rewritten to include session id if transparent sid support is enabled. Defaults to a=href,area=href,frame=src,input=src,form=fakeentry,fieldset=


Is dit misschien wat ik zoek?

[ Voor 56% gewijzigd door Verwijderd op 23-05-2005 15:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op maandag 23 mei 2005 @ 15:31:
Ok dat kan, maar hoe krijgt ik "&affid=7" dan weer achter de volgende URL?
Waarom moet die er per se steeds achter dan? Je gaat hem toch niet op 2 plekken opslaan :P

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmm dat is een goeie zo had ik het nog helemaal niet bekeken :>

Dus ik sla hem op in de session, en ik lees hem gewoon uit en zo weet ik welke affid het is?
Ik ga ff wat proberen :)

[ Voor 50% gewijzigd door Verwijderd op 23-05-2005 15:34 ]


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 22:34
Je weet het affiliate id toch. Dat kun je vrij eenvoudig toevoegen aan een link:
PHP:
1
2
3
4
$url = 'page.php?id=8';
if (isset($affid)) { $url .= '&affid=' .$affid; }

echo '<a href="' .$url .'">Check dit</a>';


En eigenlijk offtopic, maar dit is natuurlijk ontzettend idiote code:
PHP:
1
2
3
4
5
6
7
8
if (!$affid) {
// do nothing!?
} else {

//wat is er mis met: 
if ($affid) {
 //do something
}

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Mja beetje PHP n00b he :+

Heb de code wat aangepast.

[ Voor 38% gewijzigd door Verwijderd op 23-05-2005 15:38 ]


Acties:
  • 0 Henk 'm!

  • svanuden
  • Registratie: Augustus 2001
  • Laatst online: 08-05-2024
Je kan ook een functie schrijven waarin je een url samensteld door de variabelen door te geven.
PHP:
1
2
3
4
5
6
7
8
9
url($page,$var){
  if($var){$url = $page . '?' . $var;}
  if($affid){
    if($var==""){$url .= '?';}
    else{$url .= '&';}
    $url .= $affid;
  enz...
}
return $url;

zoiets dus.
en dan natuurlijk in de pagina zelf
code:
1
<a href="<? $url = url('help.php','var=1'); echo $url; ?>">url</a>

[ Voor 50% gewijzigd door svanuden op 23-05-2005 15:45 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik gebruik nu:

PHP:
1
2
3
4
5
6
7
8
$affid = $_GET['affid'];

/* start the session, with the IE6 form fix */
session_start();
header("Cache-control: private"); 

/* store the affid in a variable */
$_SESSION['affid'] = $affid;



nu zou ik op deze manier dus ik elk script de affid op kunnen vragen met:
$_SESSION['affid']

Klopt dit?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 23 mei 2005 @ 16:17:
Ik gebruik nu:

PHP:
1
2
3
4
5
6
7
8
$affid = $_GET['affid'];

/* start the session, with the IE6 form fix */
session_start();
header("Cache-control: private"); 

/* store the affid in a variable */
$_SESSION['affid'] = $affid;



nu zou ik op deze manier dus ik elk script de affid op kunnen vragen met:
$_SESSION['affid']

Klopt dit?
Wat let je om het uit te proberen? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het geprobeerd en het werkt niet.

Daarom vraag ik of mijn code klopt :+

Als ik nu op de pagina kom en de session var echo, dan staat hij er goed, maar zodra ik een link klik lijkt het wel of hij hem is vergeten, want dan is hij weg

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 23 mei 2005 @ 16:23:
Ik heb het geprobeerd en het werkt niet.

Daarom vraag ik of mijn code klopt :+

Als ik nu op de pagina kom en de session var echo, dan staat hij er goed, maar zodra ik een link klik lijkt het wel of hij hem is vergeten, want dan is hij weg
Je moet wel op elke pagina session_start() aanroepen he?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja dat heb ik gedaan.

Om 1 of andere reden pakt hij hem niet meer?
Zo dit komen door het CMS?


Wat gebeurt er als je 2 keer session_start() doe? (misschien doet het CMS er ook al 1?)

[ Voor 33% gewijzigd door Verwijderd op 23-05-2005 16:31 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Lijkt me niet. Staat error_reporting op E_ALL?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • WPN
  • Registratie: Augustus 2003
  • Laatst online: 24-07 21:14

WPN

sla je ook op elke pagina die session var op?

want als je GET niets vind slaat ie dat volgens mij ook gewoon op als niets

check dus of je session var gevult is, zo ja, dan niets vullen met affid zo nee vullen met affid

Als ik denk zoals ik dacht, dan doe ik zoals ik deed, als ik doe zoals ik deed, dan denk ik zoals ik dacht! Cogito Ergo Sum


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
op de pagina zelf doe ik dus:

$affid = $_SESSION['affid'];

Ik kan de affid alleen opslaan als hij in de URL staat (&affid=X) dus, kan maar 1 keer , want zodra je link klikt is hij uit de url en moet hij al in de session staan.

[ Voor 6% gewijzigd door Verwijderd op 23-05-2005 16:38 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Peluso schreef op maandag 23 mei 2005 @ 16:31:
sla je ook op elke pagina die session var op?

want als je GET niets vind slaat ie dat volgens mij ook gewoon op als niets

check dus of je session var gevult is, zo ja, dan niets vullen met affid zo nee vullen met affid
Idd, ik zie het ook net:
PHP:
1
2
3
4
5
6
7
8
/* start the session, with the IE6 form fix */
session_start();
header("Cache-control: private"); 

$affid = isset($_GET['affid']) ? $_GET['affid'] : $_SESSION['affid'];

/* store the affid in a variable */
$_SESSION['affid'] = isset($affid) ? $affid : 0;   // 0 == default affid oid

Dat lijkt me al veel beter te werken.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat deed het -NMe-, thx!

wil je uitleggen wat deze regel precies doet?

PHP:
1
$affid = isset($_GET['affid']) ? $_GET['affid'] : $_SESSION['affid'];


zodat ik ook begrijp wrom het nu wel lukt :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op maandag 23 mei 2005 @ 16:40:
Dat deed het -NMe-, thx!

wil je uitleggen wat deze regel precies doet?

PHP:
1
$affid = isset($_GET['affid']) ? $_GET['affid'] : $_SESSION['affid'];


zodat ik ook begrijp wrom het nu wel lukt :)
Korte vorm van een if-statement. Zie ook de documentatie. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
muchos gracias :+
Pagina: 1