2009-10-03 42 views
6

Tôi dường như không nhận được thông báo từ drupal_set_message khi người dùng đăng ký trên trang web của tôi. Tôi đang sử dụng Drupal 6.14.Drupal: drupal_set_message không hiển thị thông báo

Thêm một bản in trong user.module:

It in 'xxxxx';

A var_dump của biến số $_SESSION cung cấp thông báo trạng thái, trong đó drupal_set_message không hiển thị, vì vậy cũng có vẻ tốt.

Tôi đã gỡ cài đặt tất cả các mô-đun của mình, chỉ còn lại phần lõi và sử dụng Garland ngay bây giờ làm chủ đề.

Hơn nữa, tôi đã cài đặt bản cài đặt Drupal mới và nó cung cấp cho tôi thông báo trạng thái tốt đẹp.

Sau đó, tôi đã so sánh .htaccess và Drupal, từ cài đặt mới. Sửa đổi mỏ để làm cho chúng bằng nhau.

Không có gì hữu ích.

Mọi suy nghĩ?

+0

Bạn vẫn nhận được thông báo trạng thái khác trên các trang/hoàn cảnh khác nhau? –

+0

Vui lòng đặt tệp page.tpl.php bằng . Hãy thử nó –

Trả lời

10

thực hiện tốt việc tìm nguyên nhân - Tôi đã gặp sự cố tương tự này một vài tuần trước đây.

Bây giờ, với lý do:

phiên Drupal được liên kết bởi số ID (bạn có thể thấy điều này trong bảng phiên trong cơ sở dữ liệu nếu bạn nhìn) cho người dùng. Drupal cũng có các chức năng xử lý phiên riêng và một trong số đó là kiểm tra xem phiên hiện tại có được kết hợp với tài khoản người dùng hợp lệ hay không và cho người dùng ẩn danh, đó là người dùng 0 - (không quan trọng nếu nhiều phiên được mở cho mỗi người dùng - điều này chắc chắn sẽ xảy ra khi có quá nhiều người dùng ẩn danh truy cập trang web của bạn).

Nếu Drupal không tìm thấy người dùng hợp lệ cho phiên hiện tại, thì phiên được tạo lại mới - nghĩa là thông tin trước đó bị mất.

Edit:

Một bình luận gần đây đã thúc đẩy tôi để thêm chiều sâu hơn một chút để câu trả lời như tôi đã kể từ khi tìm ra nguyên nhân có khả năng nhất cho các lỗi.

Về cơ bản, đó là việc sử dụng ID 0 cho người dùng ẩn danh.Nếu bạn INSERT một giá trị 0 vào một trường tự động gia tăng trong MySQL, giá trị sẽ thực sự trở thành giá trị sẵn có tiếp theo trong chuỗi (vì vậy, một bảng có trường tự động gia tăng được đặt thành 10 sẽ INSERT ở mức 11 và không 0).

Chúng tôi đã gặp sự cố vì chúng tôi đang sử dụng các bãi chứa MySQL để xuất và nhập các bản sao lưu trong quá trình phát triển.

+0

Thx! đánh dấu câu trả lời của bạn là được chấp nhận :) – eddy147

+0

Điều này cũng khiến tôi tốn rất nhiều thời gian. Cảm ơn bạn đã đặt nó lên đây. –

11

Chúng tôi vừa giải quyết nó. Rõ ràng, người dùng 0 bị mất tích, ai đó đã xóa nó hoặc một số mô-đun đã làm điều đó. Sau khi chèn nó vào cơ sở dữ liệu, chúng tôi nhận được tin nhắn của chúng tôi một lần nữa.

Đây là những gì bạn phải làm:

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); 

Và sau đó thiết lập các uid 0, vì uid là một autoincrement !!

Mặc dù vậy, không có ý tưởng nào về sự lộn xộn đó với drupal_set_message.

+0

Cảm ơn bạn, cảm ơn bạn, cảm ơn bạn - Tôi đã phải vật lộn cả ngày để tìm một giải pháp. Tôi sẽ không bao giờ nhặt nó lên. Chỉ cần lãng quên thời gian dài trước đây tôi đã xóa hồ sơ 0 từ người dùng bởi một số lý do kỳ lạ. Chúc phúc cho bạn. – Lukasz

4

Một vấn đề khác có thể là chủ đề của bạn không in được $ message trong các mẫu.

+0

Không, như đã đề cập trong bài đăng gốc, trước tiên chúng tôi chuyển sang vòng hoa để loại trừ điều đó. Sau đó, chúng tôi gỡ bỏ mô-đun sau khi mô-đun. Chúng tôi giải quyết nó bằng cách thêm người dùng bị thiếu 0. – eddy147

+0

Nó vẫn là một khả năng, hoặc nếu bạn thay đổi trong chủ đề hoặc xóa nó bằng cách xác nhận. Cũng đăng nó nhiều hơn như là một phản ứng với anh chàng thứ 2 hoặc bất cứ ai khác có thể đến trong tương lai, kể từ khi vấn đề bình luận nhất, nó rằng $ tin nhắn bị xóa khỏi mẫu. Một điều nữa là khi bạn xóa người dùng ẩn danh (uid 0), chỉ có hiệu lực các thông báo được hiển thị cho người dùng không đăng nhập, vì các tin nhắn được lưu trong phiên. Vì vậy, nó sẽ vẫn làm việc cho người dùng đã đăng nhập. – googletorp

+0

$ message "s", tôi nghĩ vậy. – sepehr

2

tôi không thể nhận được tin nhắn để hiển thị ngay cả khi thực hiện theme_get_messages() hoặc echo $ điệp, vv

Vì vậy, tôi phải nhận được nó từ $ _SESSION [ 'thông điệp'].

ví dụ:

<?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']); 
      } 

     ?> 

Hy vọng rằng sẽ giúp một ai đó.

+0

Cảm ơn bro nó đã làm việc! nhưng bạn có tìm ra lý do thực sự cho điều đó không? –

1

tôi tìm thấy điều này trong một thời gian dài, đây là nguyên nhân cho các mô-đun khác mà bạn cài đặt ảnh hưởng đến điều này bạn có thể áp dụng mã này trong phpmyadmin o trong bảng điều khiển nếu bạn sử dụng Linux.

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); 
Các vấn đề liên quan