【问题标题】:PHP Cannot redeclare redirect()PHP无法重新声明redirect()
【发布时间】:2015-11-24 19:10:41
【问题描述】:

我让 Laravel 运行了一个应用程序,还有一个 PhpBB 论坛。我正在尝试检查用户是否使用此 PHP 函数登录,即\App\Helpers

<?php
namespace App\Helpers;

ini_set('display_startup_errors',1);
error_reporting(-1);
error_reporting(E_ALL);
ini_set('display_errors', 'On');

define('IN_PHPBB', true);
$phpbb_root_path = '/home/clashdata/public_html/forum/';
$phpEx = 'php';
include($phpbb_root_path . 'common.' . $phpEx);

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup();

function isLoggedIn(){
    global $user;
    if($user->data['is_registered']){
        return true;
    }else{
        return false;
    }
}

?>

我在我的 Laravel 控制器中使用此代码作为 if 语句。 if(phpbb::isLoggedIn()){

但输出是我在这里得到的:http://clashdata.tk/search/livesearch?clanname=clans&location=&trophies=0&minmembers=1&maxmembers=50&clanlevel=0

这是怎么发生的?我能做些什么来解决它?

【问题讨论】:

  • 看来您必须使用相同名称的功能。 Laravel 有一个名为redirect() 的函数,错误中明确说明了另一个函数。
  • @frz3993 相信我,我可以阅读。但我该怎么做才能解决它是我的问题。
  • 您可以重命名其中一个。
  • @frz3993 那会破坏整个系统,不是吗...
  • 我不熟悉 Laravel 和 phpbb,以及这些框架如何处理会话。如果两个加载的文件都具有相同名称的函数,那么它在 php 中是不允许的,您可能需要为每个框架编写代码来访问另一个框架的会话。或者你可以使用 Laravel_Auth_Bridge 之类的东西。

标签: php laravel phpbb phpbb3


【解决方案1】:

我不完全确定您当前使用的是哪个版本的 Laravel。5.2 分支(以及较旧的分支)在重定向函数周围有一个条件,它检查该函数是否已经存在。看来你删除了这部分。

回到你的问题: 我检查了两个重定向功能,如果您可以保存其中一个。看来,他们俩都不仅仅是一个愚蠢的重定向,我不确定是否可以将其中一个替换为另一个。我没有testet它,但是如果你想尝试它,你应该删除phpbb的重定向功能,因为这个功能部分是通过laraves重定向实现的。

由于我不确定您是否使用完整的电路板软件以及它们的哪些部分取决于重定向的特殊行为,所以我不能说保存,这会起作用。

如果您想要一个可行的解决方案,您可以执行以下技巧。重命名现有的重定向函数并创建自己的重定向代理函数,该函数调用 phpbb 或 laravel。但是如何决定应该调用哪个函数呢? debug_backtrace 是你的朋友。使用此函数,您可以确定调用函数的文件名,并知道该函数是从 phpbb 还是 laravel 调用的。

function redirect() {
    $args = func_get_args();
    $trace = debug_backtrace();
    $calling = $trace[1];
    if ($calling === NULL || strpos($calling['file'], 'laravel/framework/') !== false) {
        return call_user_func_array('redirect_laravel', $args);
    }
    return call_user_func_array('redirect_phpbb', $args);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    • 2013-08-21
    • 2023-04-02
    相关资源
    最近更新 更多