я написал простой скрипт который вносит 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, убрать нужно. А вообще, хорошо бы ошибки показать, а то так сложно.
Виртуальный выделенный сервер (VDS) становится отличным выбором
при выставлении атрибуту PDO::ATTR_EMULATE_PREPARES значения FALSE, возникает ошибка:
Проблема такая, есть многомерный массив, с двумя ключами AUTHORS и BOOKS, в этих ключах еще вложены массивы, ключами для авторов являются их емэйлы...
У меня есть две таблицы в БДМне нужно во второй таблице в поле routes_route_id сослаться на поле route_id в первой таблице, но я не могу указать связь...
Делаю тестовое заданиеНеобходимо реализовать гостевую книгу на MVC