Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Замена строки в середине текстового файла
 
 автор: Football   (12.07.2005 в 19:27)   письмо автору
 
 

В общем, я в PHP новичок, вот решил забацать скрипт добавления новостей. Вроде так, более менее получилось, но я решил сделать смену пароля через админ панель.
У меня есть:
Текстовое поле "Старый пароль", которое принимает переменную $starpass
Текстовое поле "Новый пароль", которое принимает переменную $newpass
Есть файл config.php в котором на второй строке есть $pass="password";
В общем мне надо, что бы при совпадении старых паролей, он заменял старый пароль на новый и записывал его в файл config.php
Как не пробовал, ни фига не получается. У меня с этими строковами переменнами всегда были проблемы. Помогите плиз!!! Заранее спасибо всем за любую помощь.
PS. Я в PHP пока Ламер, так что если напишите скрипт, буду очень рад если мне его ещё и объясните, саму систему...

   
 
 автор: Akira   (12.07.2005 в 19:33)   письмо автору
 
   для: Football   (12.07.2005 в 19:27)
 

Все просто =)

<?
$get_pass 
"password"// Полученный пароль от пользователя
$star_pass "password"// Старый пароль того же пользователя

if ($get_pass  == $star_pass// Сравниваем пароли и если совпали,
   
{
       
$star_pass $newpass // то заменяем пароль.
   
}
?>

   
 
 автор: Football   (12.07.2005 в 19:39)   письмо автору
 
   для: Akira   (12.07.2005 в 19:33)
 

Да, но как записать всё в файл config.php, причём так, что старый пароль ( в моём случае PASSWORD) заменился на пароль, который ввёл пользователь (переменная $newpass?

   
 
 автор: cheops   (12.07.2005 в 21:30)   письмо автору
 
   для: Football   (12.07.2005 в 19:27)
 

Хорошо бы если вы прикрепили к сообщению config.php, чтобы можно было потестировать, но скорее всего нужный вам скрипт будет выглядеть следующим образом
<?php 
  $filename 
"test.txt"
  
// Разбиваем содержимое файла на массив,
  // каждый элемент которого соответствует строке
  
$lines file($filename);
  
// Заменяем вторую строку
  
$lines[2] = "\$pass=\"$_POST[pass]\";\r\n";
  
// Объединяем массив $lines обратно в строку
  
$content implode("",$lines);
  
// Перезаписываем содержимое файла
  
$fd fopen($filename"w"); 
  
fwrite($fd$content); 
  
fclose($fd); 
?>

   
 
 автор: Football   (13.07.2005 в 09:04)   письмо автору
 
   для: cheops   (12.07.2005 в 21:30)
 

???????, ????????!

   
 
 автор: Football   (13.07.2005 в 09:06)   письмо автору
 
   для: Football   (13.07.2005 в 09:04)
 

Спасибо, попробую!
С кодировкой что-то случилось :)

   
 
 автор: Football   (13.07.2005 в 10:00)   письмо автору
 
   для: Football   (13.07.2005 в 09:06)
 

Проблемки продолжились.. Вставил следующий код:

<?
include ("config.php");
if (
$starpass==$pass) {
    
$filename "config.php"
      
// Разбиваем содержимое файла на массив, 
      // каждый элемент которого соответствует строке 
      
$lines file($filename); 
      
// Заменяем вторую строку 
      
$lines[2] = "\$pass=\"$_POST[pass]\";\r\n"
      
// Объединяем массив $lines обратно в строку 
      
$newpass implode("",$lines); 
      
// Перезаписываем содержимое файла 
      
$fd fopen($filename"w"); 
      
fwrite($fd$newpass); 
      
fclose($fd); 
} else {
echo 
"Вы не вверно ввели старый пароль";
}
?>

Всё ввожу, нажимаю "Изменить пароль", но выводит ошибку на 9 строке: Notice: Undefined index: pass, а в файл config.php на 3(!!!) строке добавляется $pass=""
Что теперь то не так?

   
 
 автор: Киналь   (13.07.2005 в 11:15)   письмо автору
 
   для: Football   (13.07.2005 в 10:00)
 

Во-первых, у массива есть 0-й элемент. Так что lines[2] - это и есть третья строчка.
Попробуйте написать $_POST['pass'] - с кавычками.

   
 
 автор: cheops   (13.07.2005 в 11:45)   письмо автору
 
   для: Киналь   (13.07.2005 в 11:15)
 

Да всё верно только вместо $_POST[pass], лучше сразу написать $pass.

   
 
 автор: cheops   (13.07.2005 в 11:56)   письмо автору
 
   для: Football   (13.07.2005 в 10:00)
 

Notice не является ошибкой - это совет по кодированию вызванный высокой чуствительностью PHP-интерпретатора, выставленной по умолчанию в дистрибутиве PHP - на реальных хостингах он снижен, иначе невозможно рабоатать. Снизить уровень тревожности можно выставив директиву error_reporting в конфигурационном файле php.ini в следующее значение
error_reporting = E_ALL & ~E_NOTICE

Можно также снизить уровень тревожности в пределах одного файла расположив функцию Error_Reporting() в начале файла
<?php
  Error_Reporting
(E_ALL & ~E_NOTICE); 
?>


http://www.softtime.ru/info/articlephp.php?id_article=23

   
 
 автор: Football   (13.07.2005 в 13:53)   письмо автору
 
   для: cheops   (13.07.2005 в 11:56)
 

Спасибо, попробую, если что, сообщу. :)

   
 
 автор: Football   (13.07.2005 в 15:56)   письмо автору
 
   для: Football   (13.07.2005 в 13:53)
 

Всё, работает!
Всем кто помогал БОЛЬШОЕ СПАСИБО!
И ещё вопросик по строкам.
Как определить, сколько в файле строк и результат записать в какую-нибудь перменную?

   
 
 автор: cheops   (13.07.2005 в 19:08)   письмо автору
 
   для: Football   (13.07.2005 в 15:56)
 

Можно прибегнуть к следующему скрипту
<?php
  $arr 
file("config.php");
  
$num count($arr);
?>

Переменная $num будет содержать число строк в файле count.php.

   
 
 автор: Football   (13.07.2005 в 21:09)   письмо автору
 
   для: cheops   (13.07.2005 в 19:08)
 

Ага, спасибо!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования