Модуль входа в систему Joomla не будет запускать учетные данные, отправьте его через ajax! - PullRequest
1 голос
/ 09 июня 2011

Я пытаюсь сделать jquery ajax модальным модулем входа в систему для joomla 1.6. Должно быть так, чтобы передаваемые учетные данные бросали ajax для проверки php-файлом. Но, к счастью, не похоже, чтобы казнили. Мой аякс выглядит следующим образом

$.ajax({  
type: "POST",
url: "do-login.php",  // Send the login info to this page
data: "username="+$('#username').val()+"&password="+$('#password').val(),   
success: function(msg){  }

и php-файл получателя

<?php
// No direct access to this file
/* Initialize Joomla framework */

defined('_JEXEC') or die;
jimport( 'joomla.application.application' );

$mainframe = JFactory::getApplication();
$post_username = JRequest::getVar($username);
$post_password = JRequest::getVar($password);



$data['username'] =$post_username;
$data['password'] = $post_password;

$mainframe->login($data, $option);
if (!JError::isError($error)) {
        echo 'OK';
    } else {
          echo '<div id="notification_error">The login info is not correct.</div>';

    }





?>

Если я удаляю определенный Joomla (_JEXEC) код, чем не загружены определенные классы.


Я так и думал. Все должно пройти через index.php Joomla. Но что, если я использую стандартный компонент joomla com_users, могу ли я достичь своих целей?

Ответы [ 2 ]

2 голосов
/ 11 июня 2011

Вы не можете вызывать файлы PHP напрямую;вы пытаетесь сделать именно то, для чего предназначен бит defined('_JEXEC') or die;;)

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

$.post('index.php', {
    option: 'com_ajax_login',
    tmpl: 'component',
    format: 'raw',
    username: $('#username').val(),
    password: $('#password').val(),
    },
  function(response){
    $('#your_login_box').html(response);
});

Когда компонент выдает ответ, он будет передан в эту анонимную функцию спараметр response, тогда вы можете разместить его где угодно (например, $('#your_login_box').html(response);).Также обратите внимание на переменные format и tmpl в запросе: они не позволяют Joomla вернуть полный шаблон.

Вы можете в значительной степени скопировать do-login.php в components/com_ajax_login/ajax_login.php как есть (хотя вынужно либо установить компонент через установщик Joomla, либо сделать запись в jos_extensions).

0 голосов
/ 09 июня 2011

Вы пробовали следующий формат для вашего почтового запроса?

$.post('do-login.php', { username: $('#username').val(), password: $('#password').val()}, function (data) {

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