|
|
|
| Я начинающий веб-разработчик. РНР изучаю по книге Кузнецова М. и Симдянова И. "РНР практика создания веб-сайтов". Книга написана вполне доходчивым "языком" и по сравнению с другими авторами имеет ряд преимуществ. Все что изложено в книге подтверждается практическими результатами. "Камнем" преткновения стала разработка веб-приложений с использованием набора класса FrameWork. Для редактирования данных пользователя используется HTML-форма. В книге она расположена в листинге 6.28 (файл edituser.php). У меня этот скрипт выводит форму и после заполнения полей с паролями всегда выдает: Поле "Повтор пароля" не заполнено; Пароли не равны. Я проверил и изменил отдельные настройки файла php.ini. Вот некоторые из них:
output_buffering = On variables_order = "EGPCS" register_globals = Off register_long_arrays = Off
magic_quotes_gpc = Off magic_quotes_runtime = Off - результат тот же. Для чистоты эксперемента создал отдельный хост и разместил на нем файлы "набор классов SoftTime FrameWork", скаченные с настоящего с сайта. Результат не изменился. Вопрос к авторам: где ошибка? Дистрибутив скачен с вашего сайта один к одному. | |
|
|
|
|
|
|
|
для: sevidi
(03.05.2009 в 18:08)
| | К сожалению, в PHP объектно-ориетированный подход реализован достаточно небрежно, поэтому при наследовании, в членах класса символ _ зачастую заменяется i (зачем это сделано, почему это не исправлено скоро уже 3 года, одному богу известно). Мы старались везде, где проявляется эта проблема не использовать переменных с символом подчеркивания, однако, в этом примере не углядели. Пожалуйста, замените везде pass_again на passagain. | |
|
|
|
|
|
|
|
для: cheops
(04.05.2009 в 12:51)
| | Я сделал как Вы посоветовали. Вот результат:
Произошла исключительная ситуация (ExceptionObject) - попытка использования в качестве элемента управления объекта, класс которого не является производным от базового класса field. "passagain" не является элементом управления.
Ошибка в файле D:\site\class\class.forms.php в строке 46.
P.S. Дистрибутив ваш. | |
|
|
|
|
|
|
|
для: sevidi
(04.05.2009 в 20:00)
| | Скрипт заработал при следующем коде:
$pass=new field_password( "pass",
"Пароль",
true,
$_POST['pass']);
$pass_again=new field_password( "pass.again",
"Повтор пароля",
true,
$_POST['pass_again']);
$email=new field_text_email ("email",
"E-mail",
true,
$_POST['email']);
$about=new field_textarea ("about",
"О себе",
false, //поле не обязательное
$_POST['about']);
$form=new form(array( "name" => $name,
"pass" => $pass,
"pass.again"=> $pass_again,
"email" => $email,
"about" => $about),
"Добавить",
"field");
////////////////////////////////////////////
//2.Обработчик HTML-формы
////////////////////////////////////////////
if(!empty($_POST))
{
//Устанавливаем соединение с базой данных
require_once("config.php");
//Проверяем корректность заполнения HTML-формы
//и обрабатываем текстовые поля
$error = $form->check() ;
//Проверяем эдентичность паролей
if($form->fields['pass']->value != $form->fields['pass.again']->value)
{
$error[]= "Пароли не равны";
} | |
|
|
|
|
|
|
|
для: sevidi
(04.05.2009 в 21:17)
| | Переменную следует править везде
$passagain=new field_password( "passagain",
"Повтор пароля",
true,
$_POST['passagain']);
|
| |
|
|
|
|
|
|
|
для: cheops
(05.05.2009 в 00:28)
| | Исправил. Все работает. | |
|
|
|