本文整理汇总了PHP中WebRequest::detectProtocol方法的典型用法代码示例。如果您正苦于以下问题:PHP WebRequest::detectProtocol方法的具体用法?PHP WebRequest::detectProtocol怎么用?PHP WebRequest::detectProtocol使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WebRequest
的用法示例。
在下文中一共展示了WebRequest::detectProtocol方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: onSpecialPageBeforeExecute
/**
* Invocation of hook SpecialPageBeforeExecute
*
* We use this hook to ensure that login/account creation pages
* are redirected to HTTPS if they are not accessed via HTTPS and
* $wgSecureLogin == true - but only when using the
* mobile site.
*
* @param SpecialPage $special
* @param string $subpage
* @return bool
*/
public static function onSpecialPageBeforeExecute(SpecialPage $special, $subpage)
{
$mobileContext = MobileContext::singleton();
$isMobileView = $mobileContext->shouldDisplayMobileView();
$context = $special->getContext();
$out = $context->getOutput();
$secureLogin = $context->getConfig()->get('SecureLogin');
$request = $special->getContext()->getRequest();
$skin = $out->getSkin()->getSkinName();
$name = $special->getName();
// Ensure desktop version of Special:Preferences page gets mobile targeted modules
// FIXME: Upstream to core (?)
if ($skin === 'minerva') {
if ($name === 'Preferences') {
$out->addModules('skins.minerva.special.preferences.scripts');
}
// Add default warning message to Special:UserLogin and Special:UserCreate
// if no warning message set.
if ($name === 'Userlogin' && !$request->getVal('warning', null) && !$context->getUser()->isLoggedIn()) {
$request->setVal('warning', 'mobile-frontend-generic-login-new');
}
}
if ($isMobileView) {
if ($name === 'Search') {
$out->addModuleStyles('skins.minerva.special.search.styles');
} elseif ($name === 'Userlogin') {
$out->addModuleStyles('skins.minerva.special.userlogin.styles');
$out->addModules('mobile.special.userlogin.scripts');
// make sure we're on https if we're supposed to be and currently aren't.
// most of this is lifted from https redirect code in SpecialUserlogin::execute()
// also, checking for 'https' in $wgServer is a little funky, but this is what
// is done on the WMF cluster (see config in CommonSettings.php)
if ($secureLogin && WebRequest::detectProtocol() != 'https') {
// get the https url and redirect
$query = $special->getContext()->getRequest()->getQueryValues();
if (isset($query['title'])) {
unset($query['title']);
}
$url = $mobileContext->getMobileUrl($special->getFullTitle()->getFullURL($query), true);
$special->getContext()->getOutput()->redirect($url);
}
}
}
return true;
}
示例2: wfDeprecated
// Add a new log type
$wgLogTypes[] = 'newusers';
$wgLogNames['newusers'] = 'newuserlogpage';
$wgLogHeaders['newusers'] = 'newuserlogpagetext';
$wgLogActionsHandlers['newusers/newusers'] = 'NewUsersLogFormatter';
$wgLogActionsHandlers['newusers/create'] = 'NewUsersLogFormatter';
$wgLogActionsHandlers['newusers/create2'] = 'NewUsersLogFormatter';
$wgLogActionsHandlers['newusers/byemail'] = 'NewUsersLogFormatter';
$wgLogActionsHandlers['newusers/autocreate'] = 'NewUsersLogFormatter';
}
if ($wgPageLanguageUseDB) {
$wgLogTypes[] = 'pagelang';
$wgLogActionsHandlers['pagelang/pagelang'] = 'PageLangLogFormatter';
}
if ($wgCookieSecure === 'detect') {
$wgCookieSecure = WebRequest::detectProtocol() === 'https';
}
if ($wgProfileOnly) {
$wgDebugLogGroups['profileoutput'] = $wgDebugLogFile;
$wgDebugLogFile = '';
}
// Backwards compatibility with old password limits
if ($wgMinimalPasswordLength !== false) {
$wgPasswordPolicy['policies']['default']['MinimalPasswordLength'] = $wgMinimalPasswordLength;
}
if ($wgMaximalPasswordLength !== false) {
$wgPasswordPolicy['policies']['default']['MaximalPasswordLength'] = $wgMaximalPasswordLength;
}
// Backwards compatibility warning
if (!$wgSessionsInObjectCache && !$wgSessionsInMemcached) {
wfDeprecated('$wgSessionsInObjectCache = false', '1.27');
示例3: getLoginUrl
/**
* Prepares a url to the Special:UserLogin with query parameters,
* taking into account $wgSecureLogin
* @param array $query
* @return string
*/
public function getLoginUrl($query)
{
if ($this->isMobileMode) {
// FIXME: Does mobile really need special casing here?
$secureLogin = $this->getConfig()->get('SecureLogin');
if (WebRequest::detectProtocol() != 'https' && $secureLogin) {
$loginUrl = SpecialPage::getTitleFor('Userlogin')->getFullURL($query);
return $this->mobileContext->getMobileUrl($loginUrl, $secureLogin);
}
return SpecialPage::getTitleFor('Userlogin')->getLocalURL($query);
} else {
return SpecialPage::getTitleFor('Userlogin')->getFullURL($query);
}
}
示例4: mainLoginForm
//.........这里部分代码省略.........
$returnto = '&returnto=' . wfUrlencode($this->mReturnTo);
if ($this->mReturnToQuery !== '') {
$returnto .= '&returntoquery=' . wfUrlencode($this->mReturnToQuery);
}
$q .= $returnto;
$linkq .= $returnto;
}
# Don't show a "create account" link if the user can't.
if ($this->showCreateOrLoginLink($user)) {
# Pass any language selection on to the mode switch link
if ($wgLoginLanguageSelector && $this->mLanguage) {
$linkq .= '&uselang=' . $this->mLanguage;
}
if (!$this->mShowVForm) {
$link = Html::element('a', array('href' => $titleObj->getLocalURL($linkq)), $this->msg($linkmsg . 'link')->text());
# Calling either 'gotaccountlink' or 'nologinlink'
$template->set('link', $this->msg($linkmsg)->rawParams($link)->parse());
} else {
// Supply URL, login template creates the button.
// (The template 'link' key, passed above, is obsolete in the VForm design.)
$template->set('createOrLoginHref', $titleObj->getLocalURL($linkq));
}
} else {
$template->set('link', '');
}
// Decide if we default stickHTTPS on
if ($wgSecureLoginDefaultHTTPS && $this->mAction != 'submitlogin' && !$this->mLoginattempt) {
$this->mStickHTTPS = true;
}
$resetLink = $this->mType == 'signup' ? null : is_array($wgPasswordResetRoutes) && in_array(true, array_values($wgPasswordResetRoutes));
$template->set('header', '');
$template->set('skin', $this->getSkin());
$template->set('name', $this->mUsername);
$template->set('password', $this->mPassword);
$template->set('retype', $this->mRetype);
$template->set('createemailset', $this->mCreateaccountMail);
$template->set('email', $this->mEmail);
$template->set('realname', $this->mRealName);
$template->set('domain', $this->mDomain);
$template->set('reason', $this->mReason);
$template->set('action', $titleObj->getLocalURL($q));
$template->set('message', $msg);
$template->set('messagetype', $msgtype);
$template->set('createemail', $wgEnableEmail && $user->isLoggedIn());
$template->set('userealname', !in_array('realname', $wgHiddenPrefs));
$template->set('useemail', $wgEnableEmail);
$template->set('emailrequired', $wgEmailConfirmToEdit);
$template->set('emailothers', $wgEnableUserEmail);
$template->set('canreset', $wgAuth->allowPasswordChange());
$template->set('resetlink', $resetLink);
$template->set('canremember', $wgCookieExpiration > 0);
$template->set('usereason', $user->isLoggedIn());
$template->set('remember', $user->getOption('rememberpassword') || $this->mRemember);
$template->set('cansecurelogin', $wgSecureLogin === true);
$template->set('stickHTTPS', $this->mStickHTTPS);
if ($this->mType == 'signup') {
if (!self::getCreateaccountToken()) {
self::setCreateaccountToken();
}
$template->set('token', self::getCreateaccountToken());
} else {
if (!self::getLoginToken()) {
self::setLoginToken();
}
$template->set('token', self::getLoginToken());
}
# Prepare language selection links as needed
if ($wgLoginLanguageSelector) {
$template->set('languages', $this->makeLanguageSelector());
if ($this->mLanguage) {
$template->set('uselang', $this->mLanguage);
}
}
$template->set('secureLoginUrl', $this->mSecureLoginUrl);
// Use loginend-https for HTTPS requests if it's not blank, loginend otherwise
// Ditto for signupend. New forms use neither.
$usingHTTPS = WebRequest::detectProtocol() == 'https';
$loginendHTTPS = $this->msg('loginend-https');
$signupendHTTPS = $this->msg('signupend-https');
if ($usingHTTPS && !$loginendHTTPS->isBlank()) {
$template->set('loginend', $loginendHTTPS->parse());
} else {
$template->set('loginend', $this->msg('loginend')->parse());
}
if ($usingHTTPS && !$signupendHTTPS->isBlank()) {
$template->set('signupend', $signupendHTTPS->parse());
} else {
$template->set('signupend', $this->msg('signupend')->parse());
}
// Give authentication and captcha plugins a chance to modify the form
$wgAuth->modifyUITemplate($template, $this->mType);
if ($this->mType == 'signup') {
wfRunHooks('UserCreateForm', array(&$template));
} else {
wfRunHooks('UserLoginForm', array(&$template));
}
$out->disallowUserJs();
// just in case...
$out->addTemplate($template);
}
示例5: wfExpandUrl
/**
* Expand a potentially local URL to a fully-qualified URL. Assumes $wgServer
* is correct.
*
* The meaning of the PROTO_* constants is as follows:
* PROTO_HTTP: Output a URL starting with http://
* PROTO_HTTPS: Output a URL starting with https://
* PROTO_RELATIVE: Output a URL starting with // (protocol-relative URL)
* PROTO_CURRENT: Output a URL starting with either http:// or https:// , depending on which protocol was used for the current incoming request
* PROTO_CANONICAL: For URLs without a domain, like /w/index.php , use $wgCanonicalServer. For protocol-relative URLs, use the protocol of $wgCanonicalServer
* PROTO_INTERNAL: Like PROTO_CANONICAL, but uses $wgInternalServer instead of $wgCanonicalServer
*
* @todo this won't work with current-path-relative URLs
* like "subdir/foo.html", etc.
*
* @param $url String: either fully-qualified or a local path + query
* @param $defaultProto Mixed: one of the PROTO_* constants. Determines the protocol to use if $url or $wgServer is protocol-relative
* @return string Fully-qualified URL
*/
function wfExpandUrl($url, $defaultProto = PROTO_CURRENT)
{
global $wgServer, $wgCanonicalServer, $wgInternalServer;
$serverUrl = $wgServer;
if ($defaultProto === PROTO_CANONICAL) {
$serverUrl = $wgCanonicalServer;
}
// Make $wgInternalServer fall back to $wgServer if not set
if ($defaultProto === PROTO_INTERNAL && $wgInternalServer !== false) {
$serverUrl = $wgInternalServer;
}
if ($defaultProto === PROTO_CURRENT) {
$defaultProto = WebRequest::detectProtocol() . '://';
}
// Analyze $serverUrl to obtain its protocol
$bits = wfParseUrl($serverUrl);
$serverHasProto = $bits && $bits['scheme'] != '';
if ($defaultProto === PROTO_CANONICAL || $defaultProto === PROTO_INTERNAL) {
if ($serverHasProto) {
$defaultProto = $bits['scheme'] . '://';
} else {
// $wgCanonicalServer or $wgInternalServer doesn't have a protocol. This really isn't supposed to happen
// Fall back to HTTP in this ridiculous case
$defaultProto = PROTO_HTTP;
}
}
$defaultProtoWithoutSlashes = substr($defaultProto, 0, -2);
if (substr($url, 0, 2) == '//') {
return $defaultProtoWithoutSlashes . $url;
} elseif (substr($url, 0, 1) == '/') {
// If $serverUrl is protocol-relative, prepend $defaultProtoWithoutSlashes, otherwise leave it alone
return ($serverHasProto ? '' : $defaultProtoWithoutSlashes) . $serverUrl . $url;
} else {
return $url;
}
}
示例6: mainLoginForm
//.........这里部分代码省略.........
if ($this->mType == 'signup') {
$template = new UsercreateTemplate();
$q = 'action=submitlogin&type=signup';
$linkq = 'type=login';
$linkmsg = 'gotaccount';
} else {
$template = new UserloginTemplate();
$q = 'action=submitlogin&type=login';
$linkq = 'type=signup';
$linkmsg = 'nologin';
}
if (!empty($this->mReturnTo)) {
$returnto = '&returnto=' . wfUrlencode($this->mReturnTo);
if (!empty($this->mReturnToQuery)) {
$returnto .= '&returntoquery=' . wfUrlencode($this->mReturnToQuery);
}
$q .= $returnto;
$linkq .= $returnto;
}
# Don't show a "create account" link if the user can't
if ($this->showCreateOrLoginLink($user)) {
# Pass any language selection on to the mode switch link
if ($wgLoginLanguageSelector && $this->mLanguage) {
$linkq .= '&uselang=' . $this->mLanguage;
}
$link = Html::element('a', array('href' => $titleObj->getLocalURL($linkq)), $this->msg($linkmsg . 'link')->text());
# Calling either 'gotaccountlink' or 'nologinlink'
$template->set('link', $this->msg($linkmsg)->rawParams($link)->parse());
} else {
$template->set('link', '');
}
$resetLink = $this->mType == 'signup' ? null : is_array($wgPasswordResetRoutes) && in_array(true, array_values($wgPasswordResetRoutes));
$template->set('header', '');
$template->set('name', $this->mUsername);
$template->set('password', $this->mPassword);
$template->set('retype', $this->mRetype);
$template->set('email', $this->mEmail);
$template->set('realname', $this->mRealName);
$template->set('domain', $this->mDomain);
$template->set('reason', $this->mReason);
$template->set('action', $titleObj->getLocalURL($q));
$template->set('message', $msg);
$template->set('messagetype', $msgtype);
$template->set('createemail', $wgEnableEmail && $user->isLoggedIn());
$template->set('userealname', !in_array('realname', $wgHiddenPrefs));
$template->set('useemail', $wgEnableEmail);
$template->set('emailrequired', $wgEmailConfirmToEdit);
$template->set('emailothers', $wgEnableUserEmail);
$template->set('canreset', $wgAuth->allowPasswordChange());
$template->set('resetlink', $resetLink);
$template->set('canremember', $wgCookieExpiration > 0);
$template->set('usereason', $user->isLoggedIn());
$template->set('remember', $user->getOption('rememberpassword') || $this->mRemember);
$template->set('cansecurelogin', $wgSecureLogin === true);
$template->set('stickHTTPS', $this->mStickHTTPS);
if ($this->mType == 'signup') {
if (!self::getCreateaccountToken()) {
self::setCreateaccountToken();
}
$template->set('token', self::getCreateaccountToken());
} else {
if (!self::getLoginToken()) {
self::setLoginToken();
}
$template->set('token', self::getLoginToken());
}
# Prepare language selection links as needed
if ($wgLoginLanguageSelector) {
$template->set('languages', $this->makeLanguageSelector());
if ($this->mLanguage) {
$template->set('uselang', $this->mLanguage);
}
}
// Use loginend-https for HTTPS requests if it's not blank, loginend otherwise
// Ditto for signupend
$usingHTTPS = WebRequest::detectProtocol() == 'https';
$loginendHTTPS = $this->msg('loginend-https');
$signupendHTTPS = $this->msg('signupend-https');
if ($usingHTTPS && !$loginendHTTPS->isBlank()) {
$template->set('loginend', $loginendHTTPS->parse());
} else {
$template->set('loginend', $this->msg('loginend')->parse());
}
if ($usingHTTPS && !$signupendHTTPS->isBlank()) {
$template->set('signupend', $signupendHTTPS->parse());
} else {
$template->set('signupend', $this->msg('signupend')->parse());
}
// Give authentication and captcha plugins a chance to modify the form
$wgAuth->modifyUITemplate($template, $this->mType);
if ($this->mType == 'signup') {
wfRunHooks('UserCreateForm', array(&$template));
} else {
wfRunHooks('UserLoginForm', array(&$template));
}
$out = $this->getOutput();
$out->disallowUserJs();
// just in case...
$out->addTemplate($template);
}
示例7: array
$deletedHashLevel = $wgHashedUploadDirectory ? 3 : 0;
}
$wgLocalFileRepo = array('class' => 'LocalRepo', 'name' => 'local', 'directory' => $wgUploadDirectory, 'scriptDirUrl' => $wgScriptPath, 'scriptExtension' => $wgScriptExtension, 'url' => $wgUploadBaseUrl ? $wgUploadBaseUrl . $wgUploadPath : $wgUploadPath, 'hashLevels' => $wgHashedUploadDirectory ? 2 : 0, 'thumbScriptUrl' => $wgThumbnailScriptPath, 'transformVia404' => !$wgGenerateThumbnailOnParse, 'deletedDir' => $wgDeletedDirectory, 'deletedHashLevels' => $deletedHashLevel);
}
/**
* Initialise shared repo from backwards-compatible settings
*/
if ($wgUseSharedUploads) {
if ($wgSharedUploadDBname) {
$wgForeignFileRepos[] = array('class' => 'ForeignDBViaLBRepo', 'name' => 'shared', 'directory' => $wgSharedUploadDirectory, 'url' => $wgSharedUploadPath, 'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0, 'thumbScriptUrl' => $wgSharedThumbnailScriptPath, 'transformVia404' => !$wgGenerateThumbnailOnParse, 'dbType' => $wgDBtype, 'dbServer' => $wgDBserver, 'dbUser' => $wgDBuser, 'dbPassword' => $wgDBpassword, 'dbName' => $wgSharedUploadDBname, 'dbFlags' => ($wgDebugDumpSql ? DBO_DEBUG : 0) | DBO_DEFAULT, 'tablePrefix' => $wgSharedUploadDBprefix, 'hasSharedCache' => $wgCacheSharedUploads, 'descBaseUrl' => $wgRepositoryBaseUrl, 'fetchDescription' => $wgFetchCommonsDescriptions, 'wiki' => $wgSharedUploadDBname);
} else {
$wgForeignFileRepos[] = array('class' => 'FileRepo', 'name' => 'shared', 'directory' => $wgSharedUploadDirectory, 'url' => $wgSharedUploadPath, 'hashLevels' => $wgHashedSharedUploadDirectory ? 2 : 0, 'thumbScriptUrl' => $wgSharedThumbnailScriptPath, 'transformVia404' => !$wgGenerateThumbnailOnParse, 'descBaseUrl' => $wgRepositoryBaseUrl, 'fetchDescription' => $wgFetchCommonsDescriptions);
}
}
if ($wgUseInstantCommons) {
$wgForeignFileRepos[] = array('class' => 'ForeignAPIRepo', 'name' => 'wikimediacommons', 'apibase' => WebRequest::detectProtocol() === 'https' ? 'https://commons.wikimedia.org/w/api.php' : 'http://commons.wikimedia.org/w/api.php', 'hashLevels' => 2, 'fetchDescription' => true, 'descriptionCacheExpiry' => 43200, 'apiThumbCacheExpiry' => 86400);
}
/*
* Add on default file backend config for file repos.
* FileBackendGroup will handle initializing the backends.
*/
if (!isset($wgLocalFileRepo['backend'])) {
$wgLocalFileRepo['backend'] = $wgLocalFileRepo['name'] . '-backend';
}
foreach ($wgForeignFileRepos as &$repo) {
if (!isset($repo['directory']) && $repo['class'] === 'ForeignAPIRepo') {
$repo['directory'] = $wgUploadDirectory;
// b/c
}
if (!isset($repo['backend'])) {
$repo['backend'] = $repo['name'] . '-backend';
示例8: function
// In case the MediaWiki default changed, T44594
# XFF log for vandal tracking
$wgExtensionFunctions[] = function () {
global $wmfUdp2logDest, $wgRequest;
if (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'POST') {
$uri = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$xff = isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : '';
$logger = LoggerFactory::getInstance('xff');
// TODO: it would be nice to log this as actual structured data
// instead of this ad-hoc tab delimited format
$logger->info(gmdate('r') . "\t" . "{$uri}\t" . "{$xff}, {$_SERVER['REMOTE_ADDR']}\t" . (isset($_REQUEST['wpSave']) && $_REQUEST['wpSave'] ? 'save' : ''));
if ($wgRequest->getIP() === '127.0.0.1') {
$logger = LoggerFactory::getInstance('localhost');
// TODO: it would be nice to log this as actual structured data
// instead of this ad-hoc tab delimited format
$logger->info(gmdate('r') . "\t" . wfHostname() . "\t{$xff}, {$_SERVER['REMOTE_ADDR']}\t" . WebRequest::detectProtocol());
}
}
};
// T26313, turn off minordefault on enwiki
if ($wgDBname == 'enwiki') {
$wgHiddenPrefs[] = 'minordefault';
}
if ($wmgUseFooterContactLink) {
$wgHooks['SkinTemplateOutputPageBeforeExec'][] = function ($sk, &$tpl) {
$contactLink = Html::element('a', array('href' => $sk->msg('contact-url')->escaped()), $sk->msg('contact')->text());
$tpl->set('contact', $contactLink);
$tpl->data['footerlinks']['places'][] = 'contact';
return true;
};
}