用于过滤 API 调用特定 MySQL 列的 YOURLS 插件

YOURLS plugin to filter API call for specific MySQL column

我有一个网站,该网站具有允许用户创建缩短的 URLs 的功能。为了处理 URL 缩短,我正在使用 YOURLS(一个开源 URL 缩短器),我在我的另一台服务器上 运行 并通过 [= 连接两个站点38=] 来电。

我创建了一个 YOURLS plugin with some custom API actions,所以当用户创建一个简短的 URL 时,它会将他们的用户 ID 从我的网站附加到 yourls_url table,如下所示:

当用户访问他们的 "My Links" 页面时,我需要对 return 该用户创建的所有短 URL 进行 API 调用。要做到这一点,它应该就像为“api_result_stats”创建过滤器一样简单。

这是我创建的过滤器,假设仅 return 由指定用户创建的 URL:

yourls_add_filter( 'api_result_stats', 'separate_users_api_stats' );

function separate_users_api_stats() {
    global $ydb;

    $user = ( isset( $_REQUEST['user'] ) ? $_REQUEST['user'] : '' );

    $table = YOURLS_DB_TABLE_URL;
    $result = $ydb->query("SELECT * FROM `$table` WHERE  `user` = '" . $user . "'");

    return $result > 0;

}

为了测试这个我可以尝试 http://example.com/yourls-api.php?action=stats&user=test123&limit=10&filter=last&signature=xxxxxxxxxx 但不幸的是我收到的是:

我不太熟悉 PHP/MYSQL 所以我已经坚持了很长一段时间,如果有人对我哪里出错有任何想法或者可以提供一个例子将不胜感激!

这是为我解决这个问题的方法:

yourls_add_filter( 'api_result_stats', 'separate_users_api_stats' );

function separate_users_api_stats() {
    global $ydb;

    $user = ( isset( $_REQUEST['user'] ) ? $_REQUEST['user'] : '' );

    $table = YOURLS_DB_TABLE_URL;

    $query = "SELECT * FROM `$table` WHERE `user` = '" . $user . "'";

    $result = $ydb -> get_results($query);

    return $result;

}