si si infatti questa cosa mi pareva di averla capita..
i parametri della richiesta get sono
Codice:
oid=%oid%
sid=%sid%
reward_amount=%reward_amount%
e_mail=%email%
quindi la mia url dovrebbe essere:
Codice:
banennersbrokermaia.altervista.org/forum/points.php?oid=%oid%&sid=%sid%&reward_amount=%reward_amount%e_mail=%email%
oggi guardando bene sul sito di trialpay ho notato questo link che mi riposta a questo codice..
Codice PHP:
<?
// TrialPay provides this signature for the message
$message_signature = $_SERVER['HTTP_TRIALPAY_HMAC_MD5'];
// Recalculate the signature locally
$key = '[YOUR MERCHANT KEY]';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// the following is for POST notification
if (empty($HTTP_RAW_POST_DATA)) {
$recalculated_message_signature = hash_hmac('md5', file_get_contents('php://input'), $key);
} else {
$recalculated_message_signature = hash_hmac('md5', $HTTP_RAW_POST_DATA, $key);
}
} else {
// the following is for GET notification
$recalculated_message_signature = hash_hmac('md5', $_SERVER['QUERY_STRING'], $key);
}
if ($message_signature == $recalculated_message_signature) {
// the message is authentic
} else {
// the message is not authentic
}
che in teoria questo codice lo dovrei implementare nella pagina .../points.php
e fino a qui non ci sono problemi lo prendo e lo appicico...
l'unica cosa che mi fa venire in mente che il tutto è infattibile è che trial pay conosce la mail dell'utente e non l'id utente che esiste sul forum, che è la variabile di riferimento della tabella user. dove è presente una colonna chiamata points che io devo far incrementare con le info della richiesta. quindi dovrei trovare il modo di risalire dalla mail all'ID utente per poi far incrementare la variabile punti.
Altimenti non possibile fare una cosa?
io creo un form.. che si auto completa grazie alla richista get. il form è un form di contatto che mi manda una mail, con dentro tutte le richieste....
[edit ]
no ho voglia di riscrivere gli appunti della lezione e quindi lavoro qui..
dunque spulciando qui e li per le funzioni della mod points ho trovato questa funzione.
Codice PHP:
/**
* Add points to user
*/
function add_points($user_id, $amount)
{
global $db, $user;
// Select users current points
$sql_array = array(
'SELECT' => 'user_points',
'FROM' => array(
USERS_TABLE => 'u',
),
'WHERE' => 'user_id = ' . (int) $user_id,
);
$sql = $db->sql_build_query('SELECT', $sql_array);
$result = $db->sql_query($sql);
$user_points = $db->sql_fetchfield('user_points');
$db->sql_freeresult($result);
// Add the points
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_points = user_points + ' . $amount . '
WHERE user_id = ' . (int) $user_id;
$db->sql_query($sql);
return;
}
e allora mi è venuta in mente la possibilità di utilizzare parte di questa funzione per far in modo che la comunicazione venga poi iscritta nel DB
Codice PHP:
* Add points to user by trial pay
*/
function add_points_tp($user_id, $amount)
{
global $db, $user;
// Add the points
$sql = 'UPDATE ' . USERS_TABLE . '
SET user_points = user_points + ' . $amount . '
WHERE user_id = ' . (int) $user_id;
$db->sql_query($sql);
return;
il problema è sempre lo stesso non ho modo di trovare l'id dell'utente dalla mail