@viktor72 у тебя вся проблема в том, что ты в голове понимаешь всё не правильно, точней не совсем до конца, из-за не знания что такое программирование вообще, и для какой истинной цели оно вообще создано, я бы советовал тебе бы податься вообще в азы, а не в синтаксис, тебе дальше будет ппц как тяжко. Банально ты говоришь про условие "если не получилось".... Это не правильно если и иначе, и никак по другому это не трактуется!
да, но в той же форме выводится текст, который если я не меняю он сохраняется а не исчезает после апдейта. а мне нужен Согласен с Вами! Есть ньюансы... мне надо бы статьи с картинке на сайте отредактировать в ближайшие дни, чтоб он был в правильном виде. Поджимает время, поэтому приходится учится в бою... Тяжело развиватся как я , согласен... но все равно, по сравнению с тем что я знал год назад , у меня большой прогресс.. мне этот сайт нужен для моей работы... буду продолжать бится головой об стену.. Спасибо
а) то, что я в псевдокоде не показал защиту от инъекций, не значит, что её не надо делать. Вам кучу ссылок кидали, по второму разу кидать не буду б) по !empty($_POST["delete_foto"]) должно происходить удаление фото, поэтому там пустая строка и была поставлена. в) Во всех апдейтах фото тоже должно быть указано условие с id г) Если я допустил опечатку в псевдокоде, это не означает, что её надо повторять. Ну не хочется переходить на грубость, но пора мозг включить на полную, реально. Не просто перекатывать мой код. Должна же мысль работать хоть немного... Псевдокод потому так и называется, что в нём только общее направление показано. И это, не нужно свой код писать в цитате меня. Я такой код не давал --- Добавлено --- В этом разделе форума готовым кодом не помогают, вот если бы писали в "Сделайте за меня", получили бы всё полностью
Форум дело добровольное... хотите отвечаете, хотите нет.... Спасибо конечно, много полезного. Да, я признаю, многих значений я просто не знаю, поэтому действую на угад. Но я выбрал раздел "для начинающих" и в нем пишу такие же для начинающих вопросы. То есть в нравственные нормы я вроде бы вписываюсь. Спасибо.
Ты игнорируешь меня ? Повторюсь: у тебя проблема не связана с php ну ни как, у тебя проблема вообще с логикой! Тебе нужно пойти почитать умных книг по программированию в принципе. И желательно тебе, пока просто остановится с изучением php на время, мб на недельку или даже две. И за неё перечитать пару книг с пониманием. Только не так: "смотрю в книгу вижу фигу, в топку сделаю, что по проще". Люди ищут простые пути, когда уже знают сложные. На вот тебе "программирование для чайников", https://vk.com/doc-29510941_132865999?dl=225bdc9b353da9983e - вот это обязательно прочти, только заставь себя поверить, что тебе это и вправду интересно, а то бестолковое чтение не поможет. Чтобы что-то понять - это что-то должно стать вам интересным! https://habrahabr.ru/post/135897/ Там список книг, кроме 4 - ой все твои. А форум для начинающих по php и подразумевает, что основу программирования человек уже знает
Спасибо. Книга про програмирования на бейсике на 300 страниц - это больно... Интересно, что из 4 книг которые ты рекомендуешь, мне приглянулась как раз про алгоритмы... Я бы с большим удовольствием всё это прочитал, но как я уже писал, нет времени...я работаю и не программистом, а сайт нужен уже... и програмирование мне очень интересно... вот такая вот - миссия не выполнима. Поэтому набиваю синяки и меня ругают. Спасибо за много полезного! --- Добавлено --- Господа! Нашел простое решение , хочу поделится, пожалуйста сильно не ругайте.. знаю что оно примитивное, но мне понятно как оно работает. HTML: <form action="update2_vakans.php?ID=<?php echo $id; ?>" method="post" enctype="multipart/form-data"> <tr> <td>Посада</td> <td><input type="text" name="dolzg" class="dolzgnost" value="<?echo $row['dolzg']?>"> </td> </tr> <tr> <td>Картинка:</td> <td> <img src="file/<?echo $row['foto']?>" width="100" height="150" id="foto"> <input type="hidden" name="old_foto" value="<?echo $row['foto']?>"> </td> </tr> <tr> <td> <input type="file" name="foto" size="50" value="<?echo $row['foto']?>"> </td> </tr> <input type="submit" name ="save" value="Отредактировать вакансию"> </form> фаил обработчик: PHP: $id = $_GET['ID']; if(isset($_POST['save'])) { $rezum = trim($_POST['dolzg']); if (!empty($_FILES['foto']) AND $_FILES['foto']['error'] == 0) { $tempp = $_FILES['foto']['tmp_name']; $name_files = iconv("UTF-8", "WINDOWS-1251", $_FILES['foto']['name']); move_uploaded_file($tempp, "file/" . $name_files); $foto = trim($_FILES['foto']['name']); }else{ $foto = trim($_POST['old_foto']); } $mysqli->query("UPDATE `vakans`SET dolzg='$rezum', foto='$foto', WHERE id_vakans = '$id' " ); mysqli_close($db); } Понимаю есть недостатки: 1. нет защиты, 2. нет возможности удалить картинку; 3. нет возможности удалить фаил удаленной картинку из папки; Всем спасибо за помощь!
@viktor72 пфф, ты говоришь изучать времени нет... Чё тогда полез? Ты хочешь чтобы оно у тебя крякнуло:?) Возьми движок! И сделай сайт на CMS, благо их уже тучи из туч.
Кстати , да... Движки пробовал... ничего кроме раздражения это у меня не вызвало, создавать нужно только в рамках движка. Защиту постепенно буду ставить. Я все равно учусь , вот, последние дни познакомился с mysqli . Это можно сравнить с изучение иностранного языка - правильно это начать учить слова, ставить ппроизношение, работать с репититором изучать правила построения предложения, а можно не правильно - пытаться говорить с носителями языка, тебя не понимают, смеются...но зато быстрее. Я выбрал второй вариант. Да и програмирование мне нравится, ещё оп этому не хочу использовать конструкторы. Кстати у меня был вопрос - почему бы не вырезать куски из допустим вордпреса... допустим авторизацию или ещё какую то функцию... но подозреваю , что в ооп это не совсем корректное представление о сути происходящего --- Добавлено --- кстати, да....
Её надо ставить сразу, поскольку она не только защищает от инъекций, она защищает от того, чтобы данные сломали запрос. Например, если без задней мысли в поле dolzg в вашей форме ввести одиночный апостроф ', то SQL запрос на обновление не выполнится
Убедил! Придётся долго посидеть... сначала перевести mysql в mysqli, затем защита. Если с файла формы с mysql передать данные в файл обработчик в котором mysqli , выдаст ошибку или проканает?
@viktor72 ох не тем ты сейчас занимаешься... Просто тратишь много времени в пустую... Знаешь как работает программист? Порядок работы его? Он сначала придумывает алгоритм работы программы, а потом уже её пишет, ты же наоборот пытаешься сделать. Кто - то уже настолько опытный, что типичные проблемы решает парой движения рук, так как уже знают алгоритмы на зубок многие, я же ещё пишу алгоритмы на листе бумаги просто по русски, расписывая для себя порядок работы программы и потом по пунктам её пишу. Иногда рисую блок схему в paint, когда совсем тяжело в голове удержать всё. Вот составь алгоритм работы Авторизации просто распиши сюда по русски начиная от формы в html и заканчивая php обработкой которая потом с генерирует тебе страничку с ответом, что авторизация прошла успешно или нет. Я жду твоего ответа здесь.
Жесткий ты парень askanim Авториазация действует так: 1. форма получает данные, логин и пароль 2. засовываем эти данные из формы в переменные + сразу проверяем не запихнули ли нам кота в мешке 3. делаем запрос в базу данных 4. ищем соответствие между тем что мы получили из формы и тем что есть в базе данных - если логин и пароль соттветствуют тому что лежит в базе, то 5. запускается процедура позволяющая войти 6. пользователь переносится в тайную , закрытую комнату .. - в противном случае, если соответствующие данных из формы не были найдены в базе, то, получает сообщение: " - ты не войдешь!" Понимаю, теперь эти предложения на русском языке надо перевести на язык php и html. Так не только в програмировании, это в любом деле, надо составить план действий и план "Б", "В" и т.д. Понимаю, подход мой не правильный, но мой кривой сайт уже приносить заказы от клиентов. Сейчас мне надо в авторизации исправить маленькую пакость а потом засяду переводить на mysqli и ставить защиту.
не правильно форма передаёт введённые данные, на самой странице формы они отсутствуют. И только в момент отправки формы, данные с формы собираются, и отправляются (постом или гетом), на страницу обработки, где в дальнейшем они уже есть в глобальном массиве $_POST или $_GET, в зависимости от того каким методом отправки ты отправил данные. Потом уже на странице обработки мы проверяем полученные данные(Кота в мешке, там не будет, только если это не sql инъекция или если ты юзаешь функцию eval) Так что по сути можешь предоставить на вход любой ввод данных. Ну или если хочешь можешь ограничить ввод данных. Но по сути он ни как не сломает твой скрипт. так и третье теперь после того как разобрались с полученными данными, ты можешь например взять и сохранить картинку. если например if(!empty($_POST['image'])) (Что означает если. Элемент image массива $_POST не пуст) то можешь добавить новую картинку. А уже после всех этих танцев. Можешь делать добавление в бд по моему скрипту, или по своему, и возвращать на страницу ответ что мол всё хорошо и данные добавились. Или например если данные не добавились или например пользователя с таким именем не существует вернуть ошибку: Сеньор такого пользователя не существует, не хотите ли пойти на фиг, или же зарегистрироваться !?
Распечатал твою книгу "Для чайников", теперь буду её читать в транспорте и в свободное время. Там 300стр. месяца за два надеюсь освоить. Спасибо.
strip_tags сделаны не для защиты от php-инъекций. Оно сделано изначально было для защиты от фрейминга, CSRF-фрейминга, XSS, фишинговых махинаций. Ото всего, что можно провернуть, если у тебя есть возможность через простое текстовое поле внедрить что угодно в страницу сайта. Но "защита" эта очень грубая и топорная. И на деле - не более чем вандализм и порча данных. Если данные приходят для вставки в базу - их надо эскейпить, используя API, предоставляемое адаптером. В данном случае это _mysqli. Если данные нужно вывести на страницу - оборачивай их в htmlspecialchars();
Не в твоем случае. Ты пытаешься чистить стрипом данные при вводе их в бд. Для этого нужно ни первое, ни второе. Для этого нужен http://php.net/manual/ru/mysqli.real-escape-string htmlspecialchars же надо использовать при выводе информации на страницу.