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

Форум PHP

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

 

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

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

тема: О работе с набором классов SoftTime FrameWork
 
 автор: sevidi   (03.05.2009 в 18:08)   письмо автору
 
 

Я начинающий веб-разработчик. РНР изучаю по книге Кузнецова М. и Симдянова И. "РНР практика создания веб-сайтов". Книга написана вполне доходчивым "языком" и по сравнению с другими авторами имеет ряд преимуществ. Все что изложено в книге подтверждается практическими результатами. "Камнем" преткновения стала разработка веб-приложений с использованием набора класса 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", скаченные с настоящего с сайта. Результат не изменился. Вопрос к авторам: где ошибка? Дистрибутив скачен с вашего сайта один к одному.

  Ответить  
 
 автор: cheops   (04.05.2009 в 12:51)   письмо автору
 
   для: sevidi   (03.05.2009 в 18:08)
 

К сожалению, в PHP объектно-ориетированный подход реализован достаточно небрежно, поэтому при наследовании, в членах класса символ _ зачастую заменяется i (зачем это сделано, почему это не исправлено скоро уже 3 года, одному богу известно). Мы старались везде, где проявляется эта проблема не использовать переменных с символом подчеркивания, однако, в этом примере не углядели. Пожалуйста, замените везде pass_again на passagain.

  Ответить  
 
 автор: sevidi   (04.05.2009 в 20:00)   письмо автору
 
   для: cheops   (04.05.2009 в 12:51)
 

Я сделал как Вы посоветовали. Вот результат:
Произошла исключительная ситуация (ExceptionObject) - попытка использования в качестве элемента управления объекта, класс которого не является производным от базового класса field. "passagain" не является элементом управления.

Ошибка в файле D:\site\class\class.forms.php в строке 46.
P.S. Дистрибутив ваш.

  Ответить  
 
 автор: sevidi   (04.05.2009 в 21:17)   письмо автору
 
   для: 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[]= "Пароли не равны";
}

  Ответить  
 
 автор: cheops   (05.05.2009 в 00:28)   письмо автору
 
   для: sevidi   (04.05.2009 в 21:17)
 

Переменную следует править везде
$passagain=new field_password( "passagain",
"Повтор пароля",
true,
$_POST['passagain']);

  Ответить  
 
 автор: sevidi   (05.05.2009 в 08:10)   письмо автору
 
   для: cheops   (05.05.2009 в 00:28)
 

Исправил. Все работает.

  Ответить  
Rambler's Top100
вверх

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