
![]() |
Здравствуйте Гость ( Вход | Регистрация ) |
|
|
|
![]() ![]() ![]() |
![]() |
۩
Дата
|
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
У меня есть такой код, который из формы записывает введенные в поле input данные каждый раз с новой строки:
if(isset($_POST['fav'])) <form action='' name='' method='post'> Этот код у меня работает прекрасно. Уважаемые специалисты, подскажите, пожалуйста, но как добавить ряд следующих проверок с условиями, прежде чем сделать запись в файл? Когда пользователь вводит данные в поле input, то первая проверка: 1. совпадают ли введенные в поле input данные с Названием какого-либо файла в папке 'admin/db/rec/' - Если нет полного совпадения, то никаких действий; - Если есть полное совпадение, то перейти к следующей проверке: 2. Совпадают ли введенные в поле input данные с какой-либо строкой, записанной в файле 'us/db/fav/$us_id' - Если нет, то записать введенные в поле input данные в файл 'us/db/fav/$us_id'; - Если да, то никаких действий. |
![]() |
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 2194 Пользователь №: 28976 На форуме: Карма: 152 ![]() |
Использовать scandir и сделать поиск по данным из массива.
зачем использовать отложенную перезагрузку в обработчике формы ? echo "<meta http-equiv=refresh content='0; url=page.php'>";Это нужно для того, чтобы показать какой-то текст и через N секунд перезагрузить страницу. лучше используйте header. header('Location: /page.php' ); |
![]() |
|
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 6460 Пользователь №: 35718 На форуме: Карма: 208 ![]() |
Kuzma92, твоя проблема в том, что ты не хочешь учиться, что бы делать "как надо". Ты хочешь делать "как хочешь", изобретая велосипеды, наступая на грабли и тд.
Нам просто это не интересно. -------------------- |
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 54 Пользователь №: 46417 На форуме: Карма: ![]() |
Да писал я ему на другом форуме, чтобы либо книжку, либо учителя нашёл...
|
![]() |
|
![]() ![]() Чтобы все ! ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 2881 Пользователь №: 26852 На форуме: Карма: 162 ![]() |
Kuzma92
Почитай про MySql CRUD, там 4ре команды всего, уходи от работы с файлами(если нет конечно такой потребности), потому как дальше..., будет хуже. По теме: Вопрос номер 1 - а что будет если "пробел" введут в форму? - запишет пробел в файл... а оно нам надо ? я думаю нет Это касаемо вопроса, про "обработка входящих данных". Далее, как уже говорили, тебе придется сканировать каждый рах каталог, что бы получить список файлов, потом собрать данные из всех найденых файлов и с ними работать. Это конечно допустимо, но !... Допустим у тебя 100 файлов по 1000 строк или 1000 файлов по 100 строк или 10 000 файлов, "представь масштаб трагедии" как говориться, это будет жесть. Вы бы сказали что Вы там изобретаете, конечный продукт так сказать, возможно мы бы помогли все "раскурить" как это сделать проще и правильнее, а то и правда, изобретаем велосипед из г...а и палок ![]() |
![]() |
۩
Дата
|
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
Сразу хочу оговориться. Это не коммерция, я не зарабатываю на этом деньги, и ни в коем случае за ваш счет (за ваши ответы) не получаю какую-либо денежную прибыль. Делаю я все это исключительно только для себя.
Valick don.bidon я с уважением отношусь к каждому человеку, и прошу взаимности. И пожалуйста, не нужно меня принижать. Да, вы правы, язык PHP я действительно знаю очень плохо (и очень жалею, что не изучил его еще в свое время). И при том, что я знаю другие языки (у меня кстати на stackoverflow аккаунт с репутацией около 30k, я одно время внес там большую лепту), сейчас занимаясь этим скриптом уже последние две-три недельки, уже начинаю понимать некоторые азы PHP, и что-то сам самостоятельно уже делаю. Полностью согласен с тем, что говорят: зная один язык - другие даются легче. Но там где я реально не знаю, прихожу сюда за помощью. И когда я от вас получаю готовый код, то я не беру и тупо вставляю его и после этого забываю за эту задачу, нет. А я его изучаю и стараюсь понять как та или иная задача решается. Поэтому для меня особенно важно и ценно, если код прокомментирован. Что касается этого скрипта. Его я взял в открытом доступе, и переделываю его сейчас под себя. Уже многое что переделал, и что добавил нового. Я с вами не спорю, и я полностью с вами согласен насчет полноценной БД типа mysql или какой-то другой. НО, для моего случая сейчас это точно не нужно. Потому что, во-первых - это значит надо переписать все файлы скрипта под БД, и второе - планируется очень специфичный небольшой сайтик с посещением 2-5-максимум 5 человек в день, где в лучшем случае кол-во регистраций новых пользователей в день будет не более двух. Поэтому вполне достаточно того, что есть сейчас. Я уже практически все сделал, осталось мне совсем немного. Извините за оффтоп написанный выше, и правда накипело, зацепило, и как-то немного обидело. Отвечая на вопросы на stackoverflow я никогда никого не тыкал носом в книжки или в другие какие-либо методички, не советовал найти учителей, не упрекал никого никогда в том, что кто-то якобы не хочет учиться, а просто писал полезные ответы, за что очень часто в ответ получал простую благодарность, хотя и не ждал ее вовсе, просто делал это в свое удовольствие. Теперь по сути вопроса (если кто-то по какой-то причине не желает в этом участвовать, то я нисколько не осуждаю). Сейчас я стараюсь сделать некое подобие закладок (ну типа добавление в избранное). us/db/fav/'.$us_id.' : /fav - это папка с файлами, где $us_id это название файла, совпадающее с id (десятизначное число) пользователем. admin/db/rec/ - это папка с файлами (каждый файл содержит контент, добавляемый пользователями), где каждый файл также имеет название в виде десятизначного числа (это id статьи/контента). Вот я и хочу, чтобы на странице page.php, когда пользователь будет вводить данные (не важно что он будет вводить), чтобы эти введенные данные сравнивались с названием файла в папке admin/db/rec/. Если есть файл с таким названием (==введенными данными в поле input), то после этого была проверка - добавлен ли такой id в файле закладок пользователя us/db/fav/'.$us_id.' или нет. Вот сам процесс/последовательность проверок я в вопросе и расписал. "Вопрос номер 1 - а что будет если "пробел" введут в форму?" walerus, как я это понимаю, любые введенные данные в поле input, в том числе и пробел, должны запускать поиск по наличию в названиях файлов (и сравниваться с названием файла) в папке admin/db/rec/. Ну как-то так. Если нет совпадения (если нет файла с таким названием), то ничего. Если есть совпадение, то переходить ко второй проверке по наличию такой строки в файле закладок именно этого пользователя. |
![]() |
|||
![]() ![]() חשב את עצמו ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: Администратор ![]() Сообщений: 6963 Пользователь №: 1 На форуме: Карма: 145 ![]() |
ИМХО, каждому регистрированному свой файл в любом случае неразумно. Если уж так не хочется БД, сделать по принципу БД: один файл, и в файле каждая строка — пользователь: айдишник | логин | пароль |… — все, что тебе нужно. Считал файл — получил массив пользователей, взял intval от строки — получил айдишник, рассплитовал строку по символу | — получил массив информации о пользователе. Это плохо, ибо каждый раз грузить в память весь массив пользователей будет затратно, нсли/когда база разрастется. Но это лучше, чем сканировать директорию, получая массив файлов. Я надеюсь, файлы в директории, недоступной из сети? А то найдутся умельцы сканировать директории. -------------------- Бесплатному сыру в дырки не заглядывают...
|
||
![]() |
|||
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 690 Пользователь №: 39616 На форуме: Карма: 71 ![]() |
Гораздо хуже будет, если вместо пробела введут что-то вроде ../../../../../../../../../../etc/passwd ну и тд ![]() >БД vs файлы Регулярно кто-то хочет сделать все на файлах. Это нормально ![]() Разве что рекомендую для этого использовать какую-то библиотеку. Например, https://sleekdb.github.io -------------------- |
||
![]() |
|||||
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
FatCat, приветствую вас! Ну как сказать, насколько это возможно, конечно закрыто. Ну здесь вы сами знаете, что если кому если очень надо, то взять необходимое можно из любого сайта. В даркнете любую базу можно взять, или по крайней мере заказать.
brevis, приветствую вас! Это безопасное поле. Если даже что-то и введут, то результатом будет - такой страницы нет. По моему вопросу. Я тут написал код: $uniqueid = $_POST['uniqueid']; Код получился до безобразия простым, но он четко выполняет свои функции. Один только момент: если использую trim(), то он вырезает пробелы, выдает положительный результат по сравнению, но при этом записывает в файл пустую новую строку. И как только я с этим не боролся, не получается у меня. И str_replace() использовал, и все результат один. Если не сложно, подскажите, пожалуйста, верный вариант. Это сообщение отредактировал Kuzma92 - 30.03.2024 - 03:04 |
||||
![]() |
۩
Дата
|
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
Все сделал, все получилось.
$uniqueid = trim($_POST['uniqueid']); Извиняюсь за беспокойство. |
![]() |
۩
Дата
|
||
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
Kusss
Я вот все над этим думал. И все же, можно спросить? А почему лучше использовать header вместо echo "<meta http-equiv=refresh ? |
||
![]() |
|
![]() ![]() חשב את עצמו ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: Администратор ![]() Сообщений: 6963 Пользователь №: 1 На форуме: Карма: 145 ![]() |
Я предпочитаю как-то так:
header("Refresh: ".$rtime.";url=".$url); -------------------- Бесплатному сыру в дырки не заглядывают...
|
![]() |
۩
Дата
|
||
![]() Пользователь ![]() ![]() Профиль Группа: Пользователь Сообщений: 81 Пользователь №: 46556 На форуме: Карма: ![]() |
ну это как бы сказать не официально что ли?)) Насколько я понимаю, в PHP нет Refresh, а есть header('Location: куда-то' );, верно? |
||
![]() |
|
![]() ![]() חשב את עצמו ![]() ![]() ![]() ![]() ![]() ![]() Профиль Журнал Группа: Администратор ![]() Сообщений: 6963 Пользователь №: 1 На форуме: Карма: 145 ![]() |
-------------------- Бесплатному сыру в дырки не заглядывают...
|
![]() |
|||||
![]() Здесь живет ![]() ![]() ![]() ![]() ![]() ![]() Профиль Группа: Форумчанин ![]() Сообщений: 2194 Пользователь №: 28976 На форуме: Карма: 152 ![]() |
header сразу отправит на нужную страницу, а вот html тег даст 2 редиректа, сначала на страницу с формой, а потом сразу куда нужно. Ну если нужно сообщить к примеру "я все сделал, сейчас вас отправят туда-то", то норм. Дергание страницы мало кому нравится ![]() |
||||
![]() |
![]() ![]() ![]() |