$_SERVER['REMOTE_ADDR'] kullanıcılar tarafından değiştirilemez. Yani güvenle kullanabilirsiniz. Aşılma ihtimali var diyen arkadaşlar aşsın, biz de takdir edelim kendilerini.
Kullanıcıların bu kontrolü aşmak için bilgisayarınızda bir PROXY sunucusu bulunması ve kontrolü aşacak olan kullanıcının bu PROXY sunucusunu kullanarak sizin IP adresinizi kullanıyor olması gerekir. Yani bu kontrolü aşması için önce sizin bilgisayarınızı, ya da internet servis sağlayıcınızı hacklemesi gerekir. Ki, sayfanız bunları yapabilecek adamın elindedir zaten.
Merhaba,
$_SERVER globali manipüle edilebilir. Aşağıdaki örnek ile bunu anlayabilirsiniz. Ek olarak, soruda "istemci" tarafından manipüle edilip edilemeyeceği sorulmuş. Proxy ile aşalabilir ama "fake" ip adresi göndermek imkansız! Tarayıcı ile HTTP sunucusu arasında TCP bağlantısı kurulduğu ve bu bağlantı "3-way handshake" olarak kurulduğu içindir.
<?php
header('Content-Type: text/plain; charset=UTF-8');
printf('PHP Version: %s' . PHP_EOL, PHP_VERSION);
printf('Before: $_SERVER[\'REMOTE_ADDR\'] = %s' . PHP_EOL, $_SERVER['REMOTE_ADDR']);
$_SERVER['REMOTE_ADDR'] = '188.12.15.99';
printf('After: $_SERVER[\'REMOTE_ADDR\'] = %s' . PHP_EOL, $_SERVER['REMOTE_ADDR']);
printf('Before: getenv(\'REMOTE_ADDR\') = %s' . PHP_EOL, getenv('REMOTE_ADDR'));
var_dump(putenv('REMOTE_ADDR=188.12.15.99'));
printf('After: getenv(\'REMOTE_ADDR\') = %s' . PHP_EOL, getenv('REMOTE_ADDR'));