What is the most accurate way to retrieve a user’s correct IP address in PHP?

Here is a shorter, cleaner way to get the IP address: function get_ip_address(){ foreach (array(‘HTTP_CLIENT_IP’, ‘HTTP_X_FORWARDED_FOR’, ‘HTTP_X_FORWARDED’, ‘HTTP_X_CLUSTER_CLIENT_IP’, ‘HTTP_FORWARDED_FOR’, ‘HTTP_FORWARDED’, ‘REMOTE_ADDR’) as $key){ if (array_key_exists($key, $_SERVER) === true){ foreach (explode(‘,’, $_SERVER[$key]) as $ip){ $ip = trim($ip); // just to be safe if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false){ return $ip; } } } } … Read more

How to post data in PHP using file_get_contents?

Sending an HTTP POST request using file_get_contents is not that hard, actually : as you guessed, you have to use the $context parameter. There’s an example given in the PHP manual, at this page : HTTP context options (quoting) : $postdata = http_build_query( array( ‘var1’ => ‘some content’, ‘var2’ => ‘doh’ ) ); $opts = … Read more

Make XAMPP / Apache serve file outside of htdocs folder [closed]

Ok, per pix0r’s, Sparks’ and Dave’s answers it looks like there are three ways to do this: Virtual Hosts Open C:\xampp\apache\conf\extra\httpd-vhosts.conf. Un-comment ~line 19 (NameVirtualHost *:80). Add your virtual host (~line 36): <VirtualHost *:80> DocumentRoot C:\Projects\transitCalculator\trunk ServerName transitcalculator.localhost <Directory C:\Projects\transitCalculator\trunk> Order allow,deny Allow from all </Directory> </VirtualHost> Open your hosts file (C:\Windows\System32\drivers\etc\hosts). Add 127.0.0.1 transitcalculator.localhost … Read more

How to get time difference in minutes in PHP

The answers above are for older versions of PHP. Use the DateTime class to do any date calculations now that PHP 5.3 is the norm. Eg. $start_date = new DateTime(‘2007-09-01 04:10:58’); $since_start = $start_date->diff(new DateTime(‘2012-09-11 10:25:00′)); echo $since_start->days.’ days total<br>’; echo $since_start->y.’ years<br>’; echo $since_start->m.’ months<br>’; echo $since_start->d.’ days<br>’; echo $since_start->h.’ hours<br>’; echo $since_start->i.’ minutes<br>’; … Read more

When should I use Memcache instead of Memcached?

Memcached client library was just recently released as stable. It is being used by digg ( was developed for digg by Andrei Zmievski, now no longer with digg) and implements much more of the memcached protocol than the older memcache client. The most important features that memcached has are: Cas tokens. This made my life … Read more

break out of if and foreach

if is not a loop structure, so you cannot “break out of it”. You can, however, break out of the foreach by simply calling break. In your example it has the desired effect: $device = “wanted”; foreach($equipxml as $equip) { $current_device = $equip->xpath(“name”); if ( $current_device[0] == $device ) { // found a match in … Read more