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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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

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

Vladsvn

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

Цитата:
потому что если есть индексный файл, то уже не 404
Вот это, как раз, тонкий момент.  
Ведь индексный файл всегда есть. И в нем должен быть код, вытаскивающий инфу из базы.
 
К примеру, если в адресной строке https://site.ru/abc.html, а для страницы abc.html  в базе инфы нет, то в файле index.php из базы будет возвращен пустой ответ. И что тогда? Откуда возьмется отклик 404?
 
* * *  
В корне лежит файл error404.html. В .htaccess есть запись ErrorDocument 404 /error404.html  
Как код из файла error404.html попадет в браузер? Его Apache автоматически подсунет?

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 12:23 08-01-2023
Mavrikii

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

Цитата:
Откуда возьмется отклик 404?

Сами создадите страницу и выдадите ее с 404 заголовком.
header("HTTP/1.1 404 Not Found"); до вывода чего либо в браузер, а после содержимое страницы.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 12:43 08-01-2023
Vladsvn

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

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 12:58 08-01-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Файл config.php находится в корне сайта. Если его нужно подключить к файлу, который тоже находится в корне, то я делаю так:
include 'config.php';
 
Если нужно подключить к файлу, находящемуся в папке, то делаю так:
include '../config.php';
 
А есть ли такая запись, чтобы успешно инклудить из любого уровня вложения, не подгоняя под уровень вложения?
 
* * *  
 
Предположим, что подключаемый файл config.php находится в корне, а файл, к которому нужно произвести подключение, находится в папке dva. В этом файле пишем:
 
define('BASE_PATH',$_SERVER["DOCUMENT_ROOT"]);
include BASE_PATH . 'config.php';
 
Почему так не работает?
 
 
 
 
 

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 16:47 08-01-2023 | Исправлено: Vladsvn, 17:53 08-01-2023
Mavrikii

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

Цитата:
Почему так не работает?

Выведите значение
Цитата:
BASE_PATH . 'config.php';

и посмотрите. Возможно нет слэша.
 
и не нужно делать такую привязку. а вдруг захотите все запускать на уровне подпапки?
определяйте нужный вам путь в основном файле, а потом уже от него и прыгайте.
да, есть еще удобная __DIR__ - содержит путь к папке с тем скриптом, в котором используется.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 20:07 08-01-2023 | Исправлено: Mavrikii, 21:26 08-01-2023
volkovysk



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
include(BASE_PATH.'/config.php');
или сразу
include($_SERVER['DOCUMENT_ROOT'].'/config.php');
 
Но сначала Вам надо посмотреть правильно ли выдаёт путь $_SERVER['DOCUMENT_ROOT'], а то левых хостеров полно.

Всего записей: 548 | Зарегистр. 21-04-2011 | Отправлено: 21:48 08-01-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В JS скрипте, лежащем в корне, есть такие строки:  
 
    ajaxOnSubmitForm('form_login', 'log.php', "login_form_message");
    ajaxOnSubmitForm('form_register', 'reg.php');
    ajaxOnSubmitForm('form_restore', 'restore.php', "restore_form_message");
 
Когда к этому скрипту происходит обращение из файла, лежащего в корне, то на сайте все работает как надо. Но когда происходит обращение из файла, вложенного в папку, то выскакивают ошибки типа https://ibb.co/m6VQpPQ
 
Как это исправить?

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

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vladsvn
при чем тут php?
ajax не работает с локальными файлами.. вернее не в каждом браузере и есть свои особенности
https://stackoverflow.com/questions/38344612/ajax-request-to-local-file-system-not-working-in-chrome

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 20:42 09-01-2023
Vladsvn

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

Цитата:
при чем тут php?
Я предположил, что причиной проблемы может быть то, что не вызывается РНР-файл и это решается на уровне РНР.
Но, похоже, проблема гораздо глубже, и пока не знаю, в чем.
 
Сейчас все так перемешано, что иной раз пол часа думаешь, в каком разделе задать вопрос...  

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 11:54 10-01-2023
Mavrikii

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

Цитата:
Но, похоже, проблема гораздо глубже, и пока не знаю, в чем.

это и файл и ajax запрос js скриптом. если непонятно что происходит - F12, закладка сетевой активности, смотреть какие и куда запросы идут.

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 11:55 10-01-2023 | Исправлено: Mavrikii, 11:58 10-01-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Хеш для пароля я делаю так:
$password_hash = md5($password);
 
Это нормально на сегодняшний день? Или теперь надо делать как-то иначе?

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 13:52 22-01-2023
Mavrikii

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

Цитата:
Это нормально на сегодняшний день? Или теперь надо делать как-то иначе?

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

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 22:48 22-01-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А если сделать так:
 
$password_hash = md5($password . $id);
 
Где $id  - номер строки в базе данных для этого пользователя.
 
И еще сомнение - стоит ли добавлять в пароль знаки ! @ # $ % ^ & * ( ) - + = < , > . ? /  
 
Сейчас это требование почти повсеместно. Или это просто мода? Не лучше ли просто сделать длинный буквенно-цифровой пароль (12 знаков)?

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 12:24 23-01-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Добрый день!
 
Не могу понять, почему в сессии идет не то, что в нее записано.
 
