- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
<?php $connection = mysqli_connect ('localhost','root','','userlistdb');
// Проверка, если это общий клиент
if (!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
//Is it a proxy address
}elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
// Значение $ ip в этот момент будет выглядеть примерно так: "192.0.34.166"
$ip = ip2long($ip);
// Теперь $ ip будет выглядеть примерно так: 1073732954
$sql = "INSERT INTO user(ip) VALUES('$ip')";
$dbQuery = mysql_query($sql,$dbLink);
$stmt = $dbh->prepare("INSERT INTO usertbl(ip) VALUES(ip)");
$stmt->bindParam(1, $ip);
$stmt->execute();
?>
выдаёт ошибку:
Примечание : Не определено переменная: DBLink в C: \ XAMPP \ HTDOCS \ офсетные \ testip.php на линии 21
Внимание : mysql_query () ожидает параметр 2 , чтобы быть ресурсом, приведены в нуль C: \ XAMPP \ HTDOCS \ кормили \ testip.php на строка 21
Примечание : неопределенная переменная: dbh в C: \ xampp \ htdocs \ fed \ testip.php в строке 25
Фатальная ошибка : вызов функции-члена prepare () для null в C: \ xampp \ htdocs \ fed \ testip.php на линии 25
$dbQuery = mysql_query($sql,$dbLink);
$stmt = $dbh->prepare("INSERT INTO usertbl(ip) VALUES(ip)");
Кто знает как записать IP из формы и сохранить в базу даных MySQL
guest8 18.04.2019 20:50 # −999
gost 18.04.2019 20:54 # +2
Скорее небо упадёт на Землю, чем переведутся дураки, которые так делают.
guest8 18.04.2019 20:57 # −999
gost 18.04.2019 21:09 # +4
И всё было бы хорошо, если бы не один момент: любой клиент может спокойно добавить этот заголовок с абсолютно случайными данными. Более того, есть даже расширения, которые в автоматическом режиме на каждый запрос шлют случайный «реальный» IP. Поэтому доверять таким заголовкам (их несколько разных бывает, они не стандартизированы) абсолютно бессмысленно, а иногда и вредно (когда-то давно видел даже SQL-инъекцию, которая возникала из-за того, что анскиллябры не фильтровали содержимое заголовка). Но недалёкие желающие наебать систему и деанонимизировать злобных хакеров продолжают засыпать «SO» вопросами в стиле «How to get user's real IP».
Разумеется, это не касается всяких хитрых конфигураций, когда, к примеру, сайт стоит за «Cloudflare», который гарантированно добавляет настоящий IP, но это уже тонкие детали.
guest8 18.04.2019 21:24 # −999
BOKCEJIbHblu_nemyx 18.04.2019 22:04 # +3
gost 19.04.2019 00:09 # +2
BoeHHblu_nemyx 19.04.2019 00:14 # 0
rJlynblu_nemyx 19.04.2019 00:26 # 0
Но я хочу учиться и стать умным!
AHCKuJlbHblu_nemyx 19.04.2019 00:31 # 0
BOKCEJIbHblu_nemyx 19.04.2019 12:23 # 0
BoeHHblu_nemyx 18.04.2019 22:28 # 0
gost 19.04.2019 00:07 # +1
В принципе, логгировать X-Forwarded-For и ему подобные заголовки имеет смысл, но только для информационных целей — например, для ручного разбирательства в случае чего.
bormand 19.04.2019 11:10 # +1
and to beat his ebalo.
bormand 19.04.2019 11:28 # 0
Кстати, а что такая прокся делает если ей пришёл запрос, в котором уже есть x-forwarded-for?
PACTPOBblu_nemyx 19.04.2019 12:35 # 0
BOKCEJIbHblu_nemyx 19.04.2019 12:49 # 0
BOKCEJIbHblu_nemyx 19.04.2019 12:58 # 0
PACTPOBblu_nemyx 19.04.2019 13:00 # +1
Ни за что не догадаетесь. Возвращает false:
https://ideone.com/sMEM79
PACTPOBblu_nemyx 19.04.2019 13:05 # 0
gost 19.04.2019 14:48 # +1
gost 19.04.2019 14:46 # 0
Интересно, а почему не -42?..
PACTPOBblu_nemyx 19.04.2019 15:52 # 0
gost 19.04.2019 19:10 # 0
PACTPOBblu_nemyx 19.04.2019 20:50 # 0
guest8 19.04.2019 21:35 # −999
gost 19.04.2019 14:45 # 0
PACTPOBblu_nemyx 19.04.2019 13:16 # +1
А некоторые опсосы и некоторые мобильные браузеры добавляют заголовок X-MSISDN с номером телефона.
BOKCEJIbHblu_nemyx 19.04.2019 13:54 # +2
На "Forwarded" есть спецификация:
https://tools.ietf.org/html/rfc7239#section-4
и на "Via":
https://tools.ietf.org/html/rfc7230#section-5.7.1
в отличие от "X-Forwarded-For", на который нет спецификаций, и он стал стандартом де-факто:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For
Просто у них синтаксис сложнее.
PACTPOBblu_nemyx 19.04.2019 12:49 # +1
gost 19.04.2019 15:10 # 0
PACTPOBblu_nemyx 19.04.2019 15:13 # +1
BOKCEJIbHblu_nemyx 19.04.2019 15:53 # +2
PACTPOBblu_nemyx 19.04.2019 15:57 # 0
PACTPOBblu_nemyx 19.04.2019 15:16 # +1
Спойлерю ответ:
PACTPOBblu_nemyx 19.04.2019 15:20 # +1
PACTPOBblu_nemyx 19.04.2019 15:34 # +1
bormand 19.04.2019 18:16 # 0
modx_real_get_client_ip
PACTPOBblu_nemyx 19.04.2019 18:36 # +1
AHCKujlbHblu_netyx 19.04.2019 18:55 # 0
AHCKuJlbHblu_nemyx 19.04.2019 22:17 # 0
guest8 20.04.2019 00:57 # −999
gost 19.04.2019 19:09 # +1
Есть 14 конкурирующих стандартов.png
gost 19.04.2019 19:19 # 0
AHCKuJlbHblu_nemyx 19.04.2019 22:19 # +1
Так может это gost напиздел, и это всё правильные способы? Не могут же столько фреймворков ошибаться.
PACTPOBblu_nemyx 19.04.2019 15:37 # +1
Весь код метода factory я цитировать не буду.
straga_coda 18.04.2019 22:00 # −1
Поиграй с кавычками и пробелами) "INSERT INTO user (ip) VALUES('".$ip."')"
BOKCEJIbHblu_nemyx 18.04.2019 22:08 # +1
BOKCEJIbHblu_nemyx 18.04.2019 22:02 # +1
BOKCEJIbHblu_nemyx 18.04.2019 22:17 # +2
Строки 24-27 у тебя лишние, ты не используешь PDO.
ЗЫ. Найди какую-нибудь книжку, и учи язык нормально, а не копипасть код откуда попало, тогда и вопросов меньше будет.
BoeHHblu_nemyx 18.04.2019 22:30 # +2
guest8 19.04.2019 08:40 # −999
PACTPOBblu_nemyx 19.04.2019 15:42 # 0
PACTPOBblu_nemyx 19.04.2019 12:52 # 0
Подготовленные выражения есть не только в PDO:
https://www.php.net/manual/ru/mysqli-stmt.prepare.php
Но здесь и вправду эти строки лишние, потому что переменная $dbh не инициализирована.
BoeHHblu_nemyx 18.04.2019 22:36 # 0
Какой анскилл )))
PACTPOBblu_nemyx 19.04.2019 12:37 # 0