DET
Гость
|
|
« : 09-07-2005 19:21 » |
|
Недавно начал изучать php. Пробую написать скрипт с помощью которого пользователи смогут добавлять ссылки своих сайтов с пояснением ко мне. Всё вродебы зделал, осталось зделать возможность редактирования введённых данных. Вот с этим я некак не могу справиться. Может ктонить подскажет как можно зделать редактирование и удаление дааных. Данные сохраняются в текстовый фаил.
|
|
|
Записан
|
|
|
|
PantiL
Гость
|
|
« Ответ #1 : 09-07-2005 19:32 » |
|
Проще всего считай все информацию из файла в массив $file_arr = file("dat.txt");
Найди тот элемент массива (строку) который надо изменить, измени, и переши файл. .... Согласен, согласен, коряво и некрасиов... но просто. Красиов былобы с использованием базы данных
|
|
|
Записан
|
|
|
|
DET
Гость
|
|
« Ответ #2 : 12-07-2005 07:20 » |
|
Почти всё зделал, осталось решить одну проблему. $TheFile="data/ycheb.txt"; $Open=fopen ($TheFile, "r"); if ($Open) { $Data=file ($TheFile); for ($n=0; $n<count ($Data); $n++) { $GetLine=explode("\t", $Data[$n]); if ($Array["nazvanie"]==$GetLine[0]) { if ($Array["kod"]==$GetLine[5]) { print ("... Данные $Array["kod"] и $Array["nazvanie"] были переданы из другой формы. А вот, что я не пойму почему переменную $Array["kod"] не видно после второго if, те в данном случае второе условие у меня всегда лож, до второго if эта переменная видна (те существует), проверял.
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #3 : 12-07-2005 07:27 » |
|
Каким способом данные передаются ? Постом или гетом ? Что за переменная $Array ? Это поле формы или что это ?
Вообще я бы тебе рекомендовал не использовать как название переменных ключевые слова ПХП или очень на них похожие.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
DET
Гость
|
|
« Ответ #4 : 12-07-2005 07:38 » |
|
Каким способом данные передаются ? Постом или гетом ? Что за переменная $Array ? Это поле формы или что это ?
Вообще я бы тебе рекомендовал не использовать как название переменных ключевые слова ПХП или очень на них похожие.
Каким способом данные передаются ? Постом или гетом ? Что за переменная $Array ? Это поле формы или что это ?
Вообще я бы тебе рекомендовал не использовать как название переменных ключевые слова ПХП или очень на них похожие.
Вот переменная Array[kod]: <input type=text name="Array[kod]" size=40> А вот как предаётся: <form action="powernetycheb3.php" method="post" name="add" enctype="multipart/form-data">
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #5 : 12-07-2005 07:47 » |
|
multipart/form-data - вообщето для передачи файлов
Ок, чтобы увидеть что передаётся а что нет, сделай вот что : print_r($_POST);
результат покажи сдесь.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
DET
Гость
|
|
« Ответ #6 : 12-07-2005 08:07 » |
|
Array ( [Array] => Array ( [nazvanie] => 1111 [kod] => 2222 ) [Submit] => Далее ) И опять после второго if ничего не работало не чего не печаталось из этой функции, если выше поставит, то результат выше.
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #7 : 12-07-2005 08:37 » |
|
Давай код этой страницы в студию, иначе гадать бессмысленно.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
PantiL
Гость
|
|
« Ответ #8 : 12-07-2005 08:46 » |
|
Вообще интересный способ передавать значения ищ формы, array["kod"] , не проще просто ...name=kod... Без массива. И обращаться потом к переменной $_POST['kod']
|
|
« Последнее редактирование: 20-12-2007 18:39 от Алексей1153++ »
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #9 : 12-07-2005 08:53 » |
|
Вообще интересный способ передавать значения ищ формы, array["kod"] , не проще просто ...name=kod... Без массива. И обращаться потом к переменной $_POST['kod']
Конечно ты прав Если уж нужен массив инпутов, тогда не надо писать <input type=text name="Array[kod]" size=40> лучше тогда просто <input type=text name="kod[]" size=40> и тогда после субмита будем иметь массив инпутов kod.
|
|
« Последнее редактирование: 20-12-2007 18:42 от Алексей1153++ »
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
DET
Гость
|
|
« Ответ #10 : 12-07-2005 09:15 » |
|
Вся php вставка: <?php $TheFile="data/ycheb.txt"; $Open=fopen ($TheFile, "r"); if ($Open) { $Data=file ($TheFile); for ($n=0; $n<count ($Data); $n++) { $GetLine=explode("\t", $Data[$n]); if ($Array["nazvanie"]==$GetLine[0]) { if ($Array["kod"]==$GetLine[5]) { print_r($_POST); print (" <form action=powernetycheb4.php method=post name=add enctype=multipart/form-data> <table width=100% border=1 bordercolor=#999999> <tr> <td height=4 width=51%><font color=#0000FF>Введите название вашего сайта:</font></td> <td height=4 width=49%> <input type=text name=Array[nazvanie] value=$GetLine[0] size=40> </td> </tr> <tr> <td width=51% height=2><font color=#0000FF>URL адрес вашего сайта:</font></td> <td width=49% height=2> <input type=text name=Array[url] value=$GetLine[1] size=40> </td> </tr> <tr> <td width=51%><font color=#0000FF>Напишите пояснение к своему сайту:</font></td> <td width=49%> <textarea name=Array[text] cols=30 rows=5>$GetLine[2]</textarea> </td> </tr> <tr> <td width=51%><font color=#0000FF>Введите ник или имя администратора сайта:</font></td> <td width=49%> <input type=text name=Array[nik] value=$GetLine[3] size=40> </td> </tr> <tr> <td width=51% height=4><font color=#0000FF size=2>Введите вашь адрес электронной почты в сети Powernet:</font></td> <td width=49% height=4> <input type=text name=Array[pochta] value=$GetLine[4] size=40> </td> </tr> <tr> <td width=51% height=6><font color=#0000FF size=2>Введите ваш введите вашь пароль:</font></td> <td width=49% height=6> <input type=password name=Array[kod1] value=$GetLine[5]size=40> </td> </tr> <tr> <td width=51% height=6><font color=#0000FF size=2>Повторите ваш пароль:</font></td> <td width=49% height=6> <input type=password name=Array[kod2] value=$GetLine[5] size=40> </td> </tr> <tr> <td width=51% height=24><font color=#0000FF>Для внесения изменений нажмите кнопку: Добавить:</font></td> <td width=49% height=24> <input type=submit name=Submit value=Добавить> </td> </tr> <tr> <td width=51% height=5><font color=#0000FF>Предварительный просмотр:</font></td> <td width=49% height=5> <input type=submit name=Submit value=Пред.просмотр onClick=document.add.action='powernetychebpr2.php';document.add.submit()> </td> </tr> </table> </form>"); } else { print ("Вы ввели неправильный код\n<br>"); } } else { print ("Вы ввели неправильное название сайта\n<br>"); }}} ?> Остальное это html и ява скрипт для украшения. Табличка со страницы откуда данные передаются: <form action="powernetycheb3.php" method="post" name="add" enctype="multipart/form-data"> <table width="100%" border="1" bordercolor="#999999"> <tr> <td height="4" width="51%"><font color="#0000FF">Введите название вашего сайта:</font></td> <td height="4" width="49%"> <input type=text name="Array[nazvanie]" size=40> </td> </tr> <tr> <td width="51%" height="6"><font color="#0000FF" size="2">Ваш пароль:</font></td> <td width="49%" height="6"> <input type=text name="Array[kod]" size=40> </td> </tr> <tr> <td width="51%" height="24"><font color="#0000FF" size="2">Да начала редактирования нажмите кнопку далее:</font></td> <td width="49%" height="24"> <input type="submit" name="Submit" value="Далее"> </td> </tr> </table> </form>
|
|
« Последнее редактирование: 20-12-2007 18:45 от Алексей1153++ »
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #11 : 12-07-2005 09:26 » |
|
DET, напомню, что форма записи &#число; интерпретируется как unicode (utf-16) и к 8-мибитным кодировкам не применима.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
DET
Гость
|
|
« Ответ #12 : 12-07-2005 09:44 » |
|
DET, напомню, что форма записи &#число; интерпретируется как unicode (utf-16) и к 8-мибитным кодировкам не применима.
Это текст, ток тут на форуме видать другая кадировка.
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #13 : 12-07-2005 10:53 » |
|
Нет - это то, что прислал твой браузер.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #14 : 12-07-2005 12:08 » |
|
Ну во первых я не вижу смысла в enctype="multipart/form-data" ты никаких файлов сдесь не аплоадиш, а значит и не нужно так. Вполне нормально будет и так : enctype="text/plain" Сейчас попробую разобраться в твоём юникоде
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
DET
Гость
|
|
« Ответ #15 : 12-07-2005 14:07 » |
|
Всем спасибо, все ваши замечания я учёл, название пременных изменил так чтобы они не были похожи на ключевые слова пхп, поменял местами значения в файле, короче почти полностью всё переделал, вроде работает всё, хотя в чём была ошибка я так и не определил.
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #16 : 13-07-2005 04:27 » |
|
хотя в чём была ошибка я так и не определил. Сильно подозреваю что в записи вида Array[nazvanie], хотя не факт И ещё возможно в этом : multipart/form-data, хотя тоже не факт
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
DET
Гость
|
|
« Ответ #17 : 18-07-2005 10:52 » |
|
Чёт опять я облажался, когда делал сайт при проверке много данных не вводил. Как я попросил друга зарегестривовать свой сайт, то увидел, что если вводится много данных (в частности большое пояснение), то данные в файл записываются в несколько строк, в результате на выходе получается не то, что нужно, приходится вручную переносить все данные в одну строку. Не могли бы вы подсказать, в чём может быть дело? Это проблема с файлами и выход один только переходить на бд? или я опять, что то не так сделал? Заранее спасибо.
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #18 : 18-07-2005 11:20 » |
|
Скорее всего что в вводимом тексте присутствуют символы перехода строки, и поэтому пишется в файл в несколько строк. Попробуй заменять например все \r или \n на пробел раз уж тебе так необходимо иметь всё в одной строке.
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
DET
Гость
|
|
« Ответ #19 : 19-07-2005 19:00 » |
|
Чёт ничего не получилось.
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #20 : 20-07-2005 04:26 » |
|
Ну пришли хоть один из файлов, а мы посмотрим
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
DET
Гость
|
|
« Ответ #21 : 20-07-2005 12:43 » |
|
А в php, нету функций которые убирали бы в текте знаки перехода строки, (знаю что есть функция убирает лишние пробелы). В общем попеределывал, вродебы всё правильно записывается, но с если пользователь нажмёт Enter, то проблемма опять появляется).
Если всё же ещё нужен файл, чтобы посмотреть, то какой?
|
|
|
Записан
|
|
|
|
DET
Гость
|
|
« Ответ #22 : 20-07-2005 12:56 » |
|
Функцию нашол, буду пробовать.
|
|
|
Записан
|
|
|
|
DET
Гость
|
|
« Ответ #23 : 21-07-2005 06:59 » |
|
Всё зделал, всё работает. Ещё раз спасибо! Только вот, появился вопрос такого рода. Появились умельцы которые в пояснение вставляют скрипты. Спасало только то, что обработка строк происходит с "коментированием" кавычек и поэтому скрипт не срабатывал. А можно какнить вообще запретить вводить скрипты (теги), в общем немного защититься?
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #24 : 21-07-2005 10:10 » |
|
см htmlspecialchars() - никакие теги тебе не помешают и информация не потеряется.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
DET
Гость
|
|
« Ответ #25 : 21-07-2005 20:01 » |
|
см htmlspecialchars() - никакие теги тебе не помешают и информация не потеряется.
Сделал, а какую либо ещё защиту можно сделать? и нужно?
|
|
|
Записан
|
|
|
|
RXL
Технический
Администратор
Offline
Пол:
|
|
« Ответ #26 : 21-07-2005 20:25 » |
|
Врятли. Почитай ман на эту ф-ию - там все просто: замена нескольких символов на entity.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
PantiL
Гость
|
|
« Ответ #27 : 21-07-2005 21:22 » |
|
Если инфа хранится в БД то еще защита mysql_escape_string(), и еще stripslashes()-если хотят скрипт не перле написать. Посмотри описание этих функций
|
|
|
Записан
|
|
|
|
MOPO3
Ай да дэдушка! Вах...
Команда клуба
Offline
Пол:
Холадна аднака!
|
|
« Ответ #28 : 22-07-2005 06:04 » |
|
см htmlspecialchars() - никакие теги тебе не помешают и информация не потеряется.
Сделал, а какую либо ещё защиту можно сделать? и нужно? Врятли. Почитай ман на эту ф-ию - там все просто: замена нескольких символов на entity.
Ну можно впринципе ещё вот так извратиться : htmlspecialchars(strip_tags($content))
|
|
|
Записан
|
MCP, MCAD, MCTS:Win, MCTS:Web
|
|
|
|