Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>The problem may have something to do with IIS working a bit differently. I've had success with these two function from the <a href="http://cakephp.org" rel="nofollow noreferrer">CakePHP</a> project.</p> <pre><code>/** * Gets remote client IP * * @return string Client IP address * @access public */ function getClientIP($safe = true) { if (!$safe &amp;&amp; env('HTTP_X_FORWARDED_FOR') != null) { $ipaddr = preg_replace('/(?:,.*)/', '', env('HTTP_X_FORWARDED_FOR')); } else { if (env('HTTP_CLIENT_IP') != null) { $ipaddr = env('HTTP_CLIENT_IP'); } else { $ipaddr = env('REMOTE_ADDR'); } } if (env('HTTP_CLIENTADDRESS') != null) { $tmpipaddr = env('HTTP_CLIENTADDRESS'); if (!empty($tmpipaddr)) { $ipaddr = preg_replace('/(?:,.*)/', '', $tmpipaddr); } } return trim($ipaddr); } /** * Gets an environment variable from available sources, and provides emulation * for unsupported or inconsistent environment variables (i.e. DOCUMENT_ROOT on * IIS, or SCRIPT_NAME in CGI mode). Also exposes some additional custom * environment information. * * @param string $key Environment variable name. * @return string Environment variable setting. * @link http://book.cakephp.org/view/701/env */ function env($key) { if ($key == 'HTTPS') { if (isset($_SERVER['HTTPS'])) { return (!empty($_SERVER['HTTPS']) &amp;&amp; $_SERVER['HTTPS'] !== 'off'); } return (strpos(env('SCRIPT_URI'), 'https://') === 0); } if ($key == 'SCRIPT_NAME') { if (env('CGI_MODE') &amp;&amp; isset($_ENV['SCRIPT_URL'])) { $key = 'SCRIPT_URL'; } } $val = null; if (isset($_SERVER[$key])) { $val = $_SERVER[$key]; } elseif (isset($_ENV[$key])) { $val = $_ENV[$key]; } elseif (getenv($key) !== false) { $val = getenv($key); } if ($key === 'REMOTE_ADDR' &amp;&amp; $val === env('SERVER_ADDR')) { $addr = env('HTTP_PC_REMOTE_ADDR'); if ($addr !== null) { $val = $addr; } } if ($val !== null) { return $val; } switch ($key) { case 'SCRIPT_FILENAME': if (defined('SERVER_IIS') &amp;&amp; SERVER_IIS === true) { return str_replace('\\\\', '\\', env('PATH_TRANSLATED')); } break; case 'DOCUMENT_ROOT': $name = env('SCRIPT_NAME'); $filename = env('SCRIPT_FILENAME'); $offset = 0; if (!strpos($name, '.php')) { $offset = 4; } return substr($filename, 0, strlen($filename) - (strlen($name) + $offset)); break; case 'PHP_SELF': return str_replace(env('DOCUMENT_ROOT'), '', env('SCRIPT_FILENAME')); break; case 'CGI_MODE': return (PHP_SAPI === 'cgi'); break; case 'HTTP_BASE': $host = env('HTTP_HOST'); if (substr_count($host, '.') !== 1) { return preg_replace('/^([^.])*/i', null, env('HTTP_HOST')); } return '.' . $host; break; } return null; } </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload