За последние 24 часа нас посетили 21080 программистов и 1683 робота. Сейчас ищут 1129 программистов ...

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

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

  1. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    как он может быть таким, если ты указал относительны путь который начинается с / значит с корня диска http://phpfaq.ru/newbie/paths
    Может если в папке со скриптом есть папка images то стоит указать images/avatar/ вместо /images/avatar/
     
  2. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    Если так указываю ошибку выдает
    $uploaddir = 'images/avatar/';
    Если так указываю типа в корень сайта ошибки нет
    $uploaddir = '';
    Но файлы картинки не грузятся в папку.
    О заметил такое, если я дают путь к папке такой
    $uploaddir = 'D:\openserver\domains\vk.local\images\avatar';
    То файлы грузятся, а как мне задать такой же путь только чтобы было images/avatar???
     
  3. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Какую?
    --- Добавлено ---
    папка images/avatar существует? может там что-то с правами на папку и писать в неё нельзя
     
  4. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    Конечно существует, не я права не давал не какие, и вообще может они сами создались права)))
    Посмотри выше что я написал.
     
  5. denis01

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

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

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    Да у меня раньше не было с изображением проблем, имею введу с загрузкой. А сейчас появились фиг его что это( а может точку указать надо или что либо другое?
    Может папка должна находится там где я этот скрипт вызываю или как еще либо?
    Есть еще какие предложения?
     
  7. denis01

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

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

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    Ок понял, вот в чем ошибка моя?
    А теперь смотри вот такой путь указываю, и как не странно файлы падают прям в эту папку что указал, что за фигня?
    $uploaddir = '../../../vk.local/images/avatar/';
     
  9. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    PHP:
    1. echo '1 '.realpath('/images/avatar/test.jpg').PHP_EOL;
    2. echo '2 '.realpath(__FILE__).PHP_EOL;
    3. echo '3 '.realpath('../../../vk.local/images/avatar/').PHP_EOL;
    что выдаст этот код в файле который отвечает за загрузку изображений?
     
  10. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    1 2 D:\OpenServer\domains\vk.local\users\profiles\add_details.php 3 D:\OpenServer\domains\vk.local\images\avatar
     
    denis01 нравится это.
  11. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @denis01
    А может это быть ошибочка и-за запроса? Прикинь я не заметил что я обновляю данные, а мне надо сперва их добавить insert into, а я делал update set и т.д.
    Вот это я даю офигеть
     
  12. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Народ что я не так делаю, не получается аватар добавить посмотрите вот у меня такой файл получился:

    PHP:
    1. if(isset($_POST['add_details']))
    2. {
    3. $uploaddir = '/images/avatar';
    4. $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
    5. echo '<pre>';
    6. if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
    7. echo "Файл корректен и был успешно загружен.\n";
    8. } else {
    9. echo "Возможная атака с помощью файловой загрузки!\n";
    10. }
    11. echo 'Некоторая отладочная информация:';
    12. print_r($_FILES);
    13. print "</pre>";
    14. }else{
    15. $params = array( 'avatar' => $uploadfile);
    16. $sql = ("INSERT INTO `users` VALUES ('".$_SESSION['user_id']."', :avatar)");
    17. $stmt = $pdo->prepare($sql);
    18. $stmt->execute($params);
    HTML:
    1. <form enctype="multipart/form-data" method="POST" action="" autocomplete='on'>
    2.     <input type="file" name="userfile" value=""><br>
    3.    <input type="submit" name="add_details" value="Сохранить">
    4. </form>
    Подскажите в запросе я начудил или нет?
     
    #362 _ne_scaju_, 8 апр 2017
    Последнее редактирование: 8 апр 2017
  13. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    слеш забыл
    --- Добавлено ---
    это раз. два. нельзя хранить файлы под их присланным именем
     
  14. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    Это я знаю, вообще правильно сделал? для загрузки аватара, где я слеш забыл?
     
  15. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ищи. Если перепишешь заново с генерацией имени файла,то может не забудешь ;)
     
  16. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    Ты прикалываешься ?
    $uploaddir='/images/avatar';
    В этой строке что ли слеш забыл?
    А сам запрос правильно построил?
     
  17. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    нет. Обычно переписывание занимает в несколько раз меньше времени, чем писать первый раз. При этом обычно же код ужимается на треть. :D

    не скажу.

    нет. Проанализируй, что ты там написал.
     
  18. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    :D да подскажи я целый день с картинками этими сижу и разобраться не могу почему не загружаются файлы в определенную папку.
    а сам запрос проанализировать
    1. $params = array( 'avatar' => $uploadfile); //с этим я в инете познакомился подготавливаем массив вроде как
    2. $sql = ("INSERT INTO `users` VALUES ('".$_SESSION['user_id']."', :avatar)"); //inssert into записать в таблицу users куда values берем сессию пользователя и поле avatar.
    3. $stmt = $pdo->prepare($sql); //подготовили запрос
    4. $stmt->execute($params); //выполнили
    5. Ну и все.
     
  19. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    я ж говорю, давай заново из головы

    это расписал код, который рядом с запросом.
    Я же говорю, тебе нужно пристально взглянуть на запрос, который уходит в БД и то, как ты туда вкрячил неэкранированное значение, и то, что там инсерт.
     
  20. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    Ну хорошо)))
    Перепишу и напишу тоже самое) Экранировать изображения я не могу, что разве с этой htmlspecialchars фитчей а так не знаю.)
    Я же учусь я не полиглот)
    Тем более я код взял из мануала, для загрузки изображения.
     
  21. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Попробовал отредактировать запрос, и все же ошибки, что же не так, подскажите пожалуйста. вот запрос:
    PHP:
    1. $sql = 'INSERT INTO `users` VALUES("", "'.$_SESSION['user_id'].'", :avatar)';
    2.         $stmt = $pdo->prepare($sql);
    3.         $stmt->bindValue(':avatar', $_POST['avatar'], PDO::PARAM_STR);
    4.         $stmt->execute();
     
  22. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты снова вкрячил в запрос неэкранированное значение
     
  23. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    @igordata
    я знаю за что ты говоришь за аватар и за эту строку
    PHP:
    1. $stmt->bindValue(':avatar',$_POST['avatar'], PDO::pARAM_STR);
    Ну и как его экранировать?
    И вообще с этим запросом у меня в базу записывается значения названия картинки, но записывается не для того пользователя кто вошел на сайт, а в пустую уходит строка ниже этого пользователя, то-есть не кому.
    Что делать в таком случае?
     
    #373 _ne_scaju_, 9 апр 2017
    Последнее редактирование модератором: 9 апр 2017
  24. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    И вообще мне надо делать не insert а update так как в этой таблице users уже есть данные. И их надо обновить а не добавить)))
    Получается он будет выглядеть так:
    PHP:
    1. $sql = "UPDATE `users` SET `avatar`= :avatar WHERE `user_id`='". $_SESSION['user_id'] ."'";
    2.      $stmt = $pdo->prepare($sql);
    3.      $stmt->bindValue(':avatar', $uploadfile, PDO::PARAM_STR);
    4.      $stmt->execute();
     
    #374 _ne_scaju_, 9 апр 2017
    Последнее редактирование: 9 апр 2017
  25. _ne_scaju_

    _ne_scaju_ Старожил

    С нами с:
    25 ноя 2016
    Сообщения:
    2.149
    Симпатии:
    118
    Теперь я вроде не ошибся) запрос прошел удачно, и все же где я ошибался?
    А как же сделать проверку для фото? если фото есть то обновляем фото, а если фото нет то добавляем.
    Думаю поняли вы меня)))