【问题标题】:Script to add user to MediaWiki将用户添加到 MediaWiki 的脚本
【发布时间】:2009-05-29 23:56:55
【问题描述】:

我正在尝试编写一个在 MediaWiki 中创建用户的脚本,以便我可以运行批处理作业来导入一系列用户。

我正在使用 mediawiki-1.12.0。

我从论坛获得了这段代码,但它看起来不适用于 1.12(它适用于 1.13)

$name = 'Username'; #Username (MUST start with a capital letter)
$pass = 'password'; #Password (plaintext, will be hashed later down)
$email = 'email';   #Email (automatically gets confirmed after the creation process)
$path = "/path/to/mediawiki";
putenv( "MW_INSTALL_PATH={$path}" );
require_once( "{$path}/includes/WebStart.php" );
$pass = User::crypt( $pass );
$user = User::createNew( $name, array( 'password' => $pass, 'email' => $email ) );
$user->confirmEmail();
$user->saveSettings();  
$ssUpdate = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
$ssUpdate->doUpdate();

谢谢!

【问题讨论】:

    标签: php mediawiki


    【解决方案1】:

    maintenance/ 中有一个 createAndPromote 脚本,用于创建用户帐户并授予管理员权限。您可以对此进行调整以删除权限部分。

    或者,您可以查看ImportUsers 扩展名。

    【讨论】:

      【解决方案2】:

      我在 Mediawiki 1.7 上使用过它,它对我来说效果很好:

      #!/usr/bin/php
      ## Add a user to Mediawiki
      
      <?php
      
          $domain = 'example.com';
          $mwpath = '/docs/www-wiki';
      
          if ($argc < 3) {
              die("Missing arguments.\n"
                 ."Usage: $0 USER PASSWORD\n");
          }
          $user = $argv[1];
          $pass = $argv[2];
      
          print "Add user $user with password $pass [y/N]?\n";
          $ans = fgets(STDIN,256);
          if (!  preg_match('/^[yY]/', $ans) ) {
              print "Canceled.\n";
              exit;
          }
      
          $user = ucfirst(strtolower($user)); // maybe unneeded, because handled in MW functions?
      
      
          # Adapted from http://www.mwusers.com/forums/showthread.php?9788-Create-new-user-in-database&p=42931&viewfull=1#post42931
      
          $path = $mwpath;
          putenv("MW_INSTALL_PATH={$path}");
      
          #require_once ("{$path}/includes/WebStart.php"); // for version >= 1.14 ?
      
          # My version 1.7 doesn't have WebStart.php.
          # It seems to work by including the following lines found in index.php
          # Some are probably not needed, but I don't want to do more testing
          define( 'MEDIAWIKI', true );
          require_once( './includes/Defines.php' );
          require_once( './LocalSettings.php' );
          require_once( 'includes/Setup.php' );
          require_once( "includes/Wiki.php" );
          $mediaWiki = new MediaWiki();
      
      
          $mwuser=User::newFromName($user);
      
          if (! is_object($mwuser)) {
              die("Invalid user!\n");
          }
      
          $mwuser->addToDatabase(); // don't we need a return value to check?
          $mwuser->setPassword( $pass );
          $mwuser->setEmail( strtolower($user) . '@' . $domain );
          $mwuser->confirmEmail();
      
          #$mwuser->setRealName( $_POST["nome"] );
          #$mwuser->addGroup($_POST["grupo"]);
      
          $mwuser->saveSettings(); // no return value?
          $ssUpdate = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
          $ssUpdate->doUpdate();
      ?>
      

      我猜你的问题也是在你的脚本中使用了 WebStart.php,而你的 Mediawiki 版本中不存在。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-13
        • 2012-02-05
        • 2020-11-09
        • 2017-07-26
        • 1970-01-01
        • 1970-01-01
        • 2016-07-06
        • 2013-02-11
        相关资源
        最近更新 更多