На индексной странице есть код:
    $uri = $_SERVER['REQUEST_URI'];
    $_SESSION['uri'] = $uri;  
 
    echo "<br>Адрес страницы: $uri ><br>";
 
При этом выводится сообщение:
Адрес страницы: /wowa/
 
Так оно и должно быть.
 
А на регистрационной форме, подтягивающейся через Аякс, есть контрольный код:
 
    $uri2 = $_SESSION['uri'];
    file_put_contents('1.txt', $uri2);
 
И я сильно надеялся, что в текстовый файл запишется то самое, что видно на индексной странице. Но в текстовом файле запись
/favicon.ico
 
Чтобы понять, что за чудеса, я в индексном файле изменил код вот так:
 
$_SESSION['uri'] = 12345;
 
И теперь в текстовом файле 12345.
 
Менял имя uri на другое, на результат не повлияло.
 
Не могу понять, почему так происходит...
 
 
Добавлено:
Сделал ещё один эксперимент - в индексном файле записал
[PHP]    $uri = $_SERVER['REQUEST_URI'];
    $_SESSION['uri'] = $uri . 1234567;
 
    echo "<br>Адрес страницы: $uri <br>";[/PHP]
 
На странице, по прежнему, выводится
Адрес страницы: /wowa/
 
А в текстовом файле
/favicon.ico1234567
 
===  
Текстовый файл после каждой пробы с сервера удаляю.

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 17:50 23-01-2023
Vladsvn

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А вот такой эксперимент  
$uri             = $_SERVER['REQUEST_URI'];
$_SESSION['uri'] .= $uri . ' ';
 
дает вот этот результат:
/favicon.ico/wowa/ /favicon.ico

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 19:59 23-01-2023
Mavrikii

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

Цитата:
$password_hash = md5($password . $id);
Где $id  - номер строки в базе данных для этого пользователя.
И еще сомнение - стоит ли добавлять в пароль знаки ! @ # $ % ^ & * ( ) - + = < , > . ? /  
Сейчас это требование почти повсеместно. Или это просто мода? Не лучше ли просто сделать длинный буквенно-цифровой пароль (12 знаков)?

как вам удобнее, так и делайте. использование других символов усложняет перебор.
 

Цитата:
Не могу понять, почему так происходит..

потому что скрипт перехватывает и другие обращения к серверу.. вот и записывает последнее в файл.
 
file_put_contents('1.txt', $uri2 . "\n", FILE_APPEND);
 
чтобы не затирались старые..

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 22:07 23-01-2023
Vladsvn

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

Цитата:
флудить то зачем?
Так получилось, сорри.
 
А с сессией мне не удается разобраться...  
 
В подтягиваемом через Аякс файле после  
$uri2 = $_SESSION['uri'];
 
идет другая сессия - $_SESSION['USER_ID']. И с ней никаких проблем.
 
Как мне разобраться, почему, как Вы говорите, скрипт перехватывает другие обращения к серверу, и избавиться от этого?
 
 
 
 
 

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 23:09 23-01-2023
Mavrikii

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

Цитата:
Как мне разобраться, почему, как Вы говорите, скрипт перехватывает другие обращения к серверу, и избавиться от этого?

я же показал - он записывает последнее обращение, переписывает в файле.
смотрите сетевую активность в браузере, он делает запрос и за favicon.ico, который перехватывает ваш скрипт.
 

Цитата:
скрипт перехватывает другие обращения к серверу, и избавиться от этого?

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

Всего записей: 15038 | Зарегистр. 20-09-2014 | Отправлено: 00:35 24-01-2023
Vladsvn

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

Цитата:
если вы делаете CMS
Да, пытаюсь.
 
Проблема предельно сконцентрировалась и упростилась.
 
На индексной странице разместили код:
    file_put_contents('4.txt', $_SERVER['REQUEST_URI'] . "\n", FILE_APPEND);
 
И получаем в файле '4.txt:
/wowa/
/test.css
/images/stydent03.jpg
 
Я так понимаю, что /wowa/ - это адрес страницы, а /test.css и /images/stydent03.jpg – файлы, отсутствующие на сервере, но на них ссылается код страницы /wowa/. Эти элементы запрашивает браузер.
 
Осталось только понять, как отвечать браузеру на каждый их этих трех запросов.
 
По адресу /wowa/  запрашиваем контент в базе. Если в базе для этого адреса контент есть, то вывожу его в index.php. Если контента нет, то вывожу header("HTTP/1.1 404 Not Found");
 
По остальным адресам даже нет нужды делать запрос в базу. Но что-то нужно выдать на запрос браузера по этим элементам? Что конкретно выдать, какой ответ?
 
И главное – как отличить первый запрос, по которому нужен поиск в базе, от последующих? Как это делается на практике?
Может быть, в коде запроса есть какой-то признак, что запрос вторичный, что он порожден браузером?
 

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 12:38 24-01-2023 | Исправлено: Vladsvn, 18:12 24-01-2023
Vladsvn

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

Всего записей: 340 | Зарегистр. 07-09-2016 | Отправлено: 18:06 24-01-2023 | Исправлено: Vladsvn, 18:06 24-01-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 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