|
|
|
| В общем, я в PHP новичок, вот решил забацать скрипт добавления новостей. Вроде так, более менее получилось, но я решил сделать смену пароля через админ панель.
У меня есть:
Текстовое поле "Старый пароль", которое принимает переменную $starpass
Текстовое поле "Новый пароль", которое принимает переменную $newpass
Есть файл config.php в котором на второй строке есть $pass="password";
В общем мне надо, что бы при совпадении старых паролей, он заменял старый пароль на новый и записывал его в файл config.php
Как не пробовал, ни фига не получается. У меня с этими строковами переменнами всегда были проблемы. Помогите плиз!!! Заранее спасибо всем за любую помощь.
PS. Я в PHP пока Ламер, так что если напишите скрипт, буду очень рад если мне его ещё и объясните, саму систему... | |
|
|
|
|
|
|
|
для: Football
(12.07.2005 в 19:27)
| | Все просто =)
<?
$get_pass = "password"; // Полученный пароль от пользователя
$star_pass = "password"; // Старый пароль того же пользователя
if ($get_pass == $star_pass) // Сравниваем пароли и если совпали,
{
$star_pass = $newpass // то заменяем пароль.
}
?>
|
| |
|
|
|
|
|
|
|
для: Akira
(12.07.2005 в 19:33)
| | Да, но как записать всё в файл config.php, причём так, что старый пароль ( в моём случае PASSWORD) заменился на пароль, который ввёл пользователь (переменная $newpass? | |
|
|
|
|
|
|
|
для: 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);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(12.07.2005 в 21:30)
| | ???????, ????????! | |
|
|
|
|
|
|
|
для: Football
(13.07.2005 в 09:04)
| | Спасибо, попробую!
С кодировкой что-то случилось :) | |
|
|
|
|
|
|
|
для: 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=""
Что теперь то не так? | |
|
|
|
|
|
|
|
для: Football
(13.07.2005 в 10:00)
| | Во-первых, у массива есть 0-й элемент. Так что lines[2] - это и есть третья строчка.
Попробуйте написать $_POST['pass'] - с кавычками. | |
|
|
|
|
|
|
|
для: Киналь
(13.07.2005 в 11:15)
| | Да всё верно только вместо $_POST[pass], лучше сразу написать $pass. | |
|
|
|
|
|
|
|
для: 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 | |
|
|
|
|
|
|
|
для: cheops
(13.07.2005 в 11:56)
| | Спасибо, попробую, если что, сообщу. :) | |
|
|
|
|
|
|
|
для: Football
(13.07.2005 в 13:53)
| | Всё, работает!
Всем кто помогал БОЛЬШОЕ СПАСИБО!
И ещё вопросик по строкам.
Как определить, сколько в файле строк и результат записать в какую-нибудь перменную? | |
|
|
|
|
|
|
|
для: Football
(13.07.2005 в 15:56)
| | Можно прибегнуть к следующему скрипту
<?php
$arr = file("config.php");
$num = count($arr);
?>
|
Переменная $num будет содержать число строк в файле count.php. | |
|
|
|
|
|
|
|
для: cheops
(13.07.2005 в 19:08)
| | Ага, спасибо! | |
|
|
|