Advertisement
Guest User

mediawiki login+Curl

a guest
May 18th, 2017
460
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.38 KB | None | 0 0
  1. <?php
  2. namespace mediawiki;
  3.  
  4.  
  5. // Start session
  6. session_start();
  7.  
  8. /**
  9.  * How to log in mediawiki using PHP cURL?
  10.  * -------------------------------------------------
  11.  *my mediawiki Prefix is my_wiki;
  12.  *register a user name:test password:123456;
  13.  *this file is deployed in mediawiki directory;
  14.  */
  15.  
  16. //set login username password which already in your mediawiki database
  17. $username = 'test';
  18. $password = '123456';
  19.  
  20. //setup url
  21. $Root = 'localhost/mediawiki';
  22. $API_Location = "${Root}/api.php";
  23.  
  24. //setup cookie
  25. $CookieFilePath = tempnam("/tmp", "TMP0");
  26. $expire = 60*60*24*14 + time();
  27. $CookiePrefix = 'my_wiki';
  28. $Domain = 'localhost';
  29.  
  30. // set variables to use in curl_setopts
  31. $PostFields = "action=query&meta=tokens&type=login&format=json";
  32.  
  33. // first http post to sign in to MediaWiki
  34. $ch = curl_init();
  35. curl_setopt($ch, CURLOPT_URL, "$API_Location");
  36. curl_setopt($ch, CURLOPT_TIMEOUT, 500);
  37. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  38.     'Content-Type: application/x-www-form-urlencoded',
  39.     'Content-Length: ' .strlen($PostFields))
  40. );
  41. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  42. curl_setopt($ch, CURLOPT_POST, 1);
  43. curl_setopt($ch, CURLOPT_POSTFIELDS, "$PostFields");
  44.  
  45. curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieFilePath);
  46. curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieFilePath);
  47.  
  48. $Result = curl_exec($ch);
  49. if(curl_exec($ch) === false) echo '<br>Curl error: ' . curl_error($ch).'<br>';
  50. curl_close($ch); // curl closed
  51.  
  52. $ResultSerialized = json_decode($Result,true);
  53. $Token = $ResultSerialized["query"]["tokens"]["logintoken"];
  54.  
  55. // cookie must be set using session id from first response
  56. $_SESSION["logintoken"]=$Token;
  57. //How can I get sessionid?
  58. $sessionid=session_id();
  59. $_SESSION["sessionid"] =$sessionid;
  60.  
  61. setcookie("${CookiePrefix}_Session",$sessionid , $expire, '/', $Domain);
  62. setcookie("${CookiePrefix}UserName",$username,$expire,'/',$Domain);
  63. setcookie("${CookiePrefix}Token", $_SESSION["logintoken"], $expire, '/', $Domain);
  64.  
  65. // second http post to finish sign in
  66. $ch = curl_init();
  67. $PostFields="action=login&lgname=${username}&lgpassword=${password}&lgtoken=${Token}&format=json";
  68. curl_setopt($ch, CURLOPT_URL, "$API_Location");
  69. curl_setopt($ch, CURLOPT_TIMEOUT, 500);
  70. curl_setopt($ch, CURLOPT_HTTPHEADER, array(
  71.        'Content-Type: application/x-www-form-urlencoded',
  72.         'Content-Length: ' .strlen($PostFields))
  73. );
  74. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  75. curl_setopt($ch, CURLOPT_POST, 1);
  76. curl_setopt($ch, CURLOPT_POSTFIELDS, "$PostFields");
  77. curl_setopt($ch, CURLOPT_COOKIE, "${CookiePrefix}_session=$sessionid");
  78.  
  79. curl_setopt($ch, CURLOPT_COOKIEJAR, $CookieFilePath);
  80. curl_setopt($ch, CURLOPT_COOKIEFILE, $CookieFilePath);
  81.  
  82. $Result = curl_exec($ch);
  83. if(curl_exec($ch) === false) echo '<br>Curl error: ' . curl_error($ch).'<br>';
  84. curl_close($ch); // curl closed
  85. $ResultSerialized = json_decode($Result,true);
  86.  
  87. // set persistent cookies
  88. //$LgToken = $ResultSerialized["query"]["tokens"]["logintoken"];
  89. $LgUserID = $ResultSerialized["login"]["lguserid"];
  90. $LgUserName = $ResultSerialized["login"]["lgusername"];
  91. $lgstatus=$ResultSerialized["login"]["result"];
  92. var_dump($lgstatus);
  93.  
  94. setcookie("${CookiePrefix}UserName", $LgUserName, $expire, '/', $Domain);
  95. setcookie("${CookiePrefix}UserID", $LgUserID, $expire, '/', $Domain);
  96. //setcookie("${CookiePrefix}Token", $Token, $expire, '/', $Domain);
  97.  
  98. // Delete cURL cookie
  99. unlink($CookieFilePath);
  100.  
  101. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement