- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый вечер.
Хочу сделать авторизацию и регистрацию юзеров на сайте.
Посоветуйте пожалуйста нормальные методы.
Я пробовал сделать по этому методу http://habrahabr.ru/post/13726/
В форме есть чебокс который отключает привязку сессии к IP-адресу?
Так вот если я отключаю его, то выходит ошибка
авторизацию не пройти.
$data['ip'] !== $_SERVER['REMOTE_ADDR'])
если чек стоит то 127.0.0.1 !== 127.0.0.1 and 127.0.0.1 !==0
если чек снят выдает ошибку 0.0.0.0 !== 127.0.0.1 and 0.0.0.0 !==0
Ошибка в том,
что IP заносится только если чек стоит, если снять чек то поле IP пустое выдаст ошибку
Это что получается что код ошибочен?
ведь если чебокс снят то $data['ip'] не будет соответствовать условию.
Выложите где-то свой код, а то вы, видимо, его изменили. На хабре ip в переменной $userdata['user_ip'] а у вас в $data['ip'], поэтому нет возможности понять что не так.
Что же касается логики, то вроде, там все правильно. Там проверяется либо совпадение IP (если вкл) либо равенство IP нулю (если выкл)
Т.е. если шех или ID не совпадают, ИЛИ если ip не совпадает И не равен 0 - авторизация не удалась
Т.е. если шех или ID не совпадают, ИЛИ если ip не совпадает И не равен 0 - авторизация не удалась
Ну да код я подправил, но сути не меняет, я показал как пример.
Проблема как раз в IP. Не мойму почему он отдается как 0.0.0.0, хотя в базе он как 0
Вот что отдает var_dump
["user_ip"]=>
string(1) "0"
["ip"]=>
string(7) "0.0.0.0"
Алиас user_ip отдает пустой IP в виде нулей. Возможно в этом косяк. Щас попробую без использования алиаса as
Если взять код с хабра то получается тоже самое.
Если чебокс отключен то ошибка, потому как IP отдается в виде 0.0.0.0
а $_SERVER['REMOTE_ADDR'] содержит IP-адрес клиента
Может проблема в том что я все делаю на локалке?
Вот код
А у вас в базе IP в каком виде: число или текст? Судя по этому
$query = mysql_query("SELECT *,INET_NTOA(user_ip) AS ip FROM `user` WHERE `us` = '".intval($_COOKIE['id'])."' LIMIT 1");
в числовом.
А зачем? Я бы в тексте и хранил.. Тогда INET_NTOA(user_ip) просто поменять на user_ip в SQL
Нужно посмотреть, как вы IP ложите в базу.
Не мойму почему он отдается как 0.0.0.0, хотя в базе он как 0
Может, поменяйте сравнение не с 0 а с '0.0.0.0' тогда.. Хотя лучше конечно полностью разобраться
Вобщем для полноты картины мне надо
результат запроса "desc user" и "select * from user" из базы и код, который ложит IP в базу
Может проблема в том что я все делаю на локалке?
исключено
В общем все дело в в том что я алиас `ip` не обрамил кавычками, и мускул не правильно обрабатывал данные
при включенном чекбоксе (user_ip) as ip
Спасибо за помощь, блин весь мозг себе схавал )))).
Теперь все супер.
К стати на хабре вообще нет алиаса, и там отдается не обработанное значение ячейки
Если в таблице ip значение получить так INET_NTOA(user_ip) то получится не обработанное значение IP адреса 2130706433
А если сделать алиас INET_NTOA(user_ip) as `ip` FROM то в место 2130706433 получим IP адрес.
Главное кавычки `ip`. Иначе если так INET_NTOA(user_ip) as ip то получим 0.0.0.0
---------- Добавлено 04.01.2013 в 18:03 ----------
А у вас в базе IP в каком виде: число или текст? Судя по этому
в числовом.
А зачем? Я бы в тексте и хранил.. Тогда INET_NTOA(user_ip) просто поменять на user_ip в SQL
inet_aton(ip_adress) - конвертирует IP адрес в численное представление.
Нет именно в числовом, для этого и используется преобразование IP в 2130706433
127.0.0.1 INET_ATON('" ]. = 2130706433
2130706433 после обработки INET_NTOA(user_ip) = 127.0.0.1
Конечно можно тупо выкинуть функцию INET_ATON
Но раз уж она стоит то лучше разобраться и найти косяк.. Что я и сделал.