Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Основы PHP...

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Открыть новую тему     Написать ответ в эту тему

Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
Между заголовками и телом должна быть пустая строка.
И еще раз - для листинга используйте тег more

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 13:14 25-03-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Очень Вам благодарен!
 
<!--more Не от лени - просто не пойму, как делать. В сети вот этот пример, но он не работает. !-->

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 13:37 25-03-2022 | Исправлено: Vladsvn, 13:40 25-03-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
 В сети вот этот пример

Хотя бы делать так
[more]тут длинный листинг[/more]

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 15:37 25-03-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скрипт перестал работать после его переноса с локалки на сервер. В логах сервера видим:
Подробнее...
 
Соответственно, ошибки РНР
Подробнее...
В строке 25 session_start();
 
В phpinfo.php отсутствует HTTP_RAW_POST_DATA.
 
Проблема снимается запретом сообщений об ошибках, но хотелось бы обойтись без этого. Это возможно?

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 11:09 27-03-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
В строке 25 session_start();

заголовки сессии (передача куки идентификатора сессии) должны выдаваться до какого либо текста. потому что без буферизации, при выводе текста, сразу идут заголовки ответа и текст, куки там уже не вставишь.  
то есть до этой строки выводился какой то текст или сообщение об ошибке (то самое первое сообщение - их вообще нужно скрывать от пользователя, могут выдать лишнюю информацию)
 
насчет первой -
Цитата:
В phpinfo.php отсутствует HTTP_RAW_POST_DATA.

вы писали под старую версию PHP, в новых это отключено.
вы конфиг php не копировали, не выставляли что то иначе или отдельно?
во что выставлено там always_populate_raw_post_data  ?

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 11:20 27-03-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вы совершенно правы - РНР версии 5.6.40. Доступа к php.ini у меня нет. Сделал в .htaccess
<IfModule mod_php5.c>
    php_flag always_populate_raw_post_data -1
</IfModule>
 
В сети нашел эту рекомендацию. Не помогло...
 
Добавлено:
Я не совсем верно выразился: доступа к php.ini действительно нет, то есть я не могу увидеть этот файл, но возможность добавлять к нему директивы имеется. И есть инфа из  phpinfo.php.
 
Из этого нельзя составить решение?

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 11:41 27-03-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
Deprecated это предупреждение, а не ошибка. Напишите админу, пусть поправит php.ini. Можно отключить вывод этих сообщений.
Проверьте сами, во что выставлено. Можно еще попробовать через ini_set, не думаю, что поможет.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 12:00 27-03-2022 | Исправлено: Mavrikii, 12:01 27-03-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ini_set не поможет, он исполняется позже.  
 
Пытаюсь внести в php.ini вот такую директиву
 
always_populate_raw_post_data -1
 
Но сервис говорит, что некорректное имя.
 
А вот как ее верно составить?

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 12:29 27-03-2022 | Исправлено: Vladsvn, 12:43 27-03-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
always_populate_raw_post_data = -1
если разрешают настройки сервера, то можно в корне сайта разместить .user.ini файл, переопределяющий разные параметры основного php.ini файла.
https://www.php.net/manual/en/configuration.file.per-user.php

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:29 27-03-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, получилось.

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 23:53 27-03-2022
blackbones

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
если можешь не учить дырявую пыху - не учи(с)

Всего записей: 39 | Зарегистр. 09-11-2021 | Отправлено: 05:09 28-03-2022
formatiai

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не го ни на пыху, последние версии норм

Всего записей: 11 | Зарегистр. 18-07-2016 | Отправлено: 21:00 30-03-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Прежде не имел дел с авторизацией на сайте, поэтому сейчас кое-что непонятно, хотя и прочитал несколько статей.  
 
Ситуация такая.
 
Есть скрипт регистрации пользователя, который заносит в базу логин и хеш пароля. И есть скрипт идентификации, который сличает логин и хеш введенного пароля с тем, что находится в базе. Если они совпадают, то в сессию заносятся логин и пароль.  
 
При переходе пользователя на другую страницу опять запускается session_start() и из сессии извлекается логин/Пароль. Которые вновь сличаются с тем, что находится в базе. При несовпадении пользователя направляем на идентификацию, при совпадении показываем ему контент.
 
Это же нормальный алгоритм?
 
Но в некоторых статьях пишут, что гонять пароль по сессиям негоже и непосредственно при регистрации в базу заносится некий уникальный идентификатор из 40 знаков (букв и цифр), который потом идет в сессию вместе с логином вместо пароля.
 
Этот вариант лучше?
 
