За последние 24 часа нас посетили 17556 программистов и 1281 робот. Сейчас ищут 1393 программиста ...

Система друзей и ее реализация php mysql

Тема в разделе "PHP для новичков", создана пользователем _ne_scaju_, 14 мар 2017.

  1. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    @_ne_scaju_, ты учишься методом копипасты, или все твои действия носят осмысленный характер? Ты вдумайся, что ты сейчас спрашиваешь.
     
    acho нравится это.
  2. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    Может не правильный вопрос построил(
     
  3. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @mahmuzar
    Ах да на счет копипасты, да я взял скопировал, и проверил, будет работать или нет. Но я не учусь методом копипасты.
    Я подставил свои значения где надо. А так не получилось. И на счет таблиц в базе вы не ответили правильно ли, я храню данные?
     
  4. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Скопировать и подставить свои значения - это копипаст!
     
  5. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @SamyRed
    Согласился я, читай выше) но это лишь проверка была)
    На самом деле я хочу понять что и как происходит)))
    Буду дальше думать)
     
  6. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    всем привет, появился вопрос, начал переделывать перерабатывать регистрации и авторизации, столкнулся с проблемой(.
    Регистрации почти сделал на ура, а вход не могу сделать не авторизует меня почему то(
    Работа с сессиями меня привела в тупик.
     
  7. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    @_ne_scaju_ с сессиями всё очень просто. На каждой странице, на которой используешь сессионные переменные пишешь в начале:
    PHP:
    добавляешь в сессию так:
    PHP:
    1. $_SESSION['user_id'] = $userId;
    Извлекаешь так:
    PHP:
    1. $userId = $_SESSION['user_id'];
    ВСЁ
     
  8. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну и к̶а̶к̶и̶м̶ ̶х̶у̶е̶м̶ как мы должны понять где у тебя ошибки??
    --- Добавлено ---
    Только в подключаемых модулях не пиши. А то потом будешь задалбывать, "а почему у меня ошибка что сессия уже открыта?"!
     
  9. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @SamyRed
    @TeslaFeo
    PHP:
    1.  авторизация, что не так?
    2. [php
    3. <?php include ($_SERVER['DOCUMENT_ROOT'].'/includes/header.php'); ?>
    4. <?php include($_SERVER['DOCUMENT_ROOT'].'/includes/includ.php'); ?>
    5. <?php
    6. echo '<pre>';
    7. print_r($_POST);
    8. echo '</pre>';
    9. echo '<pre>';
    10. print_r($_SESSION);
    11. echo '</pre>';
    12. //проверка автризации пользователя
    13. $sql = 'SELECT `user_id` FROM `users`
    14. WHERE `login` =:login AND `pass`=:pass';
    15. $stmt = $pdo->prepare($sql);
    16. $stmt->bindParam(':login', $_SESSION['login']);/
    17. $stmt->bindParam(':pass', $_SESSION['pass']);
    18. $stmt->execute();//выполнили запрос
    19. $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    20. if(count($rows) > 0){
    21. echo 'Привет '.$_SESSION['login'];
    22. echo ' <a href="out.php">Выход</a>';
    23.   }else{ echo 'Привет гость';}
    24.  
    25. //Если нажата кнопка то обрабатываем данные
    26. if(isset($_POST['auth']))
    27. {
    28.     $login = $_POST['login'];
    29. //Проверяем на пустоту login
    30.     if(empty($_POST['login']))
    31.         $err[] = 'Не введен Логин';
    32.  
    33.     if(empty($_POST['pass']))
    34.         $err[] = 'Не введен Пароль';
    35.  
    36.     //Проверяем наличие ошибок и выводим пользователю
    37.     if(count($err) > 0)
    38.         echo showErrorMessage($err);
    39.  
    40.         $sql = 'SELECT * FROM `users`
    41.        WHERE `login` = :login
    42.        AND `status` = 1';
    43.         $stmt = $pdo->prepare($sql);//Подготавливаем PDO выражение для SQL запроса
    44.         $stmt->bindValue(':login', $_POST['login'], PDO::PARAM_STR);
    45.         $stmt->execute();
    46.         $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);//Получаем данные SQL запроса
    47.  
    48.         //Если логин совподает, проверяем пароль
    49.         if(count($rows) > 0)
    50.         {
    51.        //Получаем данные из таблицы
    52.             if(md5(md5($_POST['pass']).$rows[0]['salt']) == $rows[0]['pass'])
    53.             {
    54.                 //Переменные для работы с залогиненым пользователем!
    55.                 $_SESSION['user']    = true;
    56.                 //Логин пользователя
    57.                 //$_SESSION['login']    = $_POST['login'];
    58.                 //ID Пользователя в таблице Users
    59.                 $_SESSION['user_id'] = $rows[0]['user_id'];
    60.                 //Переменая роль пользователя
    61.                 $_SESSION['role'] = $rows[0]['role'];
    62.                 $_SESSION['pass'] = $rows[0]['pass'];
    63.  
    64.                  header('Location:'.$host.'validation/auth.php');
    65.                  exit;
    66.  
    67.             }
    68.             else
    69.                 echo showErrorMessage('Вы допустили ошибку, повторите ввод');
    70.         }
    71.         else{
    72.             echo showErrorMessage('Логин <b>'. $_POST['login'] .'</b> не зарегистрирован.');
    73.         }
    74.     }
    75.  
    76. ?>
    77.  
    78. <form action="auth.php" method="POST">
    79.     <h1>Форма входа</h1>
    80.     <input name="login" type="text" placeholder="Введите свой логин" value="<?php echo $_POST['login'] ?>"><br>
    81.     <input  name="pass" type="password" placeholder="Введите пароль" value="<?php echo $_POST['pass'] ?>"><br>
    82.     <input name="auth" type="submit" value="Войти"><br>
    83.     <a href="/validation/recovery_form.php">Забыли пароль?</a> |
    84.     <a href="/validation/reg.php">Регистрация</a>
    85. </form>
    [/php]
    --- Добавлено ---
    @SamyRed
    Что не так я делаю в авторизации, что не могу вытащить даже логин из базы.
     
    #259 _ne_scaju_, 2 апр 2017
    Последнее редактирование: 2 апр 2017
  10. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Ответы полетели капец как, после показания кода)))
     
  11. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @_ne_scaju_ все могут быть заняты
     
  12. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    Согласен)))
    Но я не пойму в чем моя ошибка.
     
  13. denis01

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

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

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    PHP:
    1. $data = $_POST;
    2. //Если нажата кнопка то обрабатываем данные
    3. if(isset($data['auth']))
    4. {
    5.      $err = array();
    6.  
    7.          $sql = 'SELECT * FROM `users`
    8.         WHERE `login` = :login
    9.         AND `status` = 1';
    10.          $stmt = $pdo->prepare($sql);
    11.          $stmt->bindValue(':login', $data['login'], PDO::PARAM_STR);
    12.          $stmt->execute();
    13.          $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
    14.         //Если логин совподает, проверяем пароль
    15.          if(count($rows) > 0)
    16.          {
    17. if (password_verify($data['pass'].$rows[0]['salt'], $rows[0]['pass'])){
    18. //все хорошо регаем
    19. $_SESSION['user']    = true;
    20. echo 'привет '.$login;
    21.          }else{
    22.     $err[] = 'Неверный пароль';
    23.          }
    24. }else{
    25.     $err[] = 'Пользователь не найде';
    26. }
    27. if( !empty($err)){
    28.     echo '<div style="color: red">'.array_shift($err).'</div><hr>';
    29. }
    30. }
    Переделал файл, все ровно не получается( блин))))
     
  15. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    @_ne_scaju_ ты пробовал перепроверить каждую строчку, в каике ветки (if) заходит, в какие нет?
     
  16. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    ну не знаю, не пробовал)
    А по подробней, что за ветки?
    --- Добавлено ---
    Все время выдает неверный пароль. где то я его не правильно извлекаю(
     
  17. denis01

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

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

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    если ты за такую отладку говоришь, я это делаю) выполняю все что написано в первой ссылке)
     
  19. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    сделай отдельную страницу и вытащи, начни с простого
     
    TeslaFeo нравится это.
  20. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
     
  21. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    @TeslaFeo
    Создал отдельную страницу) хочу вытащить данные, у меня данные вытаскиваются, только почему то ник от пхмАдмин, а хотел вытащить логин авторизованного)
    Как это может быть?
     

    Вложения:

    • 1.png
      1.png
      Размер файла:
      2,3 КБ
      Просмотров:
      4
  22. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    ну ты запулил в сессию переменную, которую используешь для подключения к бд.
    Неистовая магия))
     
  23. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Потомственный программист во втором поколении. Восстанавливаю сессии по айдишнику! Подключаю к БД, а в случае если ваши каналы забиты, возможна даже установка туннеля (магия ssh)! Вычищаю ошибки по логам! Фаталы, ворнинги и даже нотисы - ни что теперь не помешает вашей программе достичь своей цели! Устанавливаю защиту на запросы, sql-инъекции более не приговор! За отдельную плату расскажу как получить тайные знания из места, где есть все ответы (не гугол)!
     
  24. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @romach
    Прям как поет написал) ну да ладно)
    --- Добавлено ---
    @TeslaFeo
    Жесть только заметил) спасибо, буду исправлять))))
     
  25. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    я кофе пил как раз, вот и глянул на кофейной гуще. А кофейная гуща - она правду говорит :D
     
    SamyRed нравится это.