1

ユーザーが短縮 URL を作成できる機能を備えた Web サイトを持っています。URL 短縮を処理するために、私はYOURLS (オープンソースの URL 短縮サービス) を使用しています。これは私の別のサーバーで実行し、API 呼び出しを介して 2 つのサイトを接続します。

いくつかのカスタムAPI アクションを使用してYOURLS プラグインを作成したので、ユーザーが短い URL を作成すると、以下に示すように、私の Web サイトからのユーザー ID が yourls_url テーブルに添付されます。

ここに画像の説明を入力

ユーザーが「My Links」ページにアクセスしたときに、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 に答える