Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Редактирование и удаление данных в файле  (Прочитано 24314 раз)
0 Пользователей и 8 Гостей смотрят эту тему.
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 » new

Почти всё зделал, осталось решить одну проблему.
Код:
$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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #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=&#39;powernetychebpr2.php&#39;;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 Offline
Пол: Мужской

WWW
« Ответ #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 Offline
Пол: Мужской

WWW
« Ответ #13 : 12-07-2005 10:53 » 

Нет - это то, что прислал твой браузер.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #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
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #18 : 18-07-2005 11:20 » 

Скорее всего что в вводимом тексте присутствуют символы перехода строки, и поэтому пишется в файл в несколько строк.
Попробуй заменять например все \r или \n на пробел раз уж тебе так необходимо иметь всё в одной строке.
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
DET
Гость
« Ответ #19 : 19-07-2005 19:00 » 

Чёт ничего не получилось.
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #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 Offline
Пол: Мужской

WWW
« Ответ #24 : 21-07-2005 10:10 » 

см htmlspecialchars() - никакие теги тебе не помешают и информация не потеряется.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
DET
Гость
« Ответ #25 : 21-07-2005 20:01 » 

см htmlspecialchars() - никакие теги тебе не помешают и информация не потеряется.
Сделал, а какую либо ещё защиту можно сделать? и нужно?
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #26 : 21-07-2005 20:25 » 

Врятли. Почитай ман на эту ф-ию - там все просто: замена нескольких символов на entity.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
PantiL
Гость
« Ответ #27 : 21-07-2005 21:22 » 

Если инфа хранится в БД то еще защита mysql_escape_string(), и еще stripslashes()-если хотят скрипт не перле написать. Посмотри описание этих функций
Записан
MOPO3
Ай да дэдушка! Вах...
Команда клуба

lt
Offline Offline
Пол: Мужской
Холадна аднака!


WWW
« Ответ #28 : 22-07-2005 06:04 » 

см htmlspecialchars() - никакие теги тебе не помешают и информация не потеряется.
Сделал, а какую либо ещё защиту можно сделать? и нужно?
Врятли. Почитай ман на эту ф-ию - там все просто: замена нескольких символов на entity.
Ну можно впринципе ещё вот так извратиться :
htmlspecialchars(strip_tags($content))

Ага
Записан

MCP, MCAD, MCTS:Win, MCTS:Web
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines