Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2021, 02:21   #1
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию Не работает авторизация при инклуде страницы

1. tfeya.ru/login1.php - ввожу логин и пароль, все работает, переносит куда надо.
2. http://tfeya.ru/allprojects_stat.php - здесь есть следующее:
Код:
                <div id = "okno1">
                <a href="" style="margin: 8px 8px"><img src="https://snipp.ru/demo/449/close.png" style="margin-top:5px"></a>
                <?php include("./login1.php");?>
                </div>
Это показывает тот же файл с авторизацией, но когда жду на Войти, переадресации не происходит (Location Header юзаю), открывает неоткомпиленный до конца этот же файл http://tfeya.ru/allprojects_stat.php#okno1

Что это такое?

Если вместо хедер локейшн прописать exit("<meta http-equiv='refresh' content='0, url= /profile.php'>");
то переход таки происходит, но теряются куки. Хотя они задаются вроде правильно

Код:
setcookie("id", $data['user_id'], time()+60*60*24*30);
        //setcookie("id", $data['user_id'], time()+60*60*24*30, "/");
        setcookie("hash", $hash, time()+60*60*24*30,null,null,null,true); // httponly !!!

Последний раз редактировалось Krasi; 28.08.2021 в 02:32.
Krasi вне форума Ответить с цитированием
Старый 28.08.2021, 12:17   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Ну и зоопарк....

При чем тут куки непонятно....
В пыхе нет понятия компиляции, это интерпретируемый язык.
На странице вашей предупреждения, английским по белому написано что нет индексов определенных

Догадываться что у вас там за код нереально... Ну чую что авторизация в конце неверно реализована
ADSoft вне форума Ответить с цитированием
Старый 28.08.2021, 20:16   #3
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Еще раз. Скрипт авторизации login1.php отдельно работает и осуществляется успешный вход, на странице profile.php я вижу куки и получаю информацию по пользователю в таком случае.

Проблема в том, что когда я вставил этот код на свою страницу другую, то перестало сохранять Куки, я делаю эхо на странице profile.php и не вижу их. Причем запись куков на странице login1.php происходит. До переадресации со страницы login1.php на страницу profile.php, как я заметил, они имеются и отображаются через echo(). Значит магия начинается после переадресации. Поэтому скорее всего все таки суть вопроса не меняется. Могу дать больше информации, если мало, или чего попробовать, предлагайте. Не могу понять пока что это.

Про компиляцию я не говорю о пыхе, а имею ввиду как в итоге браузер интерпретирует код (не то что js, он стили коверкать начинает). Но это может потому что с переадресацией игрался, хз. Кеши стирал. То есть должно вообще переадресовать в итоге на profile.php после попытки входа. В первый раз оно так и делает. А потом когда второй раз попробовал зайти, почему-то редиректа не происходит и страница косо запускается в браузере.

То есть именно сейчас вопрос можно упростить до того, что переадресация в виде хедер-локейшн не работает когда я встроил код login1.php туда, куда мне надо. Более того, на свежую голову смотрю, я перед хедер локейшн die(); поставил после echo() дай - мне не выводит echo ничего. Можете прямо сами попробовать, сейчас убрал все лишнее по отладке. Вот код этого проблемного места, который успешно работает, если его не копипастить на нужную мне страницу:

