0

所以,我有 2 个脚本在同一个数据库上运行,但每个脚本都有自己的表(如用户、帖子等),并且它们有积分系统。

现在,我想做的是使点从一个发送到另一个成为可能。我创建了一个简单的表单,其中包含要填写的名称和点数,然后在提交时将发送到另一个处理信息的页面,从用户那里取走给定的金额(将检查会话),然后将其发送到给定的名称(在另一个脚本中注册)。

好的,当它处理时,积分被带走(如果积分不足,则给出“积分不足”错误),但积分不会记入另一个帐户。有可能解决这个问题吗?

下面是代码片段:

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('mods/points'); 
$pointst1 = request_var('pointst', 0);
$bsname1 = request_var('bsname', 0);

if ( $user->data['user_points'] < $pointst1 ){
echo "<b>You don't have enough points</b>";
}

else {
remove_points($user->data['user_id'], $pointst1);
mysql_query("UPDATE users SET points = (points + $pointst1) WHERE name = '$bsname'");
echo "<b>Points tranferred!</b>";
};

?>
4

1 回答 1

0

几件事。

首先,我建议您查看有关处理 SQL 提交的网站。这将有助于确保您不会从一个用户那里删除积分,并且不会将它们添加到另一个用户。这可能发生在您当前的代码示例中

http://php.net/manual/en/mysqlnd-ms.transaction.php

其次,这部分似乎将 php 变量作为文本传递

mysql_query("UPDATE users SET points = (points + $pointst1) WHERE name = '$bsname'"); echo "积分转移了! "

您可能想将其更改为

mysql_query("UPDATE users SET points = (points + {$pointst1} ) WHERE name = {$bsname}");
echo "<b>Points tranferred!</b>"

我不是 PHP 程序员,所以你可以在这里查看我的逻辑:http: //php.net/manual/en/language.operators.string.php

希望能帮助到你

于 2013-04-04T21:00:05.397 回答