Или надо вообще все делать как-нибудь иначе?

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 16:36 04-04-2022
modrewrit

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Зачем писать на всех форумах одно и тоже?
На сайбере тема есть про регистрацию

Всего записей: 1 | Зарегистр. 28-04-2012 | Отправлено: 17:48 04-04-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
На сайбере тема есть про регистрацию
Понятия не имею, что за сайбер, и не вижу причин, почему мне не спросить здесь, где присутствуют настоящие профессионалы.  

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 17:55 04-04-2022 | Исправлено: Vladsvn, 18:14 04-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Это же нормальный алгоритм?

да, но таскать пароль нет смысла (или хэш).
достаточно просто, к примеру, добавить в базу поле сохраняющим время последнего изменения пароля. и сравнивать его.
 

Цитата:
из 40 знаков (букв и цифр), который потом идет в сессию вместе с логином вместо пароля.

речь о том же хэше пароля. более того, вы можете хранить информацию о сессиях отдельно (в базе или, что еще лучше, в redis/memcached), чтобы иметь нормальную возможность управлять сессиями если человек логинится с разных мест одновременно.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 02:01 05-04-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
То есть, переходя на другую страницу, мы связываемся с базой и сличаем информацию из сессии с тем, что записали в базу при регистрации.
 
Но вот еще я встречал такой вариант, не требующий обращения к базе.
 
На странице авторизации  
session_start();
$_SESSION['auth'] = "auth";
 
На другой странице
session_start();  
$auth = $_SESSION['auth'];
Если $auth равно auth, то это зарегистрированный пользователь.  

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 10:00 05-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Если $auth равно auth, то это зарегистрированный пользователь.

зависит от того, что именно вам нужно. сравнивать с базой нужно в том случае (и необязательно делать это каждый раз, а только, к примеру, когда производятся какие то важные действия), если что то может измениться, что должно повлиять на другие возможные сессии под этим аккаунтом.
 
если же вам не важно такое, то да, достаточно и просто выставить любой флаг в сессию, что авторизирован.

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 10:06 05-04-2022
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый вечер!
 
Хотел сделать сайт, который бы был легким, открывался быстро, а получается все наоборот...
 
Схематически конструкция кода индексной страницы index.php такая:
<?php
    include 'config.php';  
    
    $url = $_SERVER['REQUEST_URI'];
 
    $query = mysqli_query($db, "SELECT `kod` FROM `baza` WHERE URI = $url");
 
    while ($row = mysqli_fetch_assoc($query))
      {
        $kod = $row['kod'];
      }
 
    echo $kod;
 
    /*
    Между этими комментариями находится
        код регистрации, идентификации
    и код комментирования статьи
    */
?>
 
Происходит подключение к базе в config.php, определяется адрес открываемой страницы и воспроизводится ее код.
 
Этот процесс довольно быстрый, а потому посетитель мог бы быстро получить первый экран. Но дело в том, что на этой же странице ниже расположен код регистрации пользователя и его идентификации, а также система комментирования под статьей. Этот модуль фрилансер сделал чрезвычайно тяжелым - 195 Кб. И это только вес РНР кода страницы, но ведь код должен не только прочитаться, но и исполниться! И до завершения этого весьма длительного процесса посетитель не получит ни одного байта HTML кода.
 
Нельзя ли сделать как-то так, чтобы первая часть кода, определяющая первый экран, формировалась и выводилась сразу, а оставшаяся часть начинала обрабатываться только после завершения вывода первой части?
 
 

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 19:56 06-04-2022 | Исправлено: Vladsvn, 20:20 06-04-2022
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn

Цитата:
Этот модуль фрилансер сделал чрезвычайно тяжелым - 195 Кб

и? вы живете в прошлом веке и пользуетесь WAP? подобные размеры нынче ничего, доля секунды.
 

Цитата:
И это только вес РНР кода страницы, но ведь код должен не только прочитаться, но и исполниться!  

эм.. так это еще и PHP код... во первых, это ничто, по сравнению с очень крупными проектами из кучи файлов.
во вторых - PHP, как раз, начиная с версия 7 и выше, оптимизирован под это - по умолчанию включен https://www.php.net/manual/ru/opcache.setup.php
 

Цитата:
исполниться!

если код медленно исполняется, то это проблема не размера, а его написания. сделайте тайминг и оцените, сколько времени выполняется.
 

Цитата:
чтобы первая часть кода, определяющая первый экран, формировалась и выводилась сразу

https://www.php.net/manual/ru/function.flush.php

Всего записей: 15040 | Зарегистр. 20-09-2014 | Отправлено: 22:39 06-04-2022
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26

Компьютерный форум Ru.Board » Интернет » Web-программирование » Основы PHP...


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru