Почему мой метод проверки IP не работает? PHP / MySQL

Почему моя попытка проверить двойное голосование через IP-адрес не работает должным образом?

if ($qtype === "sc"){
                // single choice has only one select item



                // check whether user has already answered this question
                $i=0;
                $res = mysqli_query($mysqli, "SELECT ip FROM votedanswers WHERE ip = \"".$ip."\" and qID = \"".$qID."\"");

                while($obj = mysqli_fetch_object($res))
                {
                  $i = $i+1;
                }                   
                if ($i > 0){
                    echo "your vote has already been counted";
                }
                else{
                    //insert data
                    $res = mysqli_query($mysqli, "INSERT INTO votedanswers (ip, qID, qQuestion, aID) VALUES ('$ip', '$qID', '$quest', '$aID')");
                    echo "your vote has been counted";
                }   



        } else {
            echo "nope!";
        }`

Почему мой метод проверки IP не работает? PHP / MySQL

Некоторое время назад тестировал, и все было хорошо. Но теперь я могу голосовать сколько хочу.

Ваш код уязвим для атак SQL-инъекция. Вы должны использовать подготовленные операторы с привязанными параметрами через mysqli или PDO. У Эта почта есть несколько хороших примеров.

Alex Howansky 04.11.2018 18:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
1
33
1

Ответы 1

Попробуй это:

    if ($qtype === "sc"){
            // single choice has only one select item



            // check whether user has already answered this question
            $i=0;
            $res = mysqli_query($mysqli, "SELECT ip FROM votedanswers WHERE ip = \"".$ip."\" and qID = \"".$qID."\"");

            while($obj = mysqli_fetch_assoc($res))
            {
              $i = $i+1;
            }                   
            if ($i > 0){
                echo "your vote has already been counted";
            }
            else{
                //insert data
                $res = mysqli_query($mysqli, "INSERT INTO votedanswers (ip, qID, qQuestion, aID) VALUES ('$ip', '$qID', '$quest', '$aID')");
                echo "your vote has been counted";
            }   



    } else {
        echo "nope!";
    }

Также см .: Как я могу предотвратить SQL-инъекцию в PHP?

Другие вопросы по теме