วันนี้ลองหาวิธีที่จะ เขียนโค้ด 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¬ify=0&
form_id=user_register&form_token=$token“);
$buf2 = curl_exec ($ch);
curl_close ($ch);
?>
Blogged with Flock
Tags: drupal, curl, userregister
add drupal user with user_save() « IPorsut กล่าว,
พฤศจิกายน 27, 2007 @ 9:10 pm
[...] at 9:10 pm | In Uncategorized | จากครั้งก่อนที่ผมหาทาง เพิ่ม user ให้กับ drupal ผ่านทาง curl ซึ่งมันก็ทำงานได้ [...]