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!のフロントエンドアプリを初期化し、必要なフレームワーク/クラスをロードする必要があります。これを行うと、サイトにセキュリティの問題が発生する可能性があります。

プラグインがデフォルトのJoomla!を介して呼び出すことができる適切なAJAX/RAWコントローラーを使用して基本的なコンポーネントを作成することをお勧めします。パス(つまりindex.php)。

Joomlaをバイパスしたい場合は!index.php次に、アプリケーションはJoomlaのバージョンのメインを調べて、アプリケーションフレームワークをロードする方法のガイドを提供します。

psJRequest::getDBO()は無効であり、 (任意のバージョン)getDBO()のメソッドではありませんJRequest

于 2012-09-16T21:49:46.153 に答える