Esta é minha primeira vez em PHP e minha primeira vez com o Joomla. Eu venho de um histórico pesado de C # / .Net.
Eu escrevi um módulo Joomla personalizado que interage com um WebService de terceiros via nuSoap.
Isso tudo funciona muito bem se eu apenas executar os arquivos .php no meu próprio ambiente PHP não-Joomla na minha máquina de desenvolvimento.
No entanto, se eu entendi corretamente, o Joomla bloqueia todos os pedidos para tudo index.php
, exceto , isso está correto?
Como permito acesso direto ao meu próprio arquivo .php?
Este é um exemplo de como estou solicitando o JavaScript do lado do cliente usando o jQuery:
$.ajax({
url: 'MyFile.php',
type: 'POST',
data: { ... },
success: function(data, status) {
....
onde MyFile.php está atualmente localizado fisicamente em /htdocs/modules/mod_mymodule/MyFile.php
Eu sei que a permissão de solicitações diretas para esse arquivo pode representar um risco à segurança, no entanto, eu preciso executá-lo o mais rápido possível e cuidarei das preocupações de segurança posteriormente.
fonte
url: '/modules/mod_mymodule/MyFile.php',
Respostas:
Normalmente, a única coisa que impede o acesso direto a um arquivo joomla é uma linha na parte superior do arquivo:
Se isso ainda não estiver na parte superior do arquivo, você não terá problemas em acessar o arquivo diretamente.
O redirecionamento de arquivo htaccess já possui condições para não redirecionar se o arquivo ou a pasta existir:
Caso contrário, você não poderá carregar nenhum arquivo javascript ou css!
Então, na verdade, tudo o que você precisa fazer é remover essa linha da parte superior do arquivo e você poderá acessar o arquivo diretamente.
A principal coisa a se notar é que nenhuma das classes do Joomla será carregada; portanto, você deve executar esse arquivo como um arquivo independente (o que você já está fazendo).
Tanto quanto sei, não deve haver risco de segurança inerente ao acessar diretamente um arquivo php, desde que esse seja o comportamento pretendido. Como a maioria dos arquivos no Joomla supõe que eles não serão acessados diretamente, é melhor bloquear esse acesso direto. No seu caso, você pretende que esse código seja acessado diretamente, sem riscos inerentes. Você pode ter outros riscos de segurança aceitando os dados do POST e não os filtrando adequadamente (ou seja, mais fácil se você deixar o Joomla fazer isso por você), mas isso não tem relação com o fato de o arquivo ser acessado ou não diretamente.
fonte
com_ajax
mas desde que eu sou totalmente novo no Joomla (e no PHP), eu queria uma saída rápida que não exigisse implementar coisas extras. Agora que você mencionou quenone of the Joomla classes will be loaded
sei que essa não é uma solução adequada para o meu problema. A menos que haja uma maneira de "carregar" manualmente a estrutura do Joomla sob demanda do meu próprio arquivo .php independente?$user = JFactory::getUser()
deve trabalhar para obter as informações do usuário atual.Uma solução alternativa,
Se você desenvolveu o módulo na estrutura apropriada do Joomla , em vez de incluir a estrutura do Core Joomla no arquivo do módulo, você pode usar
com_ajax
para fazer umaajax
chamada ao módulo ou plugin.Se você trabalha com serviços da Web e planeja usá-lo em muitos sites, cria um módulo / plug-in Joomla simples que pode ser acessado via ajax e a instalação desse módulo / plug-in é bastante simples, como qualquer outra extensão do joomla.
Uma documentação detalhada pode ser encontrada aqui . Além disso, se você estiver usando uma versão mais antiga do Joomla, há um componente disponível para obter a interface Ajax. .
Esse recurso do Ajax está embutido na versão J3.2 e acima; portanto, a versão abaixo deve usar esses componentes.
Espero que faça sentido!
fonte