我似乎无法从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的,从全新安装。 修改矿井,使他们平等的。
没有什么帮助。
有什么想法吗?
很好地完成寻找原因 - 我几个星期左右前就有这种完全相同的问题。
现在,其原因:
Drupal的会话由ID号相连(你可以在数据库会话表中看到这一点,如果你看一下)给用户。 Drupal的也有它自己的会话处理功能,以及其中的一个是检查是否当前会话与一个有效的用户帐户相关联 - 与为匿名用户,即用户0 - (它不一样,如果多个会话关系每用户开放 - 这当然是有那么多匿名用户访问您的网站发生了什么)。
如果Drupal没有找到当前会话的有效用户,则会话被重新再生 - 这意味着以前的信息丢失。
编辑:
最近的一项评论,促使我多一点深度添加到答案,因为我已经因为发现该错误的最可能的原因。
基本上,它是为匿名用户使用ID 0。 如果插入一个0值到MySQL中的自动递增的字段,该值将成为实际序列中的下一个可用值(因此,具有自动递增字段的表设置为10将插入在11,而不是0)。
我们打的问题,因为我们使用MySQL的出口和发展过程中导入备份转储。
我们只是解决了它。 显然,用户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了,虽然。
我无法得到的消息显示了做,即使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']);
}
?>
希望可以帮助别人。
我觉得这同样很长一段时间,这会给你安装了影响这个你可以在控制台中,如果你使用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);
drupal_set_message($msg, $type = 'status');
允许您设置一个消息时,它会自动下一个(或电流)页面的用户访问上显示。
请参阅该文档: http://api.drupal.org/api/function/drupal_set_message/6