1. Szerver oldalon generálok egy sóval egy tokent és azt $_SESSION változóba teszem valahogy így:
$_SESSION['tid'] = $token = drupal_get_token('Ez itt a só');
2. Ezt a tokent kiíratom a kliens oldalra, mint javascript változót:
<?php print ("<script type='text/javascript'> var tid = ".$token."; </script> "); ?>
3. Amikor ajax hívást indítok a kliens oldalról, akkor paraméterként hozzácsapom a javascript változó értékét (ez itt egy jquery példa):
....
$.post("http://foo.hu/ajax.php", {muvelet: "frissites", id: id,token:token},function (data){
alert(data);
});
....
4. A szerver oldalon az ajax.php először lefuttatja a Drupal inicializálást, majd majd ellenőrzi, hogy létezik-e a küldött tokenhez tartozóan session a sessions táblában, mert ha van, akkor betölti a session useréhez tartozó user paramétereit és végül beállítja a jogosultságokat:
<?php
//Drupal szükséges moduljainak betöltése
drupalize();
session_start();
function drupalize() {
while (!@stat('./includes/bootstrap.inc')) {
chdir('..');
}
require_once './includes/bootstrap.inc';
require_once './includes/file.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
}
//Token átvétele, user ellenőrzése, user betöltése
if( isset($_REQUEST['token'])){
$token =$_REQUEST['token'];
$sql= "select uid FROM {sessions} WHERE session LIKE '%%s%'";
$uid = 0;
$rs =db_query($sql, $token);
if($row = db_fetch_array($rs)){
$uid = $row['uid'];
}
//User betöltése, ha van ilyen user
$user_load($uid);
//User jogosultságok ellenőrzése
if(user_access("edit valami") or user_access("administer valami"))
............. itt lehet az adatázis módosítását elvégezni ...............
}
}
?>