Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Проблема с переменной типа global


Автор: Antono 8.12.2008, 10:08
Добрый день подскажите решение проблемы. Просто SOS!!! есть кусок кода который выдает одно и то же каждый раз, когда проходишь авторизацию:
Код


if ($login) {
    dead();
    chk(); 
    session_start();
    $mass = file($filename);
    for ($i = 0; $i < count($mass); $i++) {
        $newmass = explode("|", $mass[$i]);
        if ($login == $newmass[0]) {
            $st = $newmass[4];
            $color = $newmass[6];
            $host = $newmass[10];
            $tvoipol = $newmass[3];
            $intop = $newmass[13];
            break;
        }
    }
    session_register('name', 'status', 'col', 'refresh', 'ipnow', 'sob', 'gender', 'top');
    $name = $login;
    $status = $st;
    $col = $color;
    $refresh = $l_obn;
    $ipnow = $host;
    $sob = $l_soob;
    $gender = $tvoipol;
    $top = $intop;
    chat();
} else {
        echo "<center><b><font face=Arial color=#FF0000 size=3>Не введен логин или пароль!</font></b><center>"; 
        exit();
    }


Вот он выдает последнюю ошибку: Не введен логин или пароль, умом я понимаю что проблема в переменной $login, которая везде прописана как global ... Но млин как это фикснуть? На локалхосте все работает нормально, значит дело в хостинге скорее всего, но вот только что там и где менять? Помогите взываю о помощи. Мне из-за этого уже стоят на тестикулах одной ногой!!!

Автор: patap 8.12.2008, 10:18
попробуй поставаить в начале скрипта:
Код

 global $login;


или обращайся к $login как $_GLOBALS['login']

Автор: Antono 8.12.2008, 10:59
не помогло...а что еще может?

Автор: patap 8.12.2008, 11:11
а где у тебя объявляется переменная $login?

Автор: bars80080 8.12.2008, 14:29
самое интересное, что не видно где форма

замени if ($login) {
на if ($_POST['login']) {
или если не поможет на if ($_GET['login']) {

Добавлено через 43 секунды
но без остальных кусков скрипта, конечно, может и не победится

Автор: Nikol 8.12.2008, 16:50
Надо бы побольше кода показаьб. Если это код обработки формы, то надо проверять, как написал bars80080 $_POST['login']. А если ты хочешь где-то на защищенной странице проверить, залогинен ли юзер, тогда не то проверяешь - переменной $login в сессии нет
Код

session_register('name', 'status', 'col', 'refresh', 'ipnow', 'sob', 'gender', 'top');


Так что тогда нужно проверять $name, да и вообще не понятно, зачем проверять переменную, можно просто проверить, запущена сессия или нет.

Автор: DenisSh 8.12.2008, 17:05
В php.ini есть такая настройка называемая "register_globals" судя по всему на вашем сервере ей присвоено значение "off" поэтому глобальные переменные в вашем коде работать не будут. Так что либо просите провайдера поставить ей "on" либо что еще лучше не пользуйтесь глобальными переменными.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)