1

我有一个网站,它具有允许用户创建缩短 URL 的功能。为了处理 URL 缩短,我使用了YOURLS(一种开源 URL 缩短器),它在我的另一台服务器上运行,并通过 API 调用连接两个站点。

我创建了一个带有一些自定义API 操作的YOURLS 插件,因此当用户创建一个短 URL 时,它会将他们的用户 ID 从我的网站附加到 yourls_url 表,如下所示:

在此处输入图像描述

当用户访问他们的“我的链接”页面时,我需要进行 API 调用以返回该用户创建的所有短 URL。为此,它应该像为“ api_result_stats ”创建过滤器一样简单。

这是我创建的过滤器,假设只返回指定用户创建的 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 不太熟悉,所以我已经坚持了很长一段时间了,如果有人对我哪里出错有任何想法或者可以提供一个例子,我将不胜感激!

4

1 回答 1

1

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

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;

}
于 2016-05-30T21:16:45.723 回答