1

我有一个基于 PHP 框架的社交网站。我正在使用插件在会员更新个人资料时奖励他们积分。现在,每当会员点击“保存”时,它都会触发 profileupdate 事件,并且该事件会触发积分奖励。但是,即使个人资料字段全部为空,事件仍然会被触发并且他们仍然可以获得积分......所以,我聪明的用户正在游戏系统以获得积分而不真正更新他们的个人资料:\

我想添加一个函数来检查配置文件字段是否为空 - 或者,理想情况下,检查是否对至少 1 个配置文件字段进行了大量更改,但我不知道该怎么做那。

我对 PHP 还是很陌生(大约 1 年的经验),所以如果有人可以帮助解释检查过程应该是什么以及执行检查功能的代码的细节,我真的很感激!

以下是当前的事件和功能:

当页面的所有者单击“保存”时,这是 PHP 框架核心中的事件,被触发以通知用户更新:

$owner->save();
trigger_event('profileupdate', $owner->type, $owner);
system_message(echo("profile:saved"));

这是积分插件中的函数,用于检查插件是否配置为根据个人资料更新奖励积分,然后调用 points_add 函数向用户添加积分:

function points_profile($event, $type, $object) {
    if ($points = get_plugin_setting('profileupdate')) {
        if (function_exists('points_add')) {
            points_add(get_logged_in_user_guid(), $points, $event, $type, $object->entity_guid);
        }
    }
    return(true);
}

这是如何定义/标记各个配置文件字段的示例 - 即“admin_defined_profile_1”

if (save_config("admin_defined_profile_$id", $label) &&
    save_config("admin_defined_profile_type_$id", $type) &&
    save_config('profile_custom_fields', $fieldlist)) 
4

1 回答 1

0

查看 rowcount() http://www.php.net/manual/en/pdostatement.rowcount.php

如果实际发生任何更改,它将 -on single UPDATE -return 1,如果没有任何更改,则返回 0。

于 2013-09-30T17:20:27.407 回答