的Drupal:drupal_set_message犯规显示消息(Drupal: drupal_se

2019-08-17 05:59发布

我似乎无法从drupal_set_message得到一条消息,当用户在我的网站注册。 我使用Drupal的6.14。

添加在user.module打印:

function user_register_submit($form, &$form_state) {
  ...
      if ($notify) {
        ...
      }
      else {
        drupal_set_message(t('Your password and further instructions have been sent to your e-mail address.'));
        print 'xxxxxx';
        $form_state['redirect'] = '';
        return;
      }
    }
    ...

}

它打印“XXXXX”;

var_dump的的$_SESSION变量给出了状态消息,这drupal_set_message犯规显示,所以看起来罚款也。

我已经卸载了我所有的模块,唯一的核心仍然是,现在使用加兰为主题。

此外,我已经安装了一个新的Drupal安装,并且有它给了我一个很好的状态消息。

然后,我比我的.htaccess和Drupal的,从全新安装。 修改矿井,使他们平等的。

没有什么帮助。

有什么想法吗?

Answer 1:

很好地完成寻找原因 - 我几个星期左右前就有这种完全相同的问题。

现在,其原因:

Drupal的会话由ID号相连(你可以在数据库会话表中看到这一点,如果你看一下)给用户。 Drupal的也有它自己的会话处理功能,以及其中的一个是检查是否当前会话与一个有效的用户帐户相关联 - 与为匿名用户,即用户0 - (它不一样,如果多个会话关系每用户开放 - 这当然是有那么多匿名用户访问您的网站发生了什么)。

如果Drupal没有找到当前会话的有效用户,则会话被重新再生 - 这意味着以前的信息丢失。

编辑:

最近的一项评论,促使我多一点深度添加到答案,因为我已经因为发现该错误的最可能的原因。

基本上,它是为匿名用户使用ID 0。 如果插入一个0值到MySQL中的自动递增的字段,该值将成为实际序列中的下一个可用值(因此,具有自动递增字段的表设置为10将插入在11,而不是0)。

我们打的问题,因为我们使用MySQL的出口和发展过程中导入备份转储。



Answer 2:

我们只是解决了它。 显然,用户0失踪,有人将其删除或某些模块做到了。 将其插入到我们再次得到了我们的信息数据库之后。

这是你必须做的:

INSERT INTO `users` (`uid`, `name`, `pass`, `mail`, `mode`, `sort`, `threshold`, `theme`, `signature`, `signature_format`, `created`, `access`, `login`, `status`, `timezone`, `language`, `picture`, `init`, `data`) VALUES
(0, '', '', '', 0, 0, 0, '', '', 0, 0, 0, 0, 0, NULL, '', '', '', NULL);

而在这之后将UID设置为0,因为UID是自动增量!

不知道如何仍与drupal_set_message messus了,虽然。



Answer 3:

另一个问题可能是你的主题不模板打印$消息。



Answer 4:

我无法得到的消息显示了做,即使theme_get_messages()或echo $消息等。

因此,我不得不从$ _SESSION [“消息”]得到它。

即:

<?php 
            // we aren't getting messages, get them manually
            if (isset($_SESSION['messages'])) {
                echo '<div class="messages">';
                foreach($_SESSION['messages'] as $type=>$messages) {
                    echo "<p class=\"$type\">".implode("</p><p class=\"$type\">", $messages)."</p>";
                }
                echo '</div>';
                unset($_SESSION['messages']);
            }

        ?>

希望可以帮助别人。



Answer 5:

我觉得这同样很长一段时间,这会给你安装了影响这个你可以在控制台中,如果你使用Linux的phpMyAdmin的使用这个代码o其他模块。

INSERT INTO `users` (`uid`, `name`, `pass`, `mail`, `theme`, `signature`, `signature_format`, `created`, `access`, `login`, `status`, `timezone`, `language`, `picture`, `init`, `data`) VALUES
(0, '', '', '', '', '', 0, 0, 0, 0, 0, NULL, '', '', '', NULL);


Answer 6:

drupal_set_message($msg, $type = 'status'); 允许您设置一个消息时,它会自动下一个(或电流)页面的用户访问上显示。

请参阅该文档: http://api.drupal.org/api/function/drupal_set_message/6



文章来源: Drupal: drupal_set_message doesnt display a message
标签: drupal