я написал простой скрипт который вносит ip клиента в БД но мне захотелось переписать его в ооп стиле
include('db.php');
class ClientIp
{
function getIp ()
{
$client = @$_SERVER['HTTP_CLIENT_IP'];
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote = @$_SERVER['REMOTE_ADDR'] . " local";
if (filter_var($client, FILTER_VALIDATE_IP)) $ip = $client;
elseif (filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward;
else $ip = $remote;
return $ip;
}
}
$ip = new ClientIp;
echo $ip->getIp();
$setIp = $db->prepare("INSERT INTO guest_ip (ip) VALUES (:ip)");
$setIp->bindParam(':ip', $ip->getIp());
$setIp->execute();
вот так это работает но я продолжил и добавил метод saveIp()
теперь это выглядит так но это не работает
include('db.php');
class ClientIp
{
static function getIp ()
{
$client = @$_SERVER['HTTP_CLIENT_IP'];
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote = @$_SERVER['REMOTE_ADDR'] . " local";
if (filter_var($client, FILTER_VALIDATE_IP)) $ip = $client;
elseif (filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward;
else $ip = $remote;
return $ip;
}
function saveIp () {
$setIp = $db->prepare("INSERT INTO guest_ip (ip) VALUES (:ip)");
$setIp->bindParam(':ip', ClientIp::getIp());
$setIp->execute();
}
}
$ip = new ClientIp;
echo $ip->getIp();
$ip->saveIp();
что не так ?
Попробуйте так:
include('db.php');
class ClientIp
{
public function getIp ()
{
$client = @$_SERVER['HTTP_CLIENT_IP'];
$forward = @$_SERVER['HTTP_X_FORWARDED_FOR'];
$remote = @$_SERVER['REMOTE_ADDR'] . " local";
if (filter_var($client, FILTER_VALIDATE_IP)) $ip = $client;
elseif (filter_var($forward, FILTER_VALIDATE_IP)) $ip = $forward;
else $ip = $remote;
return $ip;
}
public function saveIp(&$database) {
$setIp = $databse->prepare("INSERT INTO guest_ip (ip) VALUES (:ip)");
$setIp->bindParam(':ip', $this->getIp());
$setIp->execute();
}
}
$ip = new ClientIp;
echo $ip->getIp();
$ip->saveIp($db);
Ошибка тут:
$ip = new ClientIp;
echo $ip->getIp();
у вас функция:
static function getIp ()
Объявлена как static, убрать нужно. А вообще, хорошо бы ошибки показать, а то так сложно.
Продвижение своими сайтами как стратегия роста и независимости