Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace mediawiki;
- // Start session
- session_start();
- /**
- * How to log in mediawiki using PHP cURL?
- * -------------------------------------------------
- *my mediawiki Prefix is my_wiki;
- *register a user name:test password:123456;
- *this file is deployed in mediawiki directory;
- */
- //set login username password which already in your mediawiki database
- $username = 'test';
- $password = '123456';
- //setup url
- $Root = 'localhost/mediawiki';
- $API_Location = "${Root}/api.php";
- //setup cookie
- $CookieFilePath = tempnam("/tmp", "TMP0");
- $expire = 60*60*24*14 + time();
- $CookiePrefix = 'my_wiki';
- $Domain = 'localhost';
- // set variables to use in curl_setopts
- $PostFields = "action=query&meta=tokens&type=login&format=json";
- // first http post to sign in to MediaWiki
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, "$API_Location");
- curl_setopt($ch, CURLOPT_TIMEOUT, 500);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array(
- 'Content-Type: application/x-www-form-urlencoded',
- 'Content-Length: ' .strlen($PostFields))
- );
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, "$PostFields");
- curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieFilePath);
- curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieFilePath);
- $Result = curl_exec($ch);
- if(curl_exec($ch) === false) echo '<br>Curl error: ' . curl_error($ch).'<br>';
- curl_close($ch); // curl closed
- $ResultSerialized = json_decode($Result,true);
- $Token = $ResultSerialized["query"]["tokens"]["logintoken"];
- // cookie must be set using session id from first response
- $_SESSION["logintoken"]=$Token;
- //How can I get sessionid?
- $sessionid=session_id();
- $_SESSION["sessionid"] =$sessionid;
- setcookie("${CookiePrefix}_Session",$sessionid , $expire, '/', $Domain);
- setcookie("${CookiePrefix}UserName",$username,$expire,'/',$Domain);
- setcookie("${CookiePrefix}Token", $_SESSION["logintoken"], $expire, '/', $Domain);
- // second http post to finish sign in
- $ch = curl_init();
- $PostFields="action=login&lgname=${username}&lgpassword=${password}&lgtoken=${Token}&format=json";
- curl_setopt($ch, CURLOPT_URL, "$API_Location");
- curl_setopt($ch, CURLOPT_TIMEOUT, 500);
- curl_setopt($ch, CURLOPT_HTTPHEADER, array(
- 'Content-Type: application/x-www-form-urlencoded',
- 'Content-Length: ' .strlen($PostFields))
- );
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, "$PostFields");
- curl_setopt($ch, CURLOPT_COOKIE, "${CookiePrefix}_session=$sessionid");
- curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieFilePath);
- curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieFilePath);
- $Result = curl_exec($ch);
- if(curl_exec($ch) === false) echo '<br>Curl error: ' . curl_error($ch).'<br>';
- curl_close($ch); // curl closed
- $ResultSerialized = json_decode($Result,true);
- // set persistent cookies
- //$LgToken = $ResultSerialized["query"]["tokens"]["logintoken"];
- $LgUserID = $ResultSerialized["login"]["lguserid"];
- $LgUserName = $ResultSerialized["login"]["lgusername"];
- $lgstatus=$ResultSerialized["login"]["result"];
- var_dump($lgstatus);
- setcookie("${CookiePrefix}UserName", $LgUserName, $expire, '/', $Domain);
- setcookie("${CookiePrefix}UserID", $LgUserID, $expire, '/', $Domain);
- //setcookie("${CookiePrefix}Token", $Token, $expire, '/', $Domain);
- // Delete cURL cookie
- unlink($CookieFilePath);
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement