Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Немогу разобратся.
Форумы портала PHP.SU » » Объектно-ориентированное программирование » Немогу разобратся.

Страниц (1): [1]
 

1. etoYA - 01 Апреля, 2012 - 23:17:04 - перейти к сообщению
Скорее всего проблема в какой-то мелочи, но так как я уже минут 40 ломаю голову над этой мелочью, я ее просто уже не вижу..

Задумка такая:

Пользователь вводит логин и емейл, если такой существует, то отправить ему письмо на почту, но перед этим сообщить пользователю об отправке. Чего собственно и не происходит.

Т.е. после
PHP:
скопировать код в буфер обмена
  1.  
  2. if ($user->num_rows == 0){
  3.                                         $this->_error = true;
  4.                                         $this->_errstr = 'Пользователя с таким логином и е-мейлом не существует<br />';                                
  5.                                 }
  6.  


скрипт умерает. Нереально вывести ничего..

PHP:
скопировать код в буфер обмена
  1.  
  2.         function lostpass($active){
  3.                 $tpl = new Template;
  4.                 $user = new Users;
  5.                 $page = new Pages('lostpass');
  6.                 $login = isset($_POST['login']) ? mysqli_real_escape_string(db(),$_POST['login']) : null;
  7.                 $email = isset($_POST['email']) ? mysqli_real_escape_string(db(),$_POST['email']) : null;
  8.                 $tpl->set(array(
  9.                                                 'title'                 => $page->title,
  10.                                                 'm_keywords'    => $page->m_keywords,
  11.                                                 'm_description' => $page->m_description,
  12.                                                 'page'                  => 'content'));
  13.                 if (!isset($active)){  
  14.                         $tpl->body = $tpl->inc('forms','lostpass.phtml');
  15.                         if (isset($_POST['restore'])){
  16.                                 if (empty($login)){
  17.                                         $this->_error = true;
  18.                                         $this->_errstr .= 'Введите логин<br />';
  19.                                 }
  20.                                 if (empty($email)){
  21.                                         $this->_error = true;
  22.                                         $this->_errstr .= 'Введите е-мейл<br />';
  23.                                 }
  24.                                 $user->lostpass($login, $email);
  25.                                 if ($user->num_rows == 0){
  26.                                         $this->_error = true;
  27.                                         $this->_errstr = 'Пользователя с таким логином и е-мейлом не существует<br />';                                
  28.                                 }
  29.                                 if ($this->_error === false){
  30.                                         $symbols = array(
  31.                                                 'a','b','c','d','e','f','g','h','i','j','k','l','m',
  32.                                                 'n','o','p','q','r','s','t','u','v','w','x','y','z',
  33.                                                 'A','B','C','D','E','F','G','H','I','J','K','L','M',
  34.                                                 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
  35.                                                 '0','1','2','3','4','5','6','7','8','9','_','-',':',')'
  36.                                         );
  37.                                         $count = rand(6, 16);
  38.                                         $count_symbols = count($symbols) - 1;
  39.                                         $pass = '';
  40.                                         for ($i = 0; $i < $count; $i++){
  41.                                                 $pass .= $symbols[rand(0, $count_symbols)];
  42.                                         }
  43.                                         $msg = '
  44.                                                 Здравстуйте '.$login.', Вы запросили востановление пароля на сайте
  45.                                                 <a href="'.Config::getInstance()->get('main', 'url').'"
  46.                                                 title="Клубная музыка бесплатно и без регистрации">'.Config::getInstance()->get('main', 'url').'</a>
  47.                                                 <p><b>Ваш новый пароль:</b> '.$pass.'</p><p>Дли активации пароля перейдите по ссылке
  48.                                                 <a href="'.Config::getInstance()->get('main', 'url').'/user/lostpass/'.md5($pass.$user->salt).'"
  49.                                                 title="Клубная музыка бесплатно и без регистрации">'.Config::getInstance()->get('main', 'url').'</a></p>
  50.                                         ';
  51.                                         if (mail($email, 'Востановление пароля на '.Config::getInstance()->get('main', 'url'), $msg, 'From:'.Config::getInstance()->get('main', 'email'))){
  52.                                                 $tpl->success = 'Запрос на востановление пароля отправлен на почту';
  53.                                         }
  54.                                 }
  55.                         }
  56.                 }
  57.                 $tpl->error = $this->_errstr;
  58.                 $this->_front->setLayout($tpl->render('index.phtml'));
  59.         }
  60.  

(Добавление)
Проверить можно тут:

http://176[dot]101[dot]6[dot]116/user/lostpass/

логин: test
email: test@localhost
(Добавление)
Незнаю как отладить скрипт, если метод перестает работать, (думаю перестает)
2. Okula - 01 Апреля, 2012 - 23:28:43 - перейти к сообщению
etoYA, включи показ ошибок в скрипте:
3. like_you - 01 Апреля, 2012 - 23:30:38 - перейти к сообщению
Возможно ошибка в javascript. Я отключил javascript и страница тоже ничего не показала...
4. etoYA - 01 Апреля, 2012 - 23:33:22 - перейти к сообщению
like_you, и не будет, так как у body display: none, а при загрузке страницы jQuery делает видимым страницу
Okula, включен.

5. like_you - 01 Апреля, 2012 - 23:41:18 - перейти к сообщению
А где в приведенном вами коде есть вызов функции lostpass()?
6. OrmaJever - 01 Апреля, 2012 - 23:42:41 - перейти к сообщению
etoYA пишет:
Незнаю как отладить скрипт, если метод перестает работать, (думаю перестает)

В этом то и беда, как написать большой код дак очередь, а как искать в своём же коде ошибку дак 1 из 10.
обязательно прочитать http://www.phpfaq[dot]ru/debug от самого начала и до самого конца, и вдуматся.
7. Okula - 01 Апреля, 2012 - 23:43:28 - перейти к сообщению
etoYA, отображение всех ошибок - это число 30719 или константа E_ALL.
Помимо этого долна быть включена опция display_errors, если этого не будет сделано ошибки отображаться на дисплей не будут, несмотря на значение E_ALL в функции error_reporting().
8. etoYA - 01 Апреля, 2012 - 23:46:05 - перейти к сообщению
Okula, о, спасибо! Это может помочь)
(Добавление)
OrmaJever, читал)
like_you пишет:
А где в приведенном вами коде есть вызов функции lostpass()?

Метода, он вызывается через браузер
(Добавление)
Okula, спасибо! Без тебя бы не справился).

Хотите посмеятся в чем была ошибка?
А именно в модели)))

PHP:
скопировать код в буфер обмена
  1. $$this->salt = 'К"лаБ!М;ик?с!';
9. LIME - 02 Апреля, 2012 - 00:10:11 - перейти к сообщению
etoYA не очень хорошо что сайт без js не работает
вернее даже очень паршиво
сразу пользователи с мобильных отсекаются
а ктото и отключает это в браузере
надо чтоб сайт и без js работал
пусть и менее "красиво"
(Добавление)
ну если это невозможно по концепции то хотябы выводить месагу
ато впечатление что сайт лежит
10. etoYA - 02 Апреля, 2012 - 15:56:33 - перейти к сообщению
LIME, это я на период разработки, потом будет сообщение. А для пользователей с мобильниками будет отдельная версия.

 

Powered by ExBB FM 1.0 RC1