Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,098

Как изначально задать параметр в адресной строке?

15.01.2017, 18:47. Показов 3735. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Сейчас при загрузке с домашней страницы адрес выглядит вот так:
/index.php
В коде задано условие, что если $_GET['page'] не существует, $page = 'home'. Работает для ссылки на домашнюю и при переходах на эту вкладку.

А я хочу, чтобы изначально домашняя страничка загружалась с параметром page=home
/index.php?page=home

Как сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.01.2017, 18:47
Ответы с готовыми решениями:

Как убрать GET параметры в адресной строке
Здравствуйте! Возможно преобразовать ссылку test1.ru/index.php?page=1 в test1.ru/index/page/1/ Скрипт постраничной навигации ...

Как убрать расширение картинки в адресной строке?
Всем доброго времени суток! Подскажите, как из вида ?pic=3.jpg сделать ?pic=3 Вот так получаю необходимую картинку по адресу ...

Как отключить в хроме поиск в адресной строке?
Поставил Open Server, создал в папке domains папку с именем моего домена, перезапустил сервер, пишу в адресной строке хрома имя моей папки...

22
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,098
18.01.2017, 03:05  [ТС]
Студворк — интернет-сервис помощи студентам
Только дополнительные вопросы появляются...

Проблема первая:
Пробовал много вариаций Вашего предложения:
Цитата Сообщение от miketomlin Посмотреть сообщение
/auth.php/index.php?page=home
для адреса обработчика.
Но это же получается жесткая ссылка...
Приемлема ли такая запись?:
PHP/HTML
1
<form action="/auth.php/index.php?page=<?php if (isset($_GET['page'])) echo $_GET['page']?>" method="post" class="main_login">

Проблема вторая:
Цитата Сообщение от miketomlin Посмотреть сообщение
list($p)=explode('?',$_SERVER['REQUEST_URI'],2);
С конструкцией list() не знаком пока, из того, что надумал:
Тут наверное должно быть :
list($p, $p2)=explode('?',$_SERVER['REQUEST_URI'],2);
?
Иначе весь массив запишется в переменную $p Хотя я на 100% не уверен, что правильно понял, как использовать list().
И кроме этого, не смотря на то, что я из $_SERVER['REQUEST_URI'] вырезал и применял в редиректе часть: index.php?page=... в начало это части в адрес все равно вставлялся весь массив $_SERVER['REQUEST_URI'], пока я не поставил в начало пути /. Работает правильно, но сам момент непонятен... Сейчас в таком виде обработчик(без редиректа на главной с / на /?page=home ):
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$login = htmlspecialchars($_POST['login']);
$pass = htmlspecialchars($_POST['pass']);
$em = htmlspecialchars($_POST['em']);
$log_in = $_POST['log_in'];
list($p1 , $p2 , $p3)=explode('/',$_SERVER['REQUEST_URI'], 3);
if (isset($log_in)) {
  if (isset($login, $pass, $em)) {
    if ($login =='test' && $pass == 'test' && $em == 'test@test.com' && (filter_var($em, FILTER_VALIDATE_EMAIL))) {
      setcookie('login', 'LOGIN', time() +1800, '/');
      header("Location: ".'/'.$p3);
      exit();
    }   
    else {      
      header("Location: ".'/'.$p3.'&error=1');
      exit();
    }   
  } 
}
?>
И большим сюрпризом оказалось, что можно ссылку на обработчик в таком виде писать: /auth.php/index.php?page=home. Этого я вообще не понял... Как между собой соотносятся в этой записи файл обработчика и главная с передаваемым параметром... Я имею в виду тот факт, что файл обработчика записывается перед точкой входа.. Что здесь логически означает слэш между файлом обработчика и точкой входа?
0
930 / 846 / 190
Регистрация: 28.11.2013
Сообщений: 3,621
18.01.2017, 16:08
Цитата Сообщение от СергейСереб Посмотреть сообщение
Приемлема ли такая запись?
Смотрите, если у вас есть какая-то произвольная страница с точкой входа в index.php, к которой бы вы хотели вернуться после выполнения входа, вы можете прописать жесткую ссылку или что-то вроде /auth.php<?= $_SERVER['REQUEST_URI'] ?> (только без предварительной валидации адреса на предмет отсутствия спец. символов нужно кодировать спец. символы, например, при помощи htmlspecialchars). Если у вас форма входа находится на отдельной странице, вы можете для обработчика взять переданный описанным выше способом адрес: action="<?= htmlspecialchars($_SERVER['REQUEST_URI']) ?>", а уже в самом POST-обработчике для редиректа на первоначальную страницу отрезать префикс /auth.php и использовать соответственно /index.php...

