【问题标题】:Joomla PHP how to programatically be taken to Edit Profile pageJoomla PHP如何以编程方式被带到编辑个人资料页面
【发布时间】:2018-03-05 13:10:07
【问题描述】:

强制用户进入编辑个人资料页面的最佳方式是什么。

这是我的代码:

$user = JFactory::getUser();
if ($user->email === "fakemail@spam-disposable-domain.com") {
//Redirect user to the edit profile page forcing them to change their email.
//index.php?option=com_users&view=profile&layout=edit
}

我想重定向电子邮件匹配的用户,以强制他们编辑他们的个人资料,正确的方式将他们重定向到编辑个人资料页面是我需要知道的。

【问题讨论】:

  • 通过@ 拆分电子邮件并检查域?用户header() 将用户发送到页面?
  • @IsThisJavascript 所以一个简单的位置重定向就可以了,没有我应该使用的重定向 joomla 功能.....
  • 我不知道 joomla 框架,但因为它是 php; header("Location: path/to/page"); exit(); 仍然可以工作
  • 应该有类似$app->redirect的东西。试试谷歌。
  • @Xatenev 感谢您提供这些信息,您知道我是否需要额外的逻辑,或者当他们更改电子邮件时,我是否会遇到使用重定向代码保存编辑配置文件表单的问题,我担心它可能无法保存到期到重定向逻辑。

标签: php joomla


【解决方案1】:

使用应用程序对象的redirect()方法:

$app  = JFactory::getApplication();
$user = JFactory::getUser();

if ($user->email === "fakemail@spam-disposable-domain.com")
{
    $app->enqueueMessage('Please change your email address!');
    $app->redirect(
        JRoute::_(
            'index.php?option=com_users&view=profile&layout=edit'
        )
    );
}

【讨论】:

  • 谢谢@nibra,当它允许我时,我会将它标记为答案,我还想问我在一个自定义插件中运行它,该插件在每个页面视图上执行/加载“公共函数 onAfterInitialise() { " 我想知道这段代码是否还能让我保存编辑配置文件表单,或者它是否会在用户更改电子邮件之前执行重定向。
  • 在个人资料页面上,代码将产生一个(无休止的)循环。您不应该在目标 URL 上使用它。
  • 谢谢@nibra,我能够将您的解决方案标记为答案,并且我刚刚提出了一个新问题,将代码作为示例发布,因为我遇到了无限循环问题,因为我无法制作该代码仅在用户不在 com_users 组件页面上时运行,希望您能看到我在那里做错了什么。
猜你喜欢
  • 2012-09-30
  • 2012-09-29
  • 1970-01-01
  • 2019-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多