За последние 24 часа нас посетили 7046 программистов и 446 роботов. Сейчас ищут 85 программистов ...

select 2 = "02" даёт 1

Тема в разделе "MySQL", создана пользователем mkramer, 8 авг 2017.

  1. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    7.847
    Симпатии:
    1.543
    Обнаружил вот эту фигню, решая задачу от сеошника. Т.е. при сравнении id, полученного из url, если дописать сколько угодно нулей в id, получится нужная страница, и сеошник кричит, типа дубль. Есть не костыльное решение? (пока из php проверяю наличие ведущих нулей и отдаю 404-ю).
     
  2. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.039
    Симпатии:
    85
    Адрес:
    Мещёра, Центр, Болото N3
    А в чём проблема? В чтении доки? :)
    Если нужно сравнить строки, так и сравнивай их. В (2 = "02") сравниваются числа.
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    7.847
    Симпатии:
    1.543
    Типа делаем
    Код (Text):
    1.  
    2. select * from tbl_name where cast(id as char)="02";
    Просто раньше не задумывался над этой проблемой, раньше сеошники 0 вперёд не додумывались ставить.
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.165
    Симпатии:
    1.762
    Адрес:
    :сердА
    И никому оно не надо. И никаких дублей гугл видеть не будет. Просто есть класс людей, который любит придумывать проблемы, чтобы оправдывать свое существование.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.419
    Симпатии:
    1.742
    если нули пугают - проверяй наличие нулей впереди
    PHP:
    1. if ((string)$_GET['id'] === (string)(int)$_GET['id']) {
    2.   хорошо
    3. } else {
    4.   404
    5. }
    --- Добавлено ---
    доктор, меня пугают нули