[PHP] Vaag probleem met sessies

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 18-09 08:27

Hermanvh

webOS fan, hacker, developer

Topicstarter
Ik heb een heel vaag probleem met sessies. Ik probeer de gebruikersnaam in een sessie op te slaan. Werkt op zich prima op de meeste pagina's wanneer ik de waarde van de sessie opvraag, echter niet in de volgende situatie:

Ik gebruik een include met daarin een parameter. Omdat dit wel eens misbruikt kan worden, moet je de hele URL erin zetten. Wanneer ik dit echter doe, dan kan ik de waarde van mijn sessie variabele niet meer uitlezen :(

Wanneer ik het volgende doe werkt het prima:
code:
1
include("./menu_x.php");


Echter het volgende werkt dus niet en geeft me een leeg resultaat bij het opvragen van de waarde in de sessie variabele :'(
code:
1
include("http://www.vve-goudenleeuw.nl/new/nlsr/menu_x.php?art_id=".$id"


Iemand een work-around hiervoor? Ik kan de URL voor elke $id uitschrijven, dan is het probleem opgelost, maar dit levert veel redundante code op :(

p.s.
$id is een URL parameter.

webOS all the way!


Acties:
  • 0 Henk 'm!

  • JayVee
  • Registratie: Mei 2002
  • Laatst online: 31-08 10:22

JayVee

shibby++!

In het geinclude bestand is $id beschikbaar, dus waarom zet je het in de include?

ASCII stupid question, get a stupid ANSI!


Acties:
  • 0 Henk 'm!

  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 18-09 08:27

Hermanvh

webOS fan, hacker, developer

Topicstarter
JayVee schreef op donderdag 09 november 2006 @ 20:36:
In het geinclude bestand is $id beschikbaar, dus waarom zet je het in de include?
Dit voorbeeld is even om het te demonstreren. $id neemt ca. 40 verschillende waarden aan. Deze kan ik wel helemaal uitschrijven, maar dat lijkt me onzin.

menu_x.php haalt het artikel op uit de DB op basis van URL parameter art_id.

edit:

Opeens gaat er een lichtje branden ;)
Wanneer ik nu de $id in het bronbestand opsla in een $_SESSION, dan hoef ik ook de $id waarde niet meer mee te geven in de URL en is het probleem opgelost m.b.t. de andere sessie variabele die niet werkt :)

[ Voor 23% gewijzigd door Hermanvh op 09-11-2006 20:44 ]

webOS all the way!


Acties:
  • 0 Henk 'm!

  • Coju
  • Registratie: Oktober 2000
  • Niet online
Zoals al is aangegeven, de parameter in de include is overbodig. $id is gewoon beschikbaar in het ge-include bestand.

Acties:
  • 0 Henk 'm!

  • Hermanvh
  • Registratie: Januari 2001
  • Laatst online: 18-09 08:27

Hermanvh

webOS fan, hacker, developer

Topicstarter
Coju schreef op donderdag 09 november 2006 @ 20:56:
Zoals al is aangegeven, de parameter in de include is overbodig. $id is gewoon beschikbaar in het ge-include bestand.
Dus zelfs het opslaan in een sessie is dan overbodig :+ :)

webOS all the way!


Acties:
  • 0 Henk 'm!

  • 4Real
  • Registratie: Juni 2001
  • Laatst online: 14-09-2024
Hermanvh schreef op donderdag 09 november 2006 @ 20:22:

Echter het volgende werkt dus niet en geeft me een leeg resultaat bij het opvragen van de waarde in de sessie variabele :'(
code:
1
include("http://www.vve-goudenleeuw.nl/new/nlsr/menu_x.php?art_id=".$id"
Afsluiten van de functie kan helpen :P maar http://www.domein.nl in include functie gaat volgens mij niet werken omdat je dan ook php bestanden van andere websites kan gebruiken :|

Maar wat geeft die als je gewoon include('menu_x.php'); gebruikt en dan even de _SESSION en _GET variable print?

Acties:
  • 0 Henk 'm!

  • ReseTTim
  • Registratie: Juni 2000
  • Laatst online: 20-09 16:23

ReseTTim

Chocolate addicted

wat je zou kunnen doen is.. en dat alleen bij de eerste keer bijv..

PHP:
1
$art_id= (isset($_GET) AND isset($_GET['art_id']) AND is_string($_GET['art_id']))?addslashes($_GET['art_id']):0;


is_string kan je ook is_int is_numeric van maken..

[edit]

deze methode gebruik ik in navigatie wanneer je inlogt. bij het inloggen wordt er namelijk een header()

meegegeven.. doordat je door een include() en header() geen variablen kan meegeven kan je het dus oplossen door de volgende methode. echter dit wordt wel keihard neergezet. misschien kan je evt het via een variable het erin zetten. iniedergeval op deze methode kan je toch een art_id meegeven zonder dat die in de adresbalk staat.

[ Voor 55% gewijzigd door ReseTTim op 10-11-2006 13:38 ]

Mijn profiel - Te koop: Overzicht van spullen..


Acties:
  • 0 Henk 'm!

  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
ReseTTim schreef op vrijdag 10 november 2006 @ 13:34:
<knip>
is_string kan je ook is_int van maken..
Volgens mij is het niet is_int maar toch echt is_numeric

Acties:
  • 0 Henk 'm!

Verwijderd

Ik denk dat het te maken heeft met het volgende:

Als je een url opgeeft dus: "http://www.domein.com/index.php" zal index.php eerst geparst worden door php en vervolgens de output hiervan word geinclude in je php.

Als je het echter op de volgende manier zou doen: D:\httpdocs\index.php zal het waarschijnlijk wel werken.

Acties:
  • 0 Henk 'm!

  • Raynman
  • Registratie: Augustus 2004
  • Laatst online: 15:51
Als je de volledige URL opgeeft zeg je dus eigenlijk dat hij die pagina via HTTP moet ophalen (immers http:// ervoor). Dan wordt de pagina dus geparsed en de output wordt in je pagina gevoegd.

Zoals al verschillende keren gezegd: als bovenstaand script via file.php?art_id=56 wordt aangeroepen, dan is $_GET['art_id'] in zowel die pagina als het bestand dat je include (via absoluut/relatief pad, maar wel via filesystem op de server, niet via http) beschikbaar met de waarde 56.

Ik snap trouwens niet wat je hiermee bedoelt (tweede zin):
Ik gebruik een include met daarin een parameter. Omdat dit wel eens misbruikt kan worden, moet je de hele URL erin zetten.
Pagina: 1