4

Phpでバウンティスクリプトをコーディングしています。(報酬スクリプト)、Prosper202 のオープン ソース コードを使用しています。サブ ID とポストバックでリードを追跡しようとしています。例。

URL の末尾に一意の ID を追加したいと思います。お気に入りhttp://google.com/c3={unique_id}

ここでは、少なくとも 15 分間有効な一意の ID をランダムに生成し、Mysql データベースに保存する必要があります。

成功したサード パーティ サーバーがフォーマットでポストバックを送信した場合。

http://watever.com/c3={unique_id}

次に、両方をリアルタイムで比較する必要があります。(これは、エンド ユーザーへの遅延を避けるために、できるだけ速くする必要があります。)

この場合、何を使用する必要がありますか?

ポストバックまたはphpに使用するJavaScript?

そして、phpスクリプトでポストバックを操作する方法。

私が示したように。このスクリプト Prosper202 にも、ポストバックを追跡する同じ機能があります。しかし、そこから有用なコードを抽出することはできません。

資力:-

http://prosper.tracking202.com/apps/
http://prosper.tracking202.com/forum/6/21/tracking-subids#7848
4

1 に答える 1

1

必要な作業は次のとおりです。

1) 次のフィールドを使用して、MySQL にトランザクション テーブルを作成します。

TRANSACTIONS
############
id - INT, AUTO-INCREMENT, UNSIGNED, NOT NULL
transaction_id - VARCHAR(8)
created_on - TIMESTAMP, DEFAULT CURRENT_TIMESTAMP()

2) 次のフィールドを使用して、MySQL で変換テーブルを作成します。

CONVERSIONS
###########
id - INT, AUTO-INCREMENT, UNSIGNED, NOT NULL
transaction_id - VARCHAR(8)
created_on - TIMESTAMP, DEFAULT CURRENT_TIMESTAMP()

3) コードで、URL に送信する前に、一意のトランザクション ID (サブ ID) を生成して添付する必要があります。

/**
* Generates [$length] character transaction ID's. Verifies transaction ID is not
* currently in use. If it is, function recursively attempts to generate
* a unique one. After 10 attempts, it fails and returns false.
*
* @param PDO    Database connection via dependency injection
* @param Int    Length of string to generate
*/
function generateTransactionId($db, $length = 8)
{
// Don't let this function get stuck in endless recursion.
static $recursion_count = 0;
$recursion_count++;
if($recursion_count > 10) 
{
    $recursion_count = 0; 
    return false; 
}

// Create transaction ID
$transaction_id = substr(md5(uniqid(mt_rand(), true)), 0, $length);

// Check to make sure it is unique
$query = "SELECT id FROM myDb.transactions WHERE transaction_id = ?";
$stmt = $db->prepare($query);
$stmt->execute(array($transaction_id));
$row = $stmt->fetch(PDO::FETCH_OBJ);
$stmt = null;

// If nothing found, we have a unique ID. Otherwise recursively find a unique one.
if(!is_object($row) || $row == false)
{
    // Reset recursion counter
    $recursion_count = 0;

    // Found unique ID
    return $transaction_id;
}
else
{
    // Recursively generate unique transaction ID
    return generateTransactionId($db);
}
}

$url = "http://www.google.com/";
$transaction_id = generateTransactionId($myPDOConnection);

// Add to URL
$url = $url . "?c3=" . $transaction_id;

// Do redirect to URL
header('Location: ' . $url);

4) ポストバックを受信するために使用される別のスクリプトでは、サブ ID/トランザクション ID を GET (または、必要に応じて POST) で取得し、変換をマークします。

$transaction_id = isset($_GET['c3']) ? trim($_GET['c3']) : false;

if($transaction_id)
{
   // Received conversion, add this transaction ID to conversions table
}

リアルタイム比較に関する限り、アクセスできる唯一の指標は、リダイレクト前の時点と、ポストバックを受信した時点です。トランザクション テーブルの COUNT() を確認すると、リダイレクトの回数を確認できます。コンバージョン テーブルの COUNT() をチェックすることで、受け取ったポストバック/コンバージョンの数を確認できます。

于 2012-11-07T13:47:09.447 に答える