Код:
if(isset($_POST['submit']))
{
    // Вытаскиваем из БД запись, у которой логин равняеться введенному
    $query = mysqli_query($conn,"SELECT user_id, user_password FROM users WHERE user_login='".mysqli_real_escape_string($conn,$_POST['login'])."' LIMIT 1");
    $data = mysqli_fetch_assoc($query);

    // Сравниваем пароли
    if($data['user_password'] === md5(md5($_POST['password'])))
    {
        // Генерируем случайное число и шифруем его
        $hash = md5(generateCode(10));

        if(!empty($_POST['not_attach_ip']))
        {
            // Если пользователя выбрал привязку к IP
            // Переводим IP в строку
            $insip = ", user_ip=INET_ATON('".$_SERVER['REMOTE_ADDR']."')";
        }
$insip="";
        // Записываем в БД новый хеш авторизации и IP
        $res = mysqli_query($conn, "UPDATE users SET user_hash='".$hash."' ".$insip." WHERE user_id='".$data['user_id']."'");
        echo($res);

        // Ставим куки
        setcookie("id", $data['user_id'], time()+60*60*24*30);
        //setcookie("id", $data['user_id'], time()+60*60*24*30, "/");
        setcookie("hash", $hash, time()+60*60*24*30,null,null,null,true); // httponly !!!
        echo($hash);
        echo($data['user_id']);
        die();
        // Переадресовываем браузер на страницу проверки нашего скрипта

/*
            <script>
                window.location.href='allprojects_stat.php';

                //window.location.replace('profile.php');
            </script>
*/
        
        //exit("<meta http-equiv='refresh' content='0, url= /profile.php'>");
        header("Location: ./profile.php"); exit();
    
    }
    else
    {
        print "Вы ввели неправильный логин/пароль";
    }
ну ошибки при запуске оставил. Просто там только ворнинки про хедеры. Может в них дело?

Последний раз редактировалось Krasi; 28.08.2021 в 20:43.
Krasi вне форума Ответить с цитированием
Старый 29.08.2021, 07:03   #4
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Нечего сказать...
Прочитайте как авторизация на пыхе делается, что такое сессия, для чего применяется, что такое куки и для чего они....

Или с элементарного начните, например с того что после die() пых умрет и не будет дальше ничего делать... Ни echo ни header
ADSoft вне форума Ответить с цитированием
Старый 29.08.2021, 15:27   #5
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Извините, но вы невнимательно читаете. Я показал, что у меня конкретная проблема с авторизацией, и скрипт, который работает отдельно в файле login1.php, почему-то не хочет работать в файле allprojects_stat.php !

То что после die умрет скрипт - вообще то я для этого и использую его. Чтобы проверить, где я нахожусь. До die() у меня стояли echo(). Так что вопрос открыт в прежней своей форме, либо подскажите, что еще могу сделать для проверки. Могу тестовый логин пароль дать если так проще будет.

Единственное да, я die ставил в другом месте, получается, еще один оставил где не надо, сейчас перепроверю. Но вроде я его раньше не ставил. Сейчас отпишусь.

Последний раз редактировалось Krasi; 29.08.2021 в 15:38.
Krasi вне форума Ответить с цитированием
Старый 29.08.2021, 15:37   #6
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

А, вот. Получается да, получается в браузере косо начинало отображаться из-за того что die поставил и не убрал.
Теперь смотрите. У меня на странице profile.php в итоге хэши отличаются. Значит либо где-то хэш перезаписывается, либо что это может быть? То есть из за этого не получается войти. Хотя отдельно этот же скрипт работает.

Код:
7e9847eebd8b6a765fddaed3653bdd2d
1
9e03fa347fe6b3bbc62a01eaaa9769a2
1
Хм, что-то не получилось
Короче да, у меня сбрасываются куки. На странице login1.php, которая встроена в другой код инклудом, куки устанавливаются.+ есть запись в бд, что я и смотрел с помощью die(). но после header Location они теряются. Почему это может быть? Сейчас читал - проблема может быть в этом ворнинге...

Код:
Warning: Cannot modify header information - headers already sent by (output started at /home/a0193693/domains/tfeya.ru/public_html/head_menu.php:8) in /home/a0193693/domains/tfeya.ru/public_html/login1.php on line 42
Но нужно подробнее, не понимаю. Хотя не, с хедерами ошибки убрал, дело не в них. Еще идеи? Может ли проблема быть в том, что встроенный скрипт авторизации создает куки/сессию, которая не видна для других файлов? хотя очень странно конечно.

Последний раз редактировалось Krasi; 29.08.2021 в 17:06.
Krasi вне форума Ответить с цитированием
Старый 29.08.2021, 17:36   #7
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Дело не в том что Я невнимательно читаю...
Это ваши проблемы, что вы не понимаете сути авторизации, что у вас какая то часть чего то случайно получилось, и вы сделали ложный вывод что у вас все работает, а вот что то нет, да все у вас не так работает, как надо...
Не поленитесь загуглитн простейшую авторизацию на php, откройте сессии, прочтите что такое куки.. у меня все.. объяснить что нужно войти в дверь тому кто ломится в окно .. я не собираюсь
ADSoft вне форума Ответить с цитированием
Старый 30.08.2021, 01:00   #8
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Хватит обвинять и предложите свое решение. Также прошу уточнить, чего именно я не понимаю, а то все таки точные науки с вами изучали, а не нумерологию) авторизацию я на том уровне как в Гугл пишут знаю, вот даже еще раз посмотрел на всякий случай.

Еще раз повторяю. Я кладу в куки ID и Хэш. Более сложной авторизации мне пока не надо. Ну для альтернативы еще попробовал Session_start() и работу с $sessions. Проблема в том, что страница авторизации login1.php отдельно работает, но не хочет работать внутри моей страницы http://tfeya.ru/allprojects_stat.php Почему это может происходить и что я могу попробовать чтобы найти ошибку? Еще раз, со своей позиции я сейчас вижу, словно просто был один хэш, а стал другой, хотя при этом после задания Правильного кэша был только скрипт переадресации на portfolio.php. Если вам кажется, что я не так отлаживаю, я могу пояснить, что именно я делаю, или предлагайте с чего начать проверку.

Если бы я понимал чего я не знаю, то я бы и не задавал данного вопроса на форуме, а погуглил бы, но тем не менее я пишу вам. Вы пока говорили об очевидных для меня и понятных мне вещах, ну и с отладкой на фронте и беке у меня все окей так то, вы же пытаетесь мне показывать куда мне ставить die(). Хотя конечно я могу случайно его поставить и не заметить. Похоже на издевательство, лучше помогите)

Последний раз редактировалось Krasi; 30.08.2021 в 01:14.
Krasi вне форума Ответить с цитированием
Старый 30.08.2021, 10:24   #9
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

В итоге на сессии переделал. ПРишлось вставить сессию во внешний файл, куда подключал скрипт авторизации. В profile.php еще раз стартовал сессию, и так заработало. С куками надо разбираться что не нравится. Спасибо.
Krasi вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему не работает авторизация? Roman1209200 Помощь студентам 0 01.04.2017 01:50
Программа на Visual C# работает при запуске руками, но не работает при попытки автоматического запуска Bug$ Помощь студентам 18 21.10.2013 16:22
Авторизация на сайте для последующего парсинга страницы winchester7 C# (си шарп) 0 18.05.2013 18:01
Авторизация на сайте и получение html-кода страницы Anastasiya209 C# (си шарп) 0 03.10.2012 02:10
авторизация получить исх. код страницы. Pein95 Работа с сетью в Delphi 6 23.04.2011 16:22