Проверка ip в базе

Discussion in 'PHP' started by Zmii666, 5 Feb 2018.

  1. Zmii666

    Zmii666 New Member

    Joined:
    4 Sep 2012
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    Ребята как будет выглядеть код php, который будет проверять айпи адрес юзера зашедшего на сайт с айпи адресом в базе данных

    Code:
    <?php
    
    $ipuser = $_SERVER["REMOTE_ADDR"];
    $host = '192.168.1.27';
    $passwd = '1123456789';
    $login = 'root';
    $dbname = 'forum';
    
    $dbc = @mysql_connect($host,$login,$passwd);
    if (!$dbc)
    {
      echo( "<P>В настоящий момент сервер базы данных не доступен, поэтому
                корректное отображение страницы невозможно.</P>" );
      exit();
    }
    if (!@mysql_select_db($dbname, $dbc))
    {
      echo( "<P>В настоящий момент база данных не доступна, поэтому
                корректное отображение страницы невозможно.</P>" );
      exit();
    }
    $tableIP = mysql_query("select * from accounts;");
    if($tableIP)
    {
      // Определяем таблицу и заголовок
     
      // Так как запрос возвращает несколько строк, применяем цикл
      while($accounts = mysql_fetch_array($tableIP))
         
      if($tableIP = true)
      {
        echo
        "<p><b>Ваш айпи есть в базе</b><p>";
      }
    }
    else
      echo "<p><b>Вашего айпи нет в базе</b><p>";
      exit();
     php?>
    сильно не пинайте, учусь по тихоньку!
    пробовал нечто вот такое не работает ))))
     
  2. WVBR

    WVBR Elder - Старейшина

    Joined:
    14 Feb 2008
    Messages:
    45
    Likes Received:
    17
    Reputations:
    0
    что ты темы плодишь? я уже написал тебе, что начни с того, что переделай запрос. делай выборку по условию, что бы из таблиц выбирались строки с текущим у юзера ip

    Code:
    <?php
    
    $ipuser = $_SERVER["REMOTE_ADDR"];
    $tableIP = mysql_query("select * from accounts where название столбец с айпи=$ipuser;");
    
    
     
    Zmii666 likes this.
  3. Zmii666

    Zmii666 New Member

    Joined:
    4 Sep 2012
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    да я понимаю кому-то такой код в 5сек написать а я хотел бы увидить как его реализовать можно и понять как это работает!
     
  4. spiner

    spiner Member

    Joined:
    8 Jul 2015
    Messages:
    74
    Likes Received:
    56
    Reputations:
    4
    в который раз убеждаюсь, что правильно составленный вопрос содержит 85% ответа. ТС, можешь подробно пояснить какие данные есть в БД и что тебе нужно получить?
     
  5. Zmii666

    Zmii666 New Member

    Joined:
    4 Sep 2012
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    Полностью согласен с вами !
    Нужно чтоб скрипт проверял айпи юзера который заходит на сайт(тобиш айпи который у него сейчас) с айпи который есть в бд!
    если айпи совпадает то кладет в базу нужную мне инфу
     
  6. spiner

    spiner Member

    Joined:
    8 Jul 2015
    Messages:
    74
    Likes Received:
    56
    Reputations:
    4
    IP - единственный признак, по которому нужно определять пользователя? или, например, есть еще имя пользователя/куки/др., по которому нужно определить пользователя, а затем уже узнать зашел ли этот пользователь с того же IP, что ранее?
     
  7. Zmii666

    Zmii666 New Member

    Joined:
    4 Sep 2012
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    да, именно только по айпи , куки и имя пользователя не нужно, я понимаю что айпи может менться но нужно только с айпишником это правернуть!
     
  8. spiner

    spiner Member

    Joined:
    8 Jul 2015
    Messages:
    74
    Likes Received:
    56
    Reputations:
    4
    1. На любом адекватном хостинге использование для работы с MySQL функций с префиксом mysql_* будет воспринято смехом(зачёркнуто) фэйлом, так как эти функции устаревшие и небезопасные, потому нужно смотреть в сторону расширения MySQLi (http://php.net/manual/ru/book.mysqli.php).
    2. Из предоставленного кода абсолютно непонятна структура таблицы в БД, в следствие чего, нельзя написать конкретный SQL запрос, но если примерно, то смотри коммент от WVBR.
    3. В случае с твоим кодом непонятно зачем использовать цикл, если результат SQL запроса ты пытаешься получить через mysql_fetch_array, которая возвращает полный массив строк таблицы (логичнее было бы использовать уже mysql_fetch_row для построкового получения результатов).
    4.
    Code:
    if($tableIP = true)
    
    это вообще не сравнение, а присваивание переменной значения true, что само по себе определяет результат выполнения конструкции if как true, а else у тебя вообще вынесено за пределы цикла.

    В общем, для корректной работы тебе нужно выполнять лишь один SQL запрос, который предоставлен выше товарищем WVBR и проверять возвращает ли он какой-нибудь результат (есть ли этот IP в таблице):
    Code:
    $ipuser = $_SERVER["REMOTE_ADDR"];
    //SQL запрос для получения строк, в которых значение столбца ip равно текущему IP пользователя
    $sql = "select * from `accounts` where `ip` LIKE '$ipuser'";
    //выполнение запроса
    $res = mysql_query($sql);
    //получение количества строк в результате
    $rows_count = mysql_num_rows($res);
    //если количество строк меньше одной завершаем работу скрипта
    if ($rows_count < 1)
    {
      die("IP нет в БД");
    }
    //если IP есть в базе будет выполняться весь код ниже
    
     
  9. Zmii666

    Zmii666 New Member

    Joined:
    4 Sep 2012
    Messages:
    42
    Likes Received:
    0
    Reputations:
    0
    вот спасибо за потраченое время все понятно разъеснил!