Ik ben bezig met een statistieken systeempje en wil het klikpad van een bezoeker ook kunnen volgen als deze cookies uit heeft staan.
In dat geval gebruik ik de standaard PHP optie om de sessie via de querystring mee te sturen (session.use_trans_sid = 1). Ik heb echter een probleem:
Het statistieken tooltje is onderdeel van een CMS'je. De output van dit CMS bevat eigenlijk twee soorten links: links die gegenereerd zijn door het CMS zelf, bijvoorbeeld de opbouw van de zij-navigatie (code ingekort...):
De overige links komen direct uit de database. De gebruiker heeft bijvoorbeeld een artikel getypt en dit in de database opgeslagen. In dit artikel staat een link, bijvoorbeeld:
[b]Het probleem/b] is nu dat PHP alleen de sessie toevoegt aan links die door het CMS zelf worden gegenereerd, maar niet aan links die uit de database komen.
Met andere woorden, dit wel:
maar
in plaats van
Wat is hiervan de reden? Een mogelijke oplossing die ik heb is om tekst die uit een database komt te doorzoeken, en met str_replace de sessie aan alle links toe te voegen, maar dit is bewerkelijk en traag. Vandaar dat ik hier eerst de vraag stel, want misschien is het op te lossen door een PHP instelling aan te passen o.i.d. Of misschien is mijn database wel gewoon raar?
In dat geval gebruik ik de standaard PHP optie om de sessie via de querystring mee te sturen (session.use_trans_sid = 1). Ik heb echter een probleem:
Het statistieken tooltje is onderdeel van een CMS'je. De output van dit CMS bevat eigenlijk twee soorten links: links die gegenereerd zijn door het CMS zelf, bijvoorbeeld de opbouw van de zij-navigatie (code ingekort...):
PHP:
1
2
3
4
5
6
7
8
9
10
11
| function get_trail($id) { global $trail; $res_parent = db_query('SELECT node_pid, node_name FROM nodes WHERE ...'); $row_parent = db_fetch_array($res_parent); $num_parent = db_num_rows($res_parent); if($num_parent != 0) { $trail .= get_trail($row_parent['node_pid']).'<a href="index.php?id='.$id.'">'. $row_parent['node_name'].'</a>'; } } |
De overige links komen direct uit de database. De gebruiker heeft bijvoorbeeld een artikel getypt en dit in de database opgeslagen. In dit artikel staat een link, bijvoorbeeld:
HTML:
1
2
3
| Dit is het <u>eerste</u> bericht in mijn nieuwe CMS. Bekijk <a href="www.mijnsite.nl/cms.php">hier</a> de backoffice van dit leuke stukje software! |
[b]Het probleem/b] is nu dat PHP alleen de sessie toevoegt aan links die door het CMS zelf worden gegenereerd, maar niet aan links die uit de database komen.
Met andere woorden, dit wel:
HTML:
1
2
3
4
5
| ...zijnavigatie... <a href="index.php?id=11&sid=313ec81ce5509e0c4e1513983ae7e6ab">over ons</a><br> <a href="index.php?id=54&sid=313ec81ce5509e0c4e1513983ae7e6ab">diensten</a><br> <a href="index.php?id=3&sid=313ec81ce5509e0c4e1513983ae7e6ab">contact</a> |
maar
HTML:
1
2
3
| Dit is het <u>eerste</u> bericht in mijn nieuwe CMS. Bekijk <a href="www.mijnsite.nl/cms.php">hier</a> de backoffice van dit leuke stukje software! |
in plaats van
HTML:
1
2
3
| Dit is het <u>eerste</u> bericht in mijn nieuwe CMS. Bekijk <a href="www.mijnsite.nl/cms.php?sid=313ec81ce5509e0c4e1513983ae7e6ab"> hier</a> de backoffice van dit leuke stukje software! |
Wat is hiervan de reden? Een mogelijke oplossing die ik heb is om tekst die uit een database komt te doorzoeken, en met str_replace de sessie aan alle links toe te voegen, maar dit is bewerkelijk en traag. Vandaar dat ik hier eerst de vraag stel, want misschien is het op te lossen door een PHP instelling aan te passen o.i.d. Of misschien is mijn database wel gewoon raar?
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."