2011-01-25 37 views
0

我一直在寻找网络的问题的答案,但我似乎无法找到一个,即使它可能很简单。Joomla模块提交表单无法访问数据库

我有一个joomla模块,当用户点击提交按钮导航到submitsignup.php文件时,用户注册一个简报。我这样做是使用表单动作值,像这样:

form action="modules/mod_cmsnewslettersignup/otherfiles/submitsignup.php" method="post" id="subForm" 

在这个submitsignup.php文件我不能访问任何的Joomla类,如:

$db = JFactory::getDBO(); 

我知道,我无法访问任何joomla类,因为我直接访问submitsignup.php文件,但我想知道如何访问这个文件,以便我可以访问所有的Joomla类?
谢谢。

+0

这样做不是很好的做法。您必须在虚拟网址上提交表单,并创建一个适用于此虚拟网址的插件。 – Gaurav 2011-01-25 05:50:55

回答

0

如果您在提交表单时重新加载页面,则存在一个简单的解决方案,它既解决了使用直接URL的问题,又解决了必须在该文件中加载Joomla框架的问题。基本上,改变你的模块代码是这样的 -

if ($_POST["formsubmitted"]){ 
    the code you run when the form is submitted 
    echo success or failure message 
} else { 
the code you run to display the form 
    <form action="<?php echo JURI::current(); ?>" method="post"> 
    <input type="hidden" value="true" name="formsubmitted"> 
} 

基本上,您提交的形式显示在页面。然后在模块中添加一个钩子来处理提交的表单或显示表单,具体取决于您在$ _POST中找到的内容。您可以添加一些简单的安全措施,以确保表单正在从您的网站提交。

+0

谢谢,这解决了这个问题。欣赏它。 – Nathan 2011-01-26 23:58:04