PHP

Як визначити IP користувача в PHP
Як визначити IP користувача в PHP

У цій статті розглянемо одну з поширених задач у програмуванні на PHP. А саме — як у PHP визначити IP користувача.

Якщо я працюю не з фреймворком (наприклад, таким як Yii), то використовую одне з готових рішень у вигляді наступної функції:

function user_ip()
{
	if(getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"),"unknown"))
	{
		return getenv("HTTP_CLIENT_IP");
	}
	else if(getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
	{
		return getenv("HTTP_X_FORWARDED_FOR");
	}
	else if(getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
	{
		return getenv("REMOTE_ADDR");
	}
	else if(!empty($_SERVER['REMOTE_ADDR']) && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
	{
		return $_SERVER['REMOTE_ADDR'];
	}
	
	return NULL;
}

читати далі...

Як видалити елемент масиву по ключу в PHP
Як видалити елемент масиву по ключу в PHP

У цій короткій статті розглянемо декілька прикладів видалення елементів масиву за його ключем.

Повний лістинг коду нижче:

$array = [
	1 => 'One',
	'Two' => 3,
	'Three' => 'Three',
	4 => NULL,
];
echo "<pre dir='ltr'>";print_r($array); echo "</pre>";

if(isset($array['Two']))
{
	unset($array['Two']);
}
echo "<pre dir='ltr'>";print_r($array); echo "</pre>";

if(isset($array[4]))
{
	unset($array[4]);
}
echo "<pre dir='ltr'>";print_r($array); echo "</pre>";

if(array_key_exists(4, $array))
{
	unset($array[4]);
}
echo "<pre dir='ltr'>";print_r($array); echo "</pre>";

читати далі...

Як визначити регіон IP на PHP використовуючи БД
Як визначити регіон IP на PHP використовуючи БД

У цій статті розглянемо один із варіантів визначення локації користувача за його IP-адресою. А саме — з використанням існуючої бази регіонів та присвоєних їм IP-адрес мережі.

Існуючих баз даних доволі багато. Але мені довелося мати справу з базою від сайту ip2location.com. Нічого поганого про цю базу сказати не можу, оскільки моя область і регіони деяких моїх клієнтів були успішно знайдені.

Перше, що нам знадобиться — це завантажити файл з базою даних. Вони надають його у форматі CSV. Завантажити файл можна з цієї сторінки.

Імпорт даних з файлу регіонів та IP

Дотримуйтесь інструкції в описі — це зекономить вам час. Я спочатку вирішив спробувати імпортувати дані через phpMyAdmin (використовуючи імпорт CSV), і це зайняло набагато більше часу, ніж консольний імпорт.

читати далі...

Як видалити елемент масиву за значенням
Як видалити елемент масиву за значенням

Здавалося б, доволі тривіальне завдання, і потрібна функція мала б бути вбудована в ядро PHP, але, на жаль, її немає. Тож доводиться шукати власні рішення для реалізації цієї функціональності. Одне з рішень видалення елемента масиву за його значенням наведене нижче:

if(($delete_key = array_search($search_value, $my_array)) !== false)
{
	unset($my_array[$delete_key]);
}

Можна сказати — дві строчки, і функціонал готовий.

читати далі...

Як порахувати кількість секунд до кінця дня на PHP
Як порахувати кількість секунд до кінця дня на PHP

Оскільки такої функції в PHP не існує, довелося написати власну реалізацію:

function get_seconds_to_midnight()
{
	$left_day_hh = 23 - intval(date('H'));
	$left_day_mm = 59 - intval(date('i'));
	$left_day_ss = 60 - intval(date('s'));
	
	return 3600 * $left_day_hh + 60 * $left_day_mm + $left_day_ss;
}

читати далі...