За последние 24 часа нас посетили 18214 программистов и 1700 роботов. Сейчас ищут 1512 программистов ...

Помогите разобраться с сессиями или куками.

Тема в разделе "PHP для новичков", создана пользователем kvadim, 28 июн 2016.

  1. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    Ты серьезно такой медленный или прикалываешься?

    $sql="SELECT 1 FROM poll_ip WHERE id_teacher='".$teacher_id."'";
    Этим запросом ты выбираешь все записи в которых фигурирует данный препод. Если за него уже кто-то проголосовал - там будут строки. Не важно, с этого айпишника или не с этого. Ну ты пипец короче...
     
  2. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    PHP:
    1. // Делаю запрос и проверяю равен ли id_teacher конкретному введенному с формы id учителя
    2. $sql = "SELECT 1 FROM poll_ip  WHERE id_teacher='".$teacher_id."'";
    запрос есть, а отправка его где?)
     
    Ganzal нравится это.
  3. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    давай я тебе большим шрифтом напишу, вдруг заметишь

    Выбираем строку по паре дата-айпишник.
    --- Добавлено ---
    @mr.akv у него еще похоже и вывод ошибок отключен.
     
    mr.akv нравится это.
  4. kvadim

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

    С нами с:
    1 сен 2015
    Сообщения:
    69
    Симпатии:
    0
    Вот вывод ошибок включен или это не включен по Вашему?
    PHP:
    1. mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    2. $link = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
    3.  
    4. {
    5.     echo "Не возможно подлючится! ".mysqli_connect_error();
    6.     exit();
    7. }
    8.  
    9. //echo "Соединение установлено!";
    10. mysqli_query($link, "SET NAMES 'utf8' COLLATE 'utf8_general_ci'");
    11. mysqli_query($link, "SET CHARACTER SET 'utf8'");
     
  5. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    нет, это не включен)
     
    askanim нравится это.
  6. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @kvadim когда про отладку писал, там было написано как ошибки включить
    --- Добавлено ---
    забудь PHP на время, и всё сделай на MySQL.
    проголосуй, потом сделай выборку и посмотри есть ли голос, напиши какие запросы и в какой последовательности ты отправлял и что значит результат
     
  7. kvadim

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

    С нами с:
    1 сен 2015
    Сообщения:
    69
    Симпатии:
    0
    Добавил вот такой код для вывода ошибок
    PHP:
    1. ini_set('error_reporting', E_ALL);
    2. ini_set('display_errors', 1);
    3. ini_set('display_startup_errors', 1);
    И сделал теперь такой вот код
    PHP:
    1. // Делаю запрос
    2. $sql = "SELECT 1 FROM poll_ip WHERE data='".$data."', AND ip_address='".$ip_address."'";
    3. // посчитам количество рядов
    4. if($sql->num_rows)
    5. {
    6.     echo '<meta http-equiv="Content-type" content="text/html; charset=utf-8" />';
    7.     echo "Вы уже голосовали!";
    8.     exit;
    9. }
    10. // Если не голосовал, то записывает id учителя, дату и айпи
    11. $sql = "INSERT INTO poll_ip(id_teacher, data, ip_address) VALUES('".$teacher_id."', '".$data."', '".$ip_address."')";
    12. mysqli_query($link, $sql);
    13.  
    14. echo '<meta http-equiv="Content-type" content="text/html; charset=utf-8" />';
    15. echo "Ваш, голос добавлен!!";
    И все равно в таблицу запись идет. но не блокирует...:(((

    И в браузер выдает такое сообщение: "Notice: Trying to get property of non-object"
     
  8. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    какая строка?
     
  9. kvadim

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

    С нами с:
    1 сен 2015
    Сообщения:
    69
    Симпатии:
    0
    on line 35

    PHP:
    1. <?php
    2. include("config.php");
    3.  
    4. ini_set('error_reporting', E_ALL);
    5. ini_set('display_errors', 1);
    6. ini_set('display_startup_errors', 1);
    7.  
    8. $teacher_id = $_POST["teacher"];
    9. $teacher_id = strip_tags($teacher_id);
    10. $teacher_id = mysqli_real_escape_string($link, $teacher_id);
    11. $teacher_id = trim($teacher_id);
    12.  
    13. $ip_address = $_SERVER["REMOTE_ADDR"];
    14. $ip_address = strip_tags($ip_address);
    15. $ip_address = mysqli_real_escape_string($link, $ip_address);
    16. $ip_address = trim($ip_address);
    17.  
    18. $data = date("Ymd");
    19. $data = strip_tags($data);
    20. $data = mysqli_real_escape_string($link, $data);
    21. $data = trim($data);
    22.  
    23. /*
    24. echo $teacher_id;
    25. echo "<br>";
    26. echo $ip_address;
    27. echo "<br>";
    28. echo $data;
    29. echo "<br>";
    30. */
    31.  
    32. // Делаю запрос
    33. $sql = "SELECT 1 FROM poll_ip WHERE data='".$data."' AND ip_address='".$ip_address."'";
    34. // посчитам количество рядов
    35. if($sql->num_rows)
    36. {
    37.     echo '<meta http-equiv="Content-type" content="text/html; charset=utf-8" />';
    38.     echo "Вы уже голосовали!";
    39.     exit;
    40. }
    41. $sql = "INSERT INTO poll_ip(id_teacher, data, ip_address) VALUES('".$teacher_id."', '".$data."', '".$ip_address."')";
    42. mysqli_query($link, $sql);
    43.  
    44. echo '<meta http-equiv="Content-type" content="text/html; charset=utf-8" />';
    45. echo "Ваш, голос добавлен!!";
    46.  
    47. ?>
     
  10. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    ну $sql это строка ты к ней обратился как к объекту. думаю после 33 строчке ты забыл выполнить запрос
     
  11. kvadim

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

    С нами с:
    1 сен 2015
    Сообщения:
    69
    Симпатии:
    0
    Так теперь изменил следующее
    PHP:
    1. $sql = "SELECT 1 FROM poll_ip WHERE data='".$data."' AND ip_address='".$ip_address."'";
    2. $result = mysqli_query($link, $sql);
    3. // посчитам количество рядов
    4. if($result->num_rows)
    5. {
    6.     echo '<meta http-equiv="Content-type" content="text/html; charset=utf-8" />';
    7.     echo "Вы уже голосовали!";
    8.     exit;
    9. }
    10. $sql = "INSERT INTO poll_ip(id_teacher, data, ip_address) VALUES('".$teacher_id."', '".$data."', '".$ip_address."')";
    11. mysqli_query($link, $sql);
    12.  
    13. echo '<meta http-equiv="Content-type" content="text/html; charset=utf-8" />';
    14. echo "Ваш, голос добавлен!!";
    Запись добавляется и блокирует если не важно кого выбираю в форме, сообщает после одно голосования, что уже голосовал. Вроде все работает теперь как надо, спасибо, огромное всем, за терпение :) И теперь еще не мало важный вопрос, как теперь выдать результат голосования, как посчитать, сколько за кого проголосовало?
     
  12. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    почитай про join и group by для MySQL, что будет не понятно, задавай в этой теме вопрос
     
  13. kvadim

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

    С нами с:
    1 сен 2015
    Сообщения:
    69
    Симпатии:
    0
    Хорошо, спасибо огромное еще раз!! Пошел я домой, а то уже голова, как набитая кастрюля...:)))
     
  14. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Что это за нафиг ? Ты написал строку запроса, но не отправил его не фига, и что ты хочешь? чтобы условие сработало? Дак какого лешего оно должно срабатывать. Ты вообще понимаешь, что такое ООП ? Что ты вот этой строкой написал ?

    PHP:
    1. if($sql->num_rows)
    Чувак у тебя пробелы в знаниях. Если ты не понимаешь что ты пишешь, зачем ты это пишешь? Почему бы не почитать?
    --- Добавлено ---

    Ну решишь ты ща данную вот задачу с горем пополам, но не поймёшь как она работает и чё толку тогда? Суть этого раздела, чтобы понять что это и как оно работает, чтобы потом этого же вопроса не задовать. Чтобы уже знать как оно работает. Ты вот решил свою верхнюю проблему, а дальше ещё только больше вопросов, как это как что, как сюда как туда, да так всегда происходит, но нужно же ведь и читать иногда учебнички.
     
  15. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @askanim я вроде бы просил тебя не истерить. Что с тобой не так?
     
    denis01 нравится это.
  16. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    askanim нравится это.
  17. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @mr.akv ну вот просто есть я. Такая хабалистая и наглая морда. Раскатываю с удовольствием, лицом в грязь окунаю, унижаю, насилую, убиваю. И есть @denis01 который спокойно помогает решать проблему. Мы с ним слётанная пара. Как добрый и злой копы на допросе. И это божественно. И тут, уже почти сутки спустя, приходит @askanim и начинает... плагиат начинает. Истерику подобно мне пытается закатить. Тут такой номер не пройдет.
     
    askanim нравится это.
  18. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @Ganzal блин не удержался прошу простить... Но я это делаю редко... Хотел как то высказать мысль, чтобы он пошёл про ООП прочитал, да и вообще про php про что такое строчка, что такое массивы, и что такое объекты. Потому что если он написал вот эти две строчки
    и не понял почему его условие не отрабатывает, то у него пробел в знаниях. Я просто хотел сказать ему что ему нужно пополнять знания, потому что дальше будет ещё хлеще если он этих основ не знает. У него будет тьма элементарных вопросов и ошибок, и он не будет знать как их решить самостоятельно. Я попытался ему намекнуть, но видно я не удачно написал. Прошу прощения, я не всегда правильно и грамотно изъясняюсь, но мне правда тяжело на эт осмотреть, я патаюсь помочь, и помогаю как могу, так как сам ищу помощи, и всегда спрашиваю и порой, у меня бывают тоже дибильные вопросы, но я всё перевариваю в поисках решения ответа на свой вопрос, и я был бы рад и рад что меня направляют и помогают, в отдельности хочу сказать за это спасибо тебе, ему @mr.akv, и ему @denis01!
    --- Добавлено ---
    Тут дедушки тццц... :D
    --- Добавлено ---
    А дедушек нужно уважать :)
    --- Добавлено ---
    :rolleyes:Эх Армейские времена :) Не куда от них не денешься
     
  19. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @Ganzal, вот оно чё, конкуренция :D
    --- Добавлено ---
    @askanim, меня рановато считать сэнсэем. Я тут сегодня ночью в статическом методе пытался $this вызвать.
     
  20. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    @askanim впредь будь внимателен. Не очень красиво когда я уже раскатал человека и предложил ему не только бросить программирование но и вариант решения проблемы - заявляться со словами "Что это за нафиг?" Про отправку запроса уже тоже было объяснение. То есть ты будто выпал из темы. Увидел только половину сообщений и решил что нужно срочно ответить. Читай темы целиком. Веди спокойный диалог. Не повторяй уже сказанное.
     
    askanim нравится это.
  21. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @askanim, меня рановато считать сэнсэем. Я тут сегодня ночью в статическом методе пытался $this вызвать.[/QUOTE]
    Бывает :D и не такое ночью :D
     
  22. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    аа накосячил с квотом :(
     
  23. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    на что заменил? чем в итоге вызвал?
     
  24. mr.akv

    mr.akv Активный пользователь

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @denis01, Переписал класс на нестатику :D
     
  25. kvadim

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

    С нами с:
    1 сен 2015
    Сообщения:
    69
    Симпатии:
    0
    Все труба, смотреть, смотрел, я про join и group by, но так ничего и не понял, как они вместе сочитаются в примерах везде только по раздельности, не понимаю я как составить запрос. Слишком все сложное это...:(