0

我创建了简单的 ajax 投票插件,它工作正常.. 直到我开始在 conf.php 文件中使用 joomla 方法。下面的文件是带有简单 php db 查询的 conf.php,如果我放在这里例如 $dbb = JRequest::getDbo(); 它停止工作..或任何其他 joomla 方法。我无法理解这里有什么问题?

$.ajax
({
type: "POST",
url: "plugins/system/ratingx/conf.php",
data: dataString,
cache: false,
success: function(html)
{

conf.php:

<?php
define( '_JEXEC', 1) or die;
defined( '_JEXEC' ) or die;

$mysql_hostname = "localhost";
$mysql_user = "px";
$mysql_password = "px";
$mysql_database = "jum";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) 
or die("Opps some thing went wrong");
mysql_select_db($mysql_database, $bd) or die("Opps some thing went wrong");


if($_POST['id'])
{
$id=mysql_real_escape_string($_POST['id']);
$name=mysql_real_escape_string($_POST['name']);


mysql_query("update messages set $name=$name+1 where id='$id'");


$result=mysql_query("select up,down from messages where id='$id'");
$row=mysql_fetch_array($result);
$up_value=$row['up'];
$down_value=$row['down'];
$total=$up_value+$down_value;

$up_per=($up_value*100)/$total;
$down_per=($down_value*100)/$total;
?>
<div style="margin-bottom:10px">
<b>Ratings for this blog</b> ( <?php echo $total; ?> total)
</div>
<table width="700px">

<tr>
<td width="30px"></td>
<td width="60px"><?php echo $up_value; ?></td>
<td width="600px"><div id="greebar" style="width:<?php echo $up_per; ?>%"></div></td>
</tr>

<tr>
<td width="30px"></td>
<td width="60px"><?php echo $down_value; ?></td>
<td width="600px"><div id="redbar" style="width:<?php echo $down_per; ?>%"></div></td>
</tr>

</table>

<?php

}
4

1 回答 1

0

不确定 Joomla 的版本!你正在使用但是...

问题是您正在调用存在于 Joomla 之外的文件!框架,仅仅因为您已经定义_JEXEC并不意味着框架已加载。

为了能够使用JRequest甚至JFactory::getDBO()您还需要初始化 Joomla! 的前端应用程序并加载所需的框架/类。这样做可能会使您的网站出现安全问题。

我建议您使用适当的 AJAX/RAW 控制器创建一个基本组件,您的插件可以通过默认的 Joomla! 路径(即index.php)。

如果您确实想绕过 Joomla!应用程序然后查看index.php您的 Joomla 版本的主要内容,以指导您如何加载应用程序框架。

psJRequest::getDBO()无效,getDBO()不是JRequest(任何版本)的方法

于 2012-09-16T21:49:46.153 回答