Archive for พฤศจิกายน 21st, 2007

Drupal user register with curl.

วันนี้ลองหาวิธีที่จะ เขียนโค้ด php เพื่อที่จะไป เพิ่ม user ให้กับ drupal ก็เข้าไปที่เว็บของ drupal ก็เจออันนึงเป็นวิธีการ automate task ของ drupal โดยใช้ curl extension ก็คือจะใช้ curl เป็นตัวที่จะ post ข้อมูลในการ register user ใหม่เข้าไปให้ drupal จากตัวยอย่างในเว็บมันใช้กับ drupal5 ไม่ได้ก็เลยหาวิธีปรับๆจากเว็บอื่นๆก็เจอ comment จากเว็บนี้เขาได้แก้ไว้ ก็เลยเอามาปรับปรุงกับการทำให้มัน regiseter user ใหม่เข้าไปได้ โค้ดที่ได้ก็เป็นแบบนี้

อ่อก่อนที่จะดูโค้ด ใครที่ยังไม่ได้ลง curl extension ให้ลงก่อน ถ้าเป็น ubuntu ก็ให้สั่ง

sudo apt-get install php5-curl

แล้วก็เพิ่ม extension=php_curl.so ลงไปที่ไฟล์ /etc/php5/apache2/php.ini

ส่วนโค้ดที่ทดสอบ user register มีดังนี้


<?php

// ***********************************************

// ********* Login into drupal

// ***********************************************

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,”http://localhost/drupal/node&destination=node);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_USERAGENT, ‘PHP script);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, “cookie.txt);
curl_setopt($ch, CURLOPT_COOKIEFILE, ‘cookie.txt);
curl_setopt($ch, CURLOPT_POST, 1);
//admin login
curl_setopt($ch, CURLOPT_POSTFIELDS, “name=username&pass=password&form_id=user_login_block);
ob_start(); // prevent any output
curl_exec ($ch); // execute the curl command
ob_end_clean(); // stop preventing output
curl_close ($ch);
unset($ch);

// ***********************************************
// ********** get page create form (necesary for getting token)
// ***********************************************

$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_COOKIEFILE, “cookie.txt);
curl_setopt($ch, CURLOPT_URL,”http://localhost/drupal/admin/user/user/create);
$buf3 = curl_exec ($ch);
curl_close ($ch);

// find form token
preg_match(@edit-user-register-form-token” *value=”([^"]*)”@‘,$buf3,$matches);
$token=$matches[1
echo "token:$token\n";

// ***********************************************
// ********* post form, using token
// ***********************************************

$ch = curl_init();
curl_setopt($ch,CURLOPT_HEADER, 1);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch,CURLOPT_COOKIEFILE,"cookie.txt");
curl_setopt($ch,CURLOPT_URL,"http://localhost/drupal/admin/user/user/create");
curl_setopt($ch,CURLOPT_POST,1);
curl_setopt($ch,CURLOPT_POSTFIELDS,"name=newuser&mail=email@gmail.com&
pass[pass1]=password&pass[pass2]=password&status=1&notify=0&
form_id=user_register&form_token=$token);
$buf2 = curl_exec ($ch);
curl_close ($ch);
?>

Blogged with Flock

Tags: , ,

1 comment พฤศจิกายน 21, 2007


 

พฤศจิกายน 2007
พฤ อา
« ต.ค.   ธ.ค. »
 1234
567891011
12131415161718
19202122232425
2627282930  

ความเห็นล่าสุด

etcpe9 on Validate Form ด้วย LiveVa…
BraiN on ประสบการณ์ จับใบดำใบแดง
pphetra on Tree In Haskell
phondanai on Tree In Haskell
ืneogravity on About

Meta

Blogroll

cpe9

Linux

programming