[PHP] Array wil niet vullen

Pagina: 1
Acties:

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 03-09 22:36
Ik gebruik de volgende code om te controleren of een bezoeker deze pagina al een keer bezocht heeft tijdens zijn sessie. Zo niet, dan moet dit gelogd worden. Zo ja, dan gebeurt en niks.
PHP:
1
<?function LogVisit() {    if (!$_SESSION["LogUrl"]) {        $_SESSION["LogUrl"]    = array();    }        if (in_array($_SERVER[PHP_SELF], $_SESSION[LogUrl])) {        // User has allready visited this page during this session        echo "You have allready been here!";    } else {        //This is the first time that the user visits this page during this session        echo "Welcome!<pre>";        $_SESSION["LogUrl"][] = $_SERVER["PHP_SELF"];        print_r($_SESSION);        echo"<br>";        echo $_SERVER["PHP_SELF"];        echo "</pre>";         $time = time();        $country = GetDomain($_ENV["REMOTE_HOST"]);        $query = "INSERT INTO visit VALUES('','$_ENV[REMOTE_HOST]','$_SERVER[REMOTE_ADDR]','$_SERVER[PHP_SELF]','$_SERVER[HTTP_USER_AGENT]','$country','$time')";        $result = QueryDo($query);    }}?>

Het probleem is alleen dat dit op mijn werk wel goed werkt, maar thuis niet. Thuis denkt het systeem continue dat hij voor het eerst op de pagina komt en log dus elke keer als er op F5 wordt gedrukt. Iemand?

Verwijderd

sessies maken ook gebruik van cookies, om het session_id in op te slaan. het kan zijn dat je cookies uit hebt staan?

  • TweakBoy
  • Registratie: Augustus 2001
  • Laatst online: 06-09 17:45

TweakBoy

---

Op zondag 12 mei 2002 16:54 schreef kaandorp het volgende:

* knip *

Het probleem is alleen dat dit op mijn werk wel goed werkt, maar thuis niet. Thuis denkt het systeem continue dat hij voor het eerst op de pagina komt en log dus elke keer als er op F5 wordt gedrukt. Iemand?
zelf heb ik dit ook meegemaakt omdat mijn php verkeerd stond geconfigureerd... de map voor sessions moet wel goed staan...!!! :P

---


  • kaandorp
  • Registratie: November 1999
  • Laatst online: 03-09 22:36
De sessies werken wel goed, want het inloggen en uitloggen werkt prima.

Als ik met print_r de array $_SESSION bekijk zie ik:
code:
1
2
3
4
5
6
7
8
Array
(
    [LogUrl] => Array
      (
        [0] => /index.php
      )

)

Dus hij staat er wel degelijk.

  • vinnux
  • Registratie: Maart 2001
  • Niet online
PHP:
1
<?if (in_array($_SERVER[PHP_SELF], $_SESSION[LogUrl])) {        // User has allready visited this page during this session?>

Daar zit volgens mij de fout. En op precies te zijn is dit de fout $_SESSION[LogUrl]. Hiermee zeg je dat je gaat zoeken naar iets in $_SESSION dat als key de inhoud van de CONSTANTE LogUrl heeft. Echter neem ik aan dat LogURL geen constante is. $LogUrl of "LogUrl" zou moeten volstaan.
Dit zou het probleem kunnen zijn.

Echter kan het ook zijn dat je een nieuwe versie van php hebt 4.2.0 of de optimized php.ini gebruikt. Bij deze versies zijn variabelen van POST en GET acties niet meer globaal. Dit zul je moeten aangeven in je php.ini

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Op maandag 13 mei 2002 08:54 schreef vgouw het volgende:
Echter kan het ook zijn dat je een nieuwe versie van php hebt 4.2.0 of de optimized php.ini gebruikt. Bij deze versies zijn variabelen van POST en GET acties niet meer globaal. Dit zul je moeten aangeven in je php.ini
Dat slaat natuurlijk nergens op in dit verhaal ;)

Bedoel je met 'thuis' ook een andere webserver?
Kijk dan eens of je de instellingen daarvan goed hebt??

  • vinnux
  • Registratie: Maart 2001
  • Niet online
Op maandag 13 mei 2002 09:00 schreef ACM het volgende:

[..]

Dat slaat natuurlijk nergens op in dit verhaal ;)

Bedoel je met 'thuis' ook een andere webserver?
Kijk dan eens of je de instellingen daarvan goed hebt??
Nou dat vind ik wel een grove aanteiging :9
Ik kan me een situatie voorstellen waarin het mogelijk zou zijn dat dat speelt. Kans is echter wel klein.
Maar wat kan het nog meer zijn :
- Sessie map verkeerd
- CONSTANTE ip String
- ???

En zeg ik kijk naar je instelling, verklaar jij mij voor gek dat ik naar de instellingen vraag. (Heb al koffie op)

Zo raak ik wel mijn motivatie kwijt:Z

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

vgouw:
[php snip/]
En op precies te zijn is dit de fout $_SESSION[LogUrl]. Hiermee zeg je dat je gaat zoeken naar iets in $_SESSION dat als key de inhoud van de CONSTANTE LogUrl heeft. Echter neem ik aan dat LogURL geen constante is. $LogUrl of "LogUrl" zou moeten volstaan.
Dit zou het probleem kunnen zijn.
Zou kunnen, maar PHP vervangt gek genoeg een constante die niet bestaat door een string met de waarde 'zichzelf'. Oftewel
$array [ constante ] wordt $array [ 'constante' ].
Desalniettemin wordt in de PHP manual deze wijze van noteren afgeraden. zie hier
Uiteraard wordt je daar ook gewoon op gewezen als je error_reporting ( E_ALL ) gebruikt.

offtopic: vgouw: je moet wel http:// in je sig-url gebruiken, anders werktie nie :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Mischien zeg ik iets vaags maar in welke omgeving draait de server op je werk en thuis?

Ik heb het zelf meegemaakt dat ik bepaalde functies van php wel in een Unix omgeving kan gebruiken maar niet in een Windows omgeving (als server os dan :+ )

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 03-09 22:36
Beide omgevingen zijn PHP 4.1.2 en beide met Apache.

Thuis draait het op een Windows 2000 Adv. Server en op mijn werk op een FreeBSD bak. Hier zal ongetwijfeld wel weer het probleem zitten, maar waar he. Das de vraag. Zal vanmiddag E_ALL er weer eens ff in gooien.

Verwijderd

Yeps,

Daar had ik in ieder geval last van :)
Op maandag 13 mei 2002 10:04 schreef kaandorp het volgende:
Beide omgevingen zijn PHP 4.1.2 en beide met Apache.

Thuis draait het op een Windows 2000 Adv. Server en op mijn werk op een FreeBSD bak. Hier zal ongetwijfeld wel weer het probleem zitten, maar waar he. Das de vraag. Zal vanmiddag E_ALL er weer eens ff in gooien.

  • kaandorp
  • Registratie: November 1999
  • Laatst online: 03-09 22:36
Waar ik trouwens ook geen hol van snap...
Op die NT machine is het:
$_ENV["REMOTE_HOST"]

En op die FreeBSD is het:
$_ENV["REMOTEHOST"]

Waar slaat dit nou weer op! Zo kun je nooit normaal proggen!

Verwijderd

Mja dat is wel met meer dingen... met win32 moet je sommige paths volledig opgeven en bij *nix niet... live with it :)

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 06-09 00:14

DizzyWeb

Ondertiteld

Environmental Variables hebben meen ik niet direct met PHP van doen, maar met de omgeving... DUs kan zijn dat het per omgeving verschilt?

Ik gok maar wat, eigenlijk :P

Maar er is ook een variabele $REMOTEHOST zover ik weet :)
Pagina: 1