| 
			| 
					
						| 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 | 
								|  | « Ответ #11 : 12-07-2005 09:26 »  |  | 
 
 DET, напомню, что форма записи &#число; интерпретируется как unicode (utf-16) и к 8-мибитным кодировкам не применима.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| DET 
								Гость
 | 
								|  | « Ответ #12 : 12-07-2005 09:44 »  |  | 
 
 DET, напомню, что форма записи &#число; интерпретируется как unicode (utf-16) и к 8-мибитным кодировкам не применима.
 
 Это текст, ток тут на форуме видать другая кадировка. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #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 | 
								|  | « Ответ #24 : 21-07-2005 10:10 »  |  | 
 
 см htmlspecialchars() - никакие теги тебе не помешают и информация не потеряется. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| DET 
								Гость
 | 
								|  | « Ответ #25 : 21-07-2005 20:01 »  |  | 
 
 см htmlspecialchars() - никакие теги тебе не помешают и информация не потеряется.
  Сделал, а какую либо ещё защиту можно сделать? и нужно? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #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 |  |  | 
	|  |