Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mediawiki—我想检查用户是否在创建的页面中登录以进行更改_Php_Mediawiki - Fatal编程技术网

Php mediawiki—我想检查用户是否在创建的页面中登录以进行更改

Php mediawiki—我想检查用户是否在创建的页面中登录以进行更改,php,mediawiki,Php,Mediawiki,在我的本地网站中,我使用mediawiki模板创建了许多页面,任何人都可以看到该页面,但我想为编辑页面添加一个链接。我想这样做“如果用户已经登录,然后编辑页面,如果没有登录,然后当点击该链接,然后页面重定向到登录页面,并在用户登录后编辑页面” (可以将模板中的会话值用于检查if条件,因为我计划使用if条件,…) 如果有任何其他解决方案,那么也给我您必须编写一个,检查用户是否登录(没有内置的方法来检查)。编写这样的扩展非常简单(见下文),但是请注意,这使得不可能在使用解析器函数的地方缓存页面,从而

在我的本地网站中,我使用mediawiki模板创建了许多页面,任何人都可以看到该页面,但我想为编辑页面添加一个链接。我想这样做“如果用户已经登录,然后编辑页面,如果没有登录,然后当点击该链接,然后页面重定向到登录页面,并在用户登录后编辑页面”

(可以将模板中的会话值用于检查if条件,因为我计划使用if条件,…)

如果有任何其他解决方案,那么也给我

您必须编写一个,检查用户是否登录(没有内置的方法来检查)。编写这样的扩展非常简单(见下文),但是请注意,这使得不可能在使用解析器函数的地方缓存页面,从而使页面加载速度大大降低。如果您需要在常规内容页面上执行此操作,则加载页面内容后修改页面内容的前端(javascript)解决方案很可能是更好的选择。无论如何,这里有一个可能的解决方案:

$wgHooks['ParserFirstCallInit'][] = 'efLoggedinParserFunction_Setup';

function efLoggedinParserFunction_Setup( &$parser ) {
    $parser->setFunctionHook( 'loggedin', 'efLoggedinParserFunction_Render' );
    return true;
}

function efLoggedinParserFunction_Magic( &$magicWords, $langCode ) {
    $magicWords['loggedin'] = array( 0, 'loggedin' );
    return true;
}

function efLoggedinParserFunction_Render( $parser) {
    $res = $parser->getUser()->isLoggedIn(); 
return array( $res, 'noparse' => false);
}
这将为您提供一个解析器函数
{{{loggedin}
,该函数返回
true
false
,以便您可以编写例如
{{ifeq:{{{loggedin}}true}欢迎,登录用户!}

请注意,我根本没有测试这段代码