it-swarm.dev

データベースの値を自動的に更新しない

私は問題に直面しています。 Paypalで支払いを行いました。支払い後にウェブサイトにリダイレクトすると、データベースの値を更新するコードがあります。しかし、同じページを更新すると、その値が自動的に更新されます。更新時ではなく、支払い時にのみ値を更新したい。コードを使用しています

$db  = JFactory::getDBO();
$result = null;     
$user    = JFactory::getUser();

if ($user->guest) {
    return false;
}

$query = 'SELECT credit' .
         'FROM #__vodes_credits' .
         'WHERE userid = ' . (int) $user->id;
$db->setQuery($query);
$result = $db->loadResult();

$result_final = $result+20;

$query = 'update #__vodes_credits SET credit='.$result_final.
         'WHERE userid = ' . (int) $user->id;
//echo $query;
$db->setQuery($query);

$result = $db->loadResult();
if ($db->getErrorNum()) {
    JError::raiseWarning( 500, $db->stderr());
}

return $result;

$app = JFactory::getApplication();
$app->redirect("localhost/Joomla/");

探し出すのを手伝ってください。

1
Rupzz

コードは最後の3行まで問題ありません。このコードは、Paypalが呼び出すURLのタスクパラメーターに対応する名前のコントローラーメソッドにあると想定しています。

_return $result;

$app = JFactory::getApplication();
$app->redirect("localhost/Joomla/");
_

結果を返すべきではありません。あなたはあなたの目標を達成しようとしているリダイレクトの部分をスキップしています。

機密フォームの結果を解析したら、リダイレクト/リロードによって同じアクションが再度トリガーされないようにリダイレクトすることをお勧めします。しかし、リダイレクトが設定される前に戻ります。

さらに、「localhost/Joomla」へのリダイレクトは実際には意味がないと思います。通常、setRedirect()を使用して、支払いの詳細を表示するコンポーネントのビューに暗黙的にリダイレクトし、メッセージをユーザーに表示して、支払いが正しく処理されたことをユーザーに通知します。

まとめると、コードの末尾は次のようになります。

_$app->setRedirect(JRoute::_("index.php?option=com_yourcomponent&view=paymentsuccess"),JText::_("HAPPY_PAYMENT_MESSAGE"));
_

返品なし;

1
Riccardo Zorn