Как сделать авторизацию в codeigniter?

0

Не отображается, что админ авторизован после ввода данных в форме, через строку все работает

<div class="panel panel-info">
<div class="panel-heading"><div class="sidebar-header">Вход</div></div>
<div class="panel-body">

<?php if(!$this->dx_auth->is_logged_in()): ?>

<form role="form" action="/auth/login/" method="post">
<div class="form-group">
<input type="text" class="form-control input-lg" placeholder="Логин" name="username">
</div>
<div class="form-group">
<input type="password" class="form-control input-lg" placeholder="Пароль" name="password">
</div>

<button type="submit" class="btn btn-warning pull-right">вход</button>

</form>

<?php else: ?>

Здравствуйте, <?php echo $this->dx_auth->get_username(); ?>
<a href="/auth/logout" class="btn btn-warning pull-right">выход</a>

<?php endif ?>

</div>
</div>

в чем может быть проблема?

codeigniter

18 ответов

2

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

0

Ребята, та же проблема. 

открыл в 29 уроке исходник и там все нормально открывает и логиниться через тот же xampp и ту же версию php, но в моем проекте так же как у народа выше логиниться при зажатой remember. прошу помощи

1

ругается на вызов неопределенной функции set_value ()

в этом массиве 

<?php

$remember = array( 'name' => 'remember',

'id' => 'remember',

'value' => 1,

'checked' => set_value('remember')); ?>   <--- тут

1

даже с исходным кодом не работает, помогите 

2

у меня не работает (есть предположение что в обновлениях были исправления, но точно не знаю)

# php -v
PHP 7.3.0 (cli) (built: Dec 6 2018 02:17:00) ( ZTS MSVC15 (Visual C++ 2017) x86
)
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies

и без галочки 'запомнить меня' он почему ты то не запоминает 

1

help не могу разобраться 

2

нету ошибки, в том то и дело, просто после входа через панель ничего не происходит, а если через адрес и с сохранением пароля то работает

1

хорошо сейчас попробую 

3

Все заработало со старой версией и вправду проблема была в в новой версии php 

1

а как тогда быть с новой версией ?

1

Не в версиях xampp и php дело. Я поставил самую последнюю версию xampp и в ней все работает. У кого не работает, значит ошибку где-то сделали. Качайте исходный код вместе с дампом базы из последнего урока, настраивайте и запускайте, потом со своим кодом сравнивайте.

1

Попробуй так:

          <div class="panel panel-info">
            <div class="panel-heading"><div class="sidebar-header">Вход</div></div>
            <div class="panel-body">

              <?php if (!$this->dx_auth->is_logged_in()): ?>
            
              <?php
                $remember = array(
                  'name'  => 'remember',
                  'id'  => 'remember',
                  'value' => 1,
                  'checked' => set_value('remember'));
              ?>

              <?php echo $this->session->flashdata('general__error'); ?>
              <form role="form" action="/auth/login/" method="post">
                <div class="form-group">
                  <input type="text"  class="form-control input-lg" placeholder="Логин" name="username">
                  <?php echo $this->session->flashdata('username__error'); ?>
                </div>
                <div class="form-group">
                  <input type="password" class="form-control input-lg" placeholder="Пароль" name="password">
                  <?php echo $this->session->flashdata('password__error'); ?>
                </div>
                <button type="submit" class="btn btn-warning pull-right">вход</button>
                <dd>
                  <?php echo form_checkbox($remember);?> <?php echo form_label('Запомнить меня'.'<br>', $remember['id']);?> 
                  <?php echo anchor($this->dx_auth->forgot_password_uri, 'Восстановить пароль'.'<br>');?> 
                  <?php
                    if ($this->dx_auth->allow_registration) {
                      echo anchor($this->dx_auth->register_uri, 'Регистрация');
                    };
                  ?>
                </dd>
              </form>

              <?php else: ?>

                Здравствуйте, <?php echo $this->dx_auth->get_username(); ?>
                <a href="/auth/logout/" class="btn btn-warning pull-right">выход</a>

              <?php endif ?>

            </div>
          </div>  
1

Проект развернули из исходника? У меня работает корректно:

https://ibb.co/zPvf5kV

Стоит XAMPP:

# php -v
PHP 7.1.10 (cli) (built: Sep 26 2017 20:07:27) ( ZTS MSVC14 (Visual C++ 2015) x86 )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies
1

Скопируйте ошибку полностью со страницы, что пишет и сюда выложите.

3

Лучше наверное в саппорт сайта написать по этому вопросу

0

ребята. была проблема. решил с помощью варианта от Albert Shtana. Установка версии PHP От 7.1.10 не помогла.  решил вот как:
C:\xampp\htdocs\kinomonster\system\libraries\Form_validation.php:
936: public function set_value($field = '', $default = '') .

находим эту строчку. и заменяем как предлагал Albert: 

"Нашёл одно решение незнаю правильное оно или нет, но только так получилось в системном методе изменить код : $default = ' ' на $default = '1'  в параметрах метода"

public function set_value($field = '', $default = '1')
{
if ( ! isset($this->_field_data[$field], $this->_field_data[$field]['postdata']))
{
return $default;
}

// If the data is an array output them one at a time.
// E.g: form_input('name[]', set_value('name[]');
if (is_array($this->_field_data[$field]['postdata']))
{
return array_shift($this->_field_data[$field]['postdata']);
}

return $this->_field_data[$field]['postdata'];
}

ничего менять в других файлах не пришлось. файл Menu.php остался не тронутым, как в исходнике. может кому-то актуально. теперь авторизирует как должно, без кнопки "запомнить"

1

Очень странно, может и правда в том, что у вас версия PHP 7.3.0 (хотя, вряд ли из-за этого). Попробуйте развернуть на php PHP 7.1.10, например, через virtual box или vmware (или на хостинге), у меня пока нет возможности попробовать развернуть на другой версии php. Проверьте еще все конфиги и настройки xampp и конфиги codeignter, может там что-то забыли настроить. 

1

Нашёл одно решение незнаю правильное оно или нет, но только так получилось в системном методе изменить код : $default = ' ' на $default = '1'  в параметрах метода

public function set_value($field = '', $default = '1')
{
if ( ! isset($this->_field_data[$field], $this->_field_data[$field]['postdata']))
{
return $default;
}

// If the data is an array output them one at a time.
// E.g: form_input('name[]', set_value('name[]');
if (is_array($this->_field_data[$field]['postdata']))
{
return array_shift($this->_field_data[$field]['postdata']);
}

return $this->_field_data[$field]['postdata'];
}

Sign up or Log in to write an answer