Hur hanterar man query strings i Drupal

Events happening in the community are now at Drupal community events on www.drupal.org.
RTauson's picture

Hej !
Sitter med en drupal implementation som skall kommunicera med underliggande system via ajax.
Jag skulle vilja implementera en proxy så att ajax requesten från användaren anropar drupal kärnan som i sin tur vidarebefodrar anropet till den "verkliga" adressen.
Jag använder Extended Javascript för gränssnitt programmering.
ExtJs bygger ajax anrop så att argumenten kommer med som "value pairs" dvs i princip www.example.com/drupal/getAjaxData&key1=1&key2=2

Nu vill jag försöka "parsa" de inkommande argumenten för at sedan kunna skicka vidare dom till min bakomliggande tjänst.

Problemet är att drupal "skalar" av såväl ? som & tecken. Finns det ngt sätt att komma runt detta dvs kunna ta emot argument key1 och argument key2 ?

dvs anropar jag url:en
www.example.com/drupal/my_module/getAjaxData/test&key1=2 , får jag endast ut värdet "test" i min print enligt kod nedan.
Någon som har en aning ?

Min test kod ser ut enligt följande:

function my_module_menu(){
    $items['my_module/getJsonPData'] = array(
       'title' => 'Property ajax proxy',
       'description' => 'Acts like a proxy and sends user credentials to underlaying server',
      'page callback' => 'my_module_jsonp_proxy',
     'access callback' => 'user_access',
     'access arguments' => array('create property content'),
     'type' => MENU_LOCAL_TASK,
    );
    
   return $items;
}

function my_module_jsonp_proxy($key, $callback){
print($key);
}

Comments

Snedstreck

itangalo's picture

Jag hoppas att jag lyckas svara på rätt fråga nu, men jag tror att det räcker att ange argumenten med snedstreck mellan: exempel.se/drupal/getAjaxData/1/2...
Det finns nämligen en trevlig funktion i Drupal som plockar ut delarna ur sökvägen: arg. Namnet till trots borde funktionen kunna göra dig glad.

//Johan Falk, Solna

Inte riktigt rätt (dålig förklaring kanske)

RTauson's picture

Hej ! Tack för ditt svar...
Tyvärr genererar mitt gränssnitts lager (ExtJs) automatiska URL:er som följer ngn RFC standard med value pairs, alltså kan jag inte påverka hur URL:en anropas, så jag måste på ngt sätt kunna ta emot URL enligt http://www.example.com/drupal/getAjaxData&key1=value1&key2=value2

I övrigt stämmer ditt svar, dvs det går alldeles utmärkt att ta emot variablar som postas med / efter varandra...

Hittade en lösning...

RTauson's picture

Lyckades hitta en lösning, ibland är svaret bra mkt enklare än vad man tror...

http://drupal.org/node/120723

använd php funtionerna:

$value1 = $_GET['key1'];
$value2 = $_GET['key2'];

Ett allmänt säkerhets tips

frjo's picture

Ett allmänt säkerhets tips när man tar in värden från URL:en på detta sätt är att kolla dem innan man skickar dem vidare. Är värdet verkligen numeriskt om det ska vara det, eller är det verkligen en text sträng och inget annat.

Drupals funktion check_plain() är t ex. mycket användbar.

$value1 = check_plain($_GET['key1']);
$value2 = is_numeric($_GET['key2']) ? $_GET['key2'] : NULL ;

Läs mer på http://drupal.org/writing-secure-code.

Sweden

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: