За последние 24 часа нас посетили 17543 программиста и 1727 роботов. Сейчас ищет 1561 программист ...

Редактирование. Не сохраняются картинки

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

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @viktor72 у тебя вся проблема в том, что ты в голове понимаешь всё не правильно, точней не совсем до конца, из-за не знания что такое программирование вообще, и для какой истинной цели оно вообще создано, я бы советовал тебе бы податься вообще в азы, а не в синтаксис, тебе дальше будет ппц как тяжко.

    Банально ты говоришь про условие "если не получилось".... Это не правильно если и иначе, и никак по другому это не трактуется!
     
    viktor72 нравится это.
  2. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    да, но в той же форме выводится текст, который если я не меняю он сохраняется а не исчезает после апдейта.
    а мне нужен

    Согласен с Вами!
    Есть ньюансы... мне надо бы статьи с картинке на сайте отредактировать в ближайшие дни, чтоб он был в правильном виде. Поджимает время, поэтому приходится учится в бою...
    Тяжело развиватся как я , согласен... но все равно, по сравнению с тем что я знал год назад , у меня большой прогресс..
    мне этот сайт нужен для моей работы...
    буду продолжать бится головой об стену..
    Спасибо
     
  3. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    По-русски, пожалуйста.
     
  4. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6

    текст , если его не редактировать сохранятеся а фото нет...
     
  5. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    не знаю, другого в голову не приходит...
    насколько всё не правильно?
     
  6. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    а) то, что я в псевдокоде не показал защиту от инъекций, не значит, что её не надо делать. Вам кучу ссылок кидали, по второму разу кидать не буду
    б) по !empty($_POST["delete_foto"]) должно происходить удаление фото, поэтому там пустая строка и была поставлена.
    в) Во всех апдейтах фото тоже должно быть указано условие с id
    г) Если я допустил опечатку в псевдокоде, это не означает, что её надо повторять.

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

    Псевдокод потому так и называется, что в нём только общее направление показано.

    И это, не нужно свой код писать в цитате меня. Я такой код не давал
    --- Добавлено ---
    В этом разделе форума готовым кодом не помогают, вот если бы писали в "Сделайте за меня", получили бы всё полностью
     
  7. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6

    Форум дело добровольное... хотите отвечаете, хотите нет.... Спасибо конечно, много полезного. Да, я признаю, многих значений я просто не знаю, поэтому действую на угад. Но я выбрал раздел "для начинающих" и в нем пишу такие же для начинающих вопросы. То есть в нравственные нормы я вроде бы вписываюсь.
    Спасибо.
     
  8. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Ты игнорируешь меня ? Повторюсь: у тебя проблема не связана с php ну ни как, у тебя проблема вообще с логикой! Тебе нужно пойти почитать умных книг по программированию в принципе. И желательно тебе, пока просто остановится с изучением php на время, мб на недельку или даже две. И за неё перечитать пару книг с пониманием. Только не так: "смотрю в книгу вижу фигу, в топку сделаю, что по проще". Люди ищут простые пути, когда уже знают сложные.
    На вот тебе "программирование для чайников",
    https://vk.com/doc-29510941_132865999?dl=225bdc9b353da9983e - вот это обязательно прочти, только заставь себя поверить, что тебе это и вправду интересно, а то бестолковое чтение не поможет.
    Чтобы что-то понять - это что-то должно стать вам интересным!

    https://habrahabr.ru/post/135897/
    Там список книг, кроме 4 - ой все твои.

    А форум для начинающих по php и подразумевает, что основу программирования человек уже знает :)
     
    viktor72 и denis01 нравится это.
  9. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6

    Спасибо. Книга про програмирования на бейсике на 300 страниц - это больно...
    Интересно, что из 4 книг которые ты рекомендуешь, мне приглянулась как раз про алгоритмы...
    Я бы с большим удовольствием всё это прочитал, но как я уже писал, нет времени...я работаю и не программистом, а сайт нужен уже... и програмирование мне очень интересно... вот такая вот - миссия не выполнима. Поэтому набиваю синяки и меня ругают.
    Спасибо за много полезного!
    --- Добавлено ---
    Господа!
    Нашел простое решение , хочу поделится, пожалуйста сильно не ругайте.. знаю что оно примитивное, но мне понятно как оно работает.

    HTML:
    1. <form action="update2_vakans.php?ID=<?php echo $id; ?>"  method="post" enctype="multipart/form-data">
    2.                 <tr>
    3.                     <td>Посада</td>
    4.                     <td><input type="text" name="dolzg" class="dolzgnost" value="<?echo $row['dolzg']?>"> </td>
    5.                 </tr>
    6.                 <tr>
    7.                     <td>Картинка:</td>
    8.                     <td>
    9.                         <img src="file/<?echo $row['foto']?>" width="100" height="150" id="foto">
    10.                         <input type="hidden" name="old_foto" value="<?echo $row['foto']?>">
    11.                     </td>
    12.                 </tr>
    13.                 <tr>  
    14.                     <td>
    15.                     <input type="file" name="foto" size="50" value="<?echo $row['foto']?>">
    16.                     </td>
    17.                 </tr>
    18.             <input type="submit" name ="save" value="Отредактировать вакансию">
    19.  
    20.         </form>
    фаил обработчик:

    PHP:
    1. $id = $_GET['ID'];
    2. if(isset($_POST['save']))
    3.     {
    4.     $rezum = trim($_POST['dolzg']);
    5.  
    6.         if (!empty($_FILES['foto']) AND $_FILES['foto']['error'] == 0) {
    7.  
    8.             $tempp = $_FILES['foto']['tmp_name'];
    9.             $name_files = iconv("UTF-8", "WINDOWS-1251", $_FILES['foto']['name']);
    10.             move_uploaded_file($tempp, "file/" . $name_files);
    11.  
    12.             $foto = trim($_FILES['foto']['name']);
    13.  
    14.         }else{
    15.             $foto = trim($_POST['old_foto']);
    16.         }
    17.     $mysqli->query("UPDATE `vakans`SET
    18.                                dolzg='$rezum',
    19.                                foto='$foto',    
    20.                WHERE id_vakans = '$id' " );
    21.     mysqli_close($db);
    22.     }
    Понимаю есть недостатки:
    1. нет защиты,
    2. нет возможности удалить картинку;
    3. нет возможности удалить фаил удаленной картинку из папки;

    Всем спасибо за помощь!
     
  10. mr.akv

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

    С нами с:
    31 мар 2015
    Сообщения:
    1.604
    Симпатии:
    206
    @viktor72, ну, приблизительно это я и имел в виду в своём первом сообщении.
     
    viktor72 нравится это.
  11. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @viktor72 пфф, ты говоришь изучать времени нет... Чё тогда полез? Ты хочешь чтобы оно у тебя крякнуло:?) Возьми движок! И сделай сайт на CMS, благо их уже тучи из туч.
     
    viktor72 и denis01 нравится это.
  12. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Кстати , да...

    Движки пробовал... ничего кроме раздражения это у меня не вызвало, создавать нужно только в рамках движка.
    Защиту постепенно буду ставить.
    Я все равно учусь , вот, последние дни познакомился с mysqli .
    Это можно сравнить с изучение иностранного языка - правильно это начать учить слова, ставить ппроизношение, работать с репититором изучать правила построения предложения, а можно не правильно - пытаться говорить с носителями языка, тебя не понимают, смеются...но зато быстрее.
    Я выбрал второй вариант. Да и програмирование мне нравится, ещё оп этому не хочу использовать конструкторы.

    Кстати у меня был вопрос - почему бы не вырезать куски из допустим вордпреса... допустим авторизацию или ещё какую то функцию... но подозреваю , что в ооп это не совсем корректное представление о сути происходящего
    --- Добавлено ---

    кстати, да....
     
  13. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Её надо ставить сразу, поскольку она не только защищает от инъекций, она защищает от того, чтобы данные сломали запрос. Например, если без задней мысли в поле dolzg в вашей форме ввести одиночный апостроф ', то SQL запрос на обновление не выполнится
     
    viktor72 нравится это.
  14. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Убедил!
    Придётся долго посидеть... сначала перевести mysql в mysqli, затем защита.
    Если с файла формы с mysql передать данные в файл обработчик в котором mysqli , выдаст ошибку или проканает?
     
  15. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    @viktor72 ох не тем ты сейчас занимаешься... Просто тратишь много времени в пустую...
    Знаешь как работает программист? Порядок работы его?
    Он сначала придумывает алгоритм работы программы, а потом уже её пишет, ты же наоборот пытаешься сделать.
    Кто - то уже настолько опытный, что типичные проблемы решает парой движения рук, так как уже знают алгоритмы на зубок многие, я же ещё пишу алгоритмы на листе бумаги просто по русски, расписывая для себя порядок работы программы и потом по пунктам её пишу. Иногда рисую блок схему в paint, когда совсем тяжело в голове удержать всё.
    Вот составь алгоритм работы Авторизации просто распиши сюда по русски начиная от формы в html и заканчивая php обработкой которая потом с генерирует тебе страничку с ответом, что авторизация прошла успешно или нет. Я жду твоего ответа здесь.
     
    viktor72 нравится это.
  16. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6

    Жесткий ты парень askanim
    Авториазация действует так:
    1. форма получает данные, логин и пароль
    2. засовываем эти данные из формы в переменные + сразу проверяем не запихнули ли нам кота в мешке
    3. делаем запрос в базу данных
    4. ищем соответствие между тем что мы получили из формы и тем что есть в базе данных
    - если логин и пароль соттветствуют тому что лежит в базе, то
    5. запускается процедура позволяющая войти
    6. пользователь переносится в тайную , закрытую комнату ..
    - в противном случае, если соответствующие данных из формы не были найдены в базе, то, получает сообщение:
    " - ты не войдешь!"

    Понимаю, теперь эти предложения на русском языке надо перевести на язык php и html.
    Так не только в програмировании, это в любом деле, надо составить план действий и план "Б", "В" и т.д.

    Понимаю, подход мой не правильный, но мой кривой сайт уже приносить заказы от клиентов.

    Сейчас мне надо в авторизации исправить маленькую пакость а потом засяду переводить на mysqli и ставить защиту.
     
  17. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    не правильно форма передаёт введённые данные, на самой странице формы они отсутствуют. И только в момент отправки формы, данные с формы собираются, и отправляются (постом или гетом), на страницу обработки, где в дальнейшем они уже есть в глобальном массиве $_POST или $_GET, в зависимости от того каким методом отправки ты отправил данные.

    Потом уже на странице обработки мы проверяем полученные данные(Кота в мешке, там не будет, только если это не sql инъекция или если ты юзаешь функцию eval)
    Так что по сути можешь предоставить на вход любой ввод данных. Ну или если хочешь можешь ограничить ввод данных.
    Но по сути он ни как не сломает твой скрипт.
    так и третье теперь после того как разобрались с полученными данными, ты можешь например взять и сохранить картинку.
    если например if(!empty($_POST['image'])) (Что означает если. Элемент image массива $_POST не пуст)

    то можешь добавить новую картинку.

    А уже после всех этих танцев. Можешь делать добавление в бд по моему скрипту, или по своему, и возвращать на страницу ответ что мол всё хорошо и данные добавились. Или например если данные не добавились или например пользователя с таким именем не существует вернуть ошибку: Сеньор такого пользователя не существует, не хотите ли пойти на фиг, или же зарегистрироваться !?
     
  18. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6
    Распечатал твою книгу "Для чайников", теперь буду её читать в транспорте и в свободное время. Там 300стр. месяца за два надеюсь освоить.
    Спасибо.
     
  19. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    strip_tags сделаны не для защиты от php-инъекций. Оно сделано изначально было для защиты от фрейминга, CSRF-фрейминга, XSS, фишинговых махинаций. Ото всего, что можно провернуть, если у тебя есть возможность через простое текстовое поле внедрить что угодно в страницу сайта. Но "защита" эта очень грубая и топорная. И на деле - не более чем вандализм и порча данных.

    Если данные приходят для вставки в базу - их надо эскейпить, используя API, предоставляемое адаптером. В данном случае это _mysqli. Если данные нужно вывести на страницу - оборачивай их в htmlspecialchars();
     
    viktor72 нравится это.
  20. viktor72

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

    С нами с:
    20 дек 2015
    Сообщения:
    326
    Симпатии:
    6

    Проще говоря надо убрать strip_tags (что я и сделал) и обернуть в htmlspecialchars ?
     
  21. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Не в твоем случае. Ты пытаешься чистить стрипом данные при вводе их в бд. Для этого нужно ни первое, ни второе. Для этого нужен http://php.net/manual/ru/mysqli.real-escape-string

    htmlspecialchars же надо использовать при выводе информации на страницу.
     
    askanim нравится это.
  22. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Я его спрашивал нафига он их там натулил...