[PHP] session.use_trans_sid werkt niet voor alle links

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
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...):

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."


Acties:
  • 0 Henk 'm!

Verwijderd

Ik ben haast geneigd om te zeggen dat dit een bug is in PHP.

Als url_rewriter.tags goed is ingesteld, dan zou dit geen enkel probleem mogen opleveren. Kan je ook een link plaatsen naar een deel van de code en een deel van de content die naar de browser verstuurd wordt?

Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Een hele wilde gok waarvan ik niet denk dat het zal werken, maar wat wel een poging waard is: probeer een output buffer. Anders moet ik me bij Jorgen aansluiten om het een bug te noemen. (Wat een boer niet kent, dat is een bug... :+)

'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!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Ik zou in ieder geval je hrefs groed schrijven :P

href="http://www.mijnsite.nl/cms.php"

Acties:
  • 0 Henk 'm!

  • RedRose
  • Registratie: Juni 2001
  • Niet online

RedRose

Icebear

NMe84 schreef op 19 mei 2004 @ 00:06:
Een hele wilde gok waarvan ik niet denk dat het zal werken, maar wat wel een poging waard is: probeer een output buffer. Anders moet ik me bij Jorgen aansluiten om het een bug te noemen. (Wat een boer niet kent, dat is een bug... :+)
Deze boer denk anders dat het geen bug is. ;) Want, als de sessie er automagisch achteraan geplakt zou worden, dan zou die er ook bij de cms-gegenereerde links achter komen. Nu parst het cms er immers zelf een id ($id) achter. Default is de naam van de sessieid PHPSESSID, maar dat kan je aangepast hebben natuurlijk.

Wat zijn de session-instellingen in je php.ini? Lees ook: http://nl.php.net/manual/en/ref.session.php (ook het stuk bij 'Passing the Session ID en de comments) en check je session.use_trans_sid-directive.

Sundown Circus


Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 19-09 09:34

thomaske

» » » » » »

Waarschijnlijk omdat je hostname in de link staat, is het niet zeker voor php dat de link binnen de zelfde applicatie blijft. Als je relatieve url gebruikt, werkt het volgens mij wel

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
thomaske is mijn held :D Als je relatieve links gebruikt, werkt het idd wel. Dank je!

"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."

Pagina: 1