[php]ip checken via function werkt niet?

Pagina: 1
Acties:
  • 50 views sinds 30-01-2008

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
Ey,

Ik check redelijk vaak het ip van mijn bezoekers/users, daarom leek het mij handig om een functie te maken die dat doet, dus ipv in ieder bestand dat ik het nodig heb dit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    //haal ip op
    if($HTTP_X_FORWARDED_FOR) 
      { 
       $ip = $HTTP_X_FORWARDED_FOR; 
      } 
      elseif($HTTP_VIA) 
      {     
       $ip = $HTTP_VIA; 
      } 
      elseif($REMOTE_ADDR) 
      { 
       $ip = $REMOTE_ADDR; 
      } 
      else 
      { 
       $ip = "unknown"; 
      }


gewoon dit:

PHP:
1
$session_ip = ip();


met een include waarin deze functie staat:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
funtion ip(){
    //haal ip op
    if($HTTP_X_FORWARDED_FOR) 
      { 
       $ip = $HTTP_X_FORWARDED_FOR; 
      } 
      elseif($HTTP_VIA) 
      {     
       $ip = $HTTP_VIA; 
      } 
      elseif($REMOTE_ADDR) 
      { 
       $ip = $REMOTE_ADDR; 
      } 
      else 
      { 
       $ip = "unknown"; 
      } 
return $ip;
}


Echter, als ik het dmv van een functie doe (of die nu in een aparte file staat en geinclude word of in dezelfde file, maakt niet uit) dan geeft hij ALTIJD unknown... Kan je in functions soms niet bij die informatie?? Ik wil namelijk niet die 3 dingen gaan meegeven als het niet hoeft!

dit werkt dus wel:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function ip($ip1, $ip2, $ip3){
    //haal ip op
    if($ip1) 
      { 
       $ip = $ip1; 
      } 
      elseif($ip2) 
      {     
       $ip = $ip2; 
      } 
      elseif($ip3) 
      { 
       $ip = $ip3; 
      } 
      else 
      { 
       $ip = "unknown"; 
      } 
      return $ip;
}

echo ip($HTTP_X_FORWARDED_FOR, $HTTP_VIA, $REMOTE_ADDR);

Research is what I'm doing when I don't know what I'm doing.


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

1 (zoek)woord: scope

variabelen zoals $HTTP_X_FORWARDED_FOR moet je binnen een functie expliciet als global aanmerken of (zoals je zelf al ontdekt had) doorgeven als parameter.
Voor superglobals geldt dit trouwens niet (en ik zou je willen aanraden die te gaan gebruiken tenzij je host nog een echt antieke PHP versie draait)
Hier is wel genoeg over te vinden zowel hier in de FAQ als op php.net lijkt me...

Intentionally left blank


  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024
Merci, that did the job (pffff, denk je dat je toch wel et één en ander weet van php :{)

Research is what I'm doing when I don't know what I'm doing.


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

drm

f0pc0dert

tjsa.

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


Dit topic is gesloten.