Добавлено через 2 минуты
...или просто написать action="" – POST-обработчик унаследует тек. адрес.

Добавлено через 1 час 18 минут
Цитата Сообщение от СергейСереб Посмотреть сообщение
Тут наверное должно быть?
Нет, я все правильно написал. Строки параметров может и не быть. Это был пример того, как можно извлечь путь.

Цитата Сообщение от СергейСереб Посмотреть сообщение
Этого я вообще не понял...
Сервер не учитывает довесок пути в имени файла, если находит его (это называется PAHT_INFO). Я эту муть практически не использую но показал ее, потому что это наиболее близко тому, что использую оч. часто, когда первый элемент пути определяет основной программный модуль для обработки запроса.


Что касается кода. Третьего элемента массива в результате explode может и не быть. Может накапливаться индикация ошибки (&error=1&error=1...). При используемом вами подходе труднее одновременно и полноценный бэклинк сохранить, и индикацию ошибки добавить. Попробуйте пока по-простому, примерно так, как было:
/auth.php?page=PAGE (если page не определен или пустой, берете в качестве значения $page какое-нибудь предопределенное значение, например home) – обработчик;
/auth.php?page=PAGE[&error=1] – отдельная страница с формой, если нужна.

В случае успеха редирект делаете на /index.php?page=$page, а в случае ошибки – на /auth.php?page=$page&error=1 или напрямую на /index.php?page=$page&error=1 (мало ли, может вы хотите вывести сообщение об ошибке на какой-нибудь странице, работающей через основную точку входа, например рядом с миниформой входа).
1
39 / 9 / 10
Регистрация: 19.09.2016
Сообщений: 1,098
27.01.2017, 14:55  [ТС]
Вернулся опять к данному вопросу. Перечитал и эту тему несколько раз, и чем больше читаю, тем больше запутываюсь. Вынес полностью обработчик авторизации отдельно в один отдельный файл и отдельно два файла представления для блока аворизации - стартовая форма и форма в случае успешного прохождения авторизации. Осложнилось тем, что на сайте есть еще один обработчик и они между собой конфликтуют в части отправки заголовков. Почему они конфликтуют - для меня загадка, т.к. когда запускается один обработчик, даже когда нет условий для запуска другого обработчика(второй подключен постоянно в основной обработчик).
Сейчас основная проблема для понимания - Если для стартовой формы авторизации в атрибуте action ничего не указать, происходит тот самый конфликт отправки заголовков между двумя обработчиками(один - обработчик приложения, включенный в основной обработчик, но работает, когда находимся на соответствующей странице, второй - обработчик авторизации в отдельном файле). Если же для action указать файловый путь до обработчика('modules/auth/auth.php'), никаких поблем не возникает.

Блок авторизации присутствует на каждой страничке. В представлении он включен через include 'modules/auth/auth.php'; Обработчик можно вызвать с любой странички сайта.

Допустим, запросили авторизацию с адреса /index.php?page=about
В файле index.php подключился обработчик auth.php из указанного в include пути. На форме авторизации никто ничего не делал при первом запуске, значит вывели стартовую форму обработчика на экран, после нее страничку about. Если отправляем данные с формы авторизации == запускаем обработчик auth.php с атрибутом action="", данные с формы отправятся в основной обработчик(index.php)? Второй обработчик тоже через include покдлючается в index.php, но сама обработка то не происходит, т.к. нет для этого первоначального условия заданного в этом обработчике. Почему же они конфликтуют между собой??

Что меняет указание полного пути в атрибуте action?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.01.2017, 14:55
Помогаю со студенческими работами здесь

Как сделать, чтобы в адресной строке не отображалось расширение php?
как сделать чтоб не высвечивалась приставка php? и заходить что б можно было

Как можно сравнивать айди в адресной строке с айди в php коде
у меня адресная строка вида: site.com/questions.php?question=6, как сравнивать question=6, чтобы выводить определённую информацию,...

Как скрыть данные в адресной строке после "example.com/file.php?."
Как скрыть данные после вопросительного знака? Пример example.com/file.php?abc=123 Нужно, чтобы это все происходило скрыто. Чтобы в...

Как при использовании Response.redirect в адресной строке броузера оставить тот УРЛ, который был набран изначально?
Как при использовании Response.redirect в адресной строке броузера оставить тот УРЛ, который был набран изначально? Или быть может надо...

Параметр в адресной строке
Всем доброго времени суток! отсылка: знаний в JS нуль. Передаю параметр через адресную строку mysite.html?sum=100 пытаюсь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов. В Main создаём четыре события. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru