Codeigniter - Как раскрыть информацию после ввода пароля через ajax - PullRequest
0 голосов
/ 24 июня 2010

Я работаю на сайте codeigniter, клиент запросил, чтобы столбцы цен в таблице данных были скрыты, если пользователь не введет правильный пароль (который он выдаст клиентам по телефону).

Очевидный способ состоит в том, чтобы сделать логин пользователя, который затем открывает новую таблицу / страницу с включенными ценами.

Можно ли как-то добиться этого с помощью AJAX?запрос отправлен, и новая таблица загружается с включенными ценами?

Я новичок в Codeigniter, но я учусь каждый день, пожалуйста, кто-то может указать мне правильное направление?Dan

Ответы [ 4 ]

2 голосов
/ 24 июня 2010

на самом деле это не проблема воспламенения кода, а больше javascript. добавьте функцию контроллера в ci, которую вы вызываете через ajax (настоятельно рекомендуется такой фреймворк javascript, как jquery).

для простоты вы можете добавить пароль к запросу. функция контроллера проверяет пароль и, если он правильный, выводит цену.

код JavaScript может выглядеть примерно так:

$.ajax({
type: "POST",
url: 'controller/function',
data: {'password': $('#password').attr(value)},
success: function(data){
    $('#price').html(data);
},
});
1 голос
/ 24 июня 2010

Вы можете достичь этого через ajax: это будет работать примерно так:

1.) Пользователь вводит пароль в поле и нажимает кнопку

2.) Событие нажатия кнопки вызывает следующее:

var xmlhttp =  new XMLHttpRequest();

xmlhttp.open('POST', 'getPrices.php', true);


xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4) {
        if (xmlhttp.readState == 200)
            putPricesIntable(xmlhttp.responseXML)
    }
}

xmlhttp.send('password=' + 'password');  
0 голосов
/ 24 июня 2010

Ajax просто означает, что ваш контроллер входа вернет что-то машиночитаемое (json / xml) вместо html.

Вашему контроллеру просто нужно установить переменную сеанса.

class Login extends Controller {

    function __construct() {
          parent::Controller();
          $this->load->model('user_m');
    }

    function json_login() {
        $user = $this->user_m->get_user($_POST['username']);
        if($user->password == md5($_POST['password'])) {
            $this->session->set_userdata('username',$user->username);
            print json_encode($this->user);
        }
        else {
            print json_encode(FALSE);
        }
        return;
    }

   function logout() {
       $this->session->destroy();
       redirect('/theloginpage');
   }
}

Если вы используете jquery для javascript, вызов ajax может работать примерно так:

$('#login_form').submit(function(event) {
     event.preventDefault();
     $.ajax({
         type:"POST",
         data:$(this).serialize(),
         dataType:"json",
         url:"/login/json_login",
         success: function(data) {
             if(data['username'] != null) { 
                 $(this).append('<p>You are now logged in</p>');
                 reload_table_data(); 
             }
             else if(data == flase){
                 $(this).append('<p>Fail whale, wrong username or password</p>');
             }

         }
     });

}

Теперь при отображении данных проверьте, было ли установлено имя пользователя в сеансе. Также не забудьте создать метод выхода из системы, который уничтожит сеанс. Вы можете вернуть данные таблицы в виде фрагмента html и вставить их прямо в цикл DOM или json / xml.

Форма входа может отображаться в любом месте на странице, и существует множество библиотек для jquery, dojo, prototype и т. Д., Которые предоставляют диалоговое окно.

0 голосов
/ 24 июня 2010

Этот вопрос на самом деле имеет мало общего с конкретным языком или структурой, но больше касается того, как наилучшим образом решить проблему.Проблема в этом случае заключается в отображении столбца, только если пароль введен правильно.Итак, для начала вам нужно иметь средство, позволяющее пользователю сайта ввести пароль.То, как это делается, опять же не имеет значения, это может быть форма на странице или отдельная страница.

После того, как пароль будет отправлен и найден верным, потребуется создать сеанс дляПользователь.Этот сеанс в основном говорит странице, отображать или нет столбец.

Вы, вероятно, не захотите полагаться исключительно на метод ajax, как если бы пользователь отключил JavaScript, тогда он никогда не сможет увидетьвместо этого используйте только JavaScript для повышения удобства использования веб-сайта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...