Нужно чтобы после того как пользователь авторизуется,в сессию записалась определенная переменная
вот код подскажите пожалуйста в чем ошибка
<?php
// $Id$
function before_login_user($op, &$edit, &$account, $category = NULL) {
if (
$op == 'login' && $category == 'account') {
global $user;
$q=db_query("select * from {term_user} where uid=".$user->uid) ;
while ($r=db_fetch_object($q)){
$_SESSION['idgor']=$r[1];
}}
}
?>
Комментарии
А зачем тут проверка category == 'account'? Это раз.
$r = db_fetch_object, а обращаетесь как к массиву. Это два.
Используйте плейсхолдеры в запросах к БД. Это три.
<?php
// $Id$ function before_login_user($op, &$edit, &$account, $category = NULL) {
if (
$op == 'login') {global $user;
$q=db_query("select * from {term_user} where uid=%d",$user->uid) ;
while ($r=mysql_fetch_row($q)){
$_SESSION['idgor']=$r->tid;
}}
}
?>
все равно не работает
fetch_object надо было оставить.
все равно не пашет(((
Я надеюсь, это у вас модуль?
Не пашет - значит раскручивайте, что у вас на каждом этапе из БД читается. Попадает ли программа внутрь while, что внутри $r.
global $user; она не передается почему-то
А внутрь $op == 'login' попадает? Функция вообще - исполняется?
И повторяю вопрос:
Так не верно:
<?php
while ($r=mysql_fetch_row($q)){
$_SESSION['idgor']=$r->tid;
?>
нужно:
<?php
// ...
$_SESSION['idgor'] = $r[0];
?>
что вообще не корректно, т.к. надо использовать api друпала:
<?php
select xxx from {term_user} where uid=".$user->uid) ;
while ($r=db_fetch_object($q)){
$_SESSION['idgor']=$r->xxx;
?>
p.s. про заполнители(%d) говорили.
Про object тоже я уже говорил.
Но там похоже проблема гораздо раньше возникает.
Да это модуль и похоже функция сама не исполняется,во внутрь $op == 'login' не попадает
Выложите модуль куда-нибудь еще. Не качается (
before_login.info:
name = before_login
core = 6.x
before_login.module:
<?php
// $Id$ function before_login_user($op, &$edit, &$account, $category = NULL) {
if (
$op == 'login') {global $user;
$q=db_query("select * from {term_user} where uid=%d", $user->uid) ;
while ($r=db_fetch_object($q)){
$_SESSION['idgor']=$r[1];
}}
}
?>
Блин, да сами попробуйте скачать!
Мне выдается 403 - Forbidden.
Упакуйте в зип и выложите.
вот
А почему у вас название папки с пробелом?
все равно не работает(((
Надеюсь, мадам, догадалась переустановить модуль?
да догадалась
все равно внутрь функции не заходит(((
Сколько раз уже говорили: не нужен закрывающий php-тег, не нужен.
все равно косяк не в этом(((((((((((((
Имя модуля в .info-файле должно быть в кавычках. И description тоже обязательно.
Загляните вот сюда, тут написано как .info-файлы писать: http://drupal.org/node/231036
А вообще, мадам Виктория, вы столько ошибок уже сделали, что может надо было не с нуля модуль делать, а скачать с D.org готовый, для шаблона, и от него плясать? Ну, чтоб хотя бы увидеть, как правильно надо делать.
Module Builder
Я вот что нашла,
Если по крайней мере один модуль переадресует Drupal, в то время как $op == "логин" в hook_user (), то другое выполнение хука никогда не будет вызываться.
http://api.drupal.org/api/function/hook_user/6
так что не в модуле вообще проблема, нужно найти модуль который вызывает хук
Стоп. А почему не пытаться записывать данные сессии во время каждого просмотра любой страницы?
Ну, что-то вроде того:
<?php if (!isset($_SESSION[])){
global $user;
$q=db_query("select * from {term_user} where uid=".$user->uid) ;
while (
$r=db_fetch_object($q)){$_SESSION['idgor']=$r->field;
}
} ?>
СПАСИИИИБО!!!!!!