@mkramer Ок попробую: require_once первая строка говорит что можем подключить один раз наш конфиг. вторую строку я не знаю ну принцип понятен почти создаем переменную проверяем что в GET параметре если его нет то выводим false. if(!empty и т.д. проверяем переменную $go и $routes[$go] если типа все ок перекидываем пользователя на страницу Иначе дефолт настройки.
Не, так не пойдёт. Опиши точно, что и как происходит. Никакая строка там никого никуда не "перекидывает". Разберись точно. --- Добавлено --- require_once подключает файл, если он до этого был не подключен, а не говорит, что он может быть подключен один раз. Computer Since - это точная достаточно наука. --- Добавлено --- И никакой false никуда не выводится. Вывод - это echo, там echo нету.
@mkramer что то не так написал? Ой да не так написал, на счет перекидывает типа строка. Она не перекидывает а в зависимости от ссылки где и куда тыкнул пользователь перенаправляет. АААА запутался( Ну что мне надо сделать что бы создать ссылку? Разобрался как ссылку указать, ура. У вас получается __dir__ показывал путь к папке, include __DIR__ . $routes[$go]; Вот так. У меня в логах получалось что папка то же самая 2 раза выводилась, получалось что: system/system/routes.php Из-за этого не переходило. --- Добавлено --- @mkramer Объясни ты мне что ты написал) пожалуйста. Если что я говорю за код.
Бесполезняк Если у тебя include что-то куда-то перекидывает/перенаправляет, то разговаривать вообще не о чем.
@mkramer Все понятно я просто не могу объяснять если я не уверен))) include require_once и т.д. они просто инклудят файл и все. Чтобы можно было их на другой странице подключить. Ну извини(
инклюдят - что ты под этим понимаешь? А то мало ли... И я говорю, если пишешь, пиши точно, что и как происходит, что в какую переменную пишется, что из какой переменной читается. Если бы хоть немного понимал, или хотя бы точно воспроизвёл, всё бы заработало давно --- Добавлено --- https://secure.php.net/include https://secure.php.net/manual/ru/la...son.php#language.operators.comparison.ternary https://secure.php.net/manual/ru/language.types.array.php https://secure.php.net/manual/ru/function.empty.php https://secure.php.net/manual/ru/function.isset.php - читать до просветления. Пока ты человечески не распишешь строчки, что я тебе написал, разговор дальше бесполезен. Там всё элементарно, ничего нету особенного.
@mkramer Я же сказал я уже нашел проблему. Описываю все поэтапно: Создал файл config.routes.php В него записал массив состоящий из путей к скриптам. PHP: <?php $routes = [ /*массив*/ "login" => "/system/modules/login.php", "register" => "/system/modules/register.php", "logout" => "/system/modules/logout.php" // и т.д., сколько тебе нужно ]; ?> Далее создал файл routes.php PHP: <?php /*Инклудим скрипт, то-есть подключаем скрипт находящийся в другом месте,подключаем его для работы с данным скриптом*/ require_once(__DIR__ . "/config.routes.php"); /*Проверочка гет параметра*/ $go = isset($_GET["go"]) ? $_GET["go"]: false; /*Типа та же проверка, только на ввод или существования данной ссылки по которой пользователь хочет перейти*/ if (!empty($go) && isset($routes[$go])) { /*Если все хорошо то инклудим файл по которому пользователь перейдет*/ include $routes[$go]; } else { /*Иначе перенаправим пользователя на страницу например главную*/ include __DIR__ .'index.php'; } Дальше я открываю главную страницу сайта а точнее index.php И указываю путь к файлу router.php PHP: <?php /*Подключаем роутер*/ include($_SERVER['DOCUMENT_ROOT'].'/system/routes.php'); /*Шапка сайте*/ include($_SERVER['DOCUMENT_ROOT'].'/templates/default/header.php'); /*Меню сайта*/ /*футер*/ и т.д. ?> где вывожу ссылки на регистрацию и авторизацию HTML: <li><a href="?go=login.php" title="Войти">Войти </a></li> <li><a href="?go=register" title="Регистрация">Регистрация</a></li> мне нужно указать гет параметр и из файла config.routes.php вытащить массив значение а точнее из этой строки "login" => "/system/modules/login.php", вытягиваю передаваемое значение login а точнее ключ На сколько я все правильно описал, и сделал?
@mkramer я готов ответить, по человечески что ты расписал) 1. Пункт: Включаем и выполняем данный файл require_once(__DIR__ . "/config.routes.php"); 2. Пункт: Дальше создаем переменную $go и проверяем была ли она создана, или вообще была ли создана переменная, какая либо, проверку производит функция isset. $go = isset($_GET["go"]) ? $_GET["go"]: false; знак ? я почитал, это тернартный оператор его нельзя назвать переменной, он используется как результат выражения. 3. Пункт: Так дальше идет строка: if (!empty($go) && isset($routes[$go])) { Здесь у нас происходит что, !empty проверяет на существования переменой, если существует переменная $go и проверяем isset создана ли переменная $routes[$go] то все хорошо, include $routes[$go]; разрешаем включить и выполнить файл, который прописан в файле config 4. Пункт: Иначе } else { Запускаем дефалтнные настройки, и направляем куда нам хотелось бы) } Хотелось бы ответить как ты хотел прочитать и увидеть ответ, что бы дальше можно было изучать данный язык))). Надеюсь я этот урок запомню на всегда)
Ну вот это почти что надо. Только: 2. - мы не проверяем, была ли создана переменная. Мы её создаём - конечно она создана. Мы проверяем, был ли передан get-параметр go нашему скрипту. Если был - пишем его в переменную $go, а если не был - пишем туда false 3. !empty не проверяет в данном случае на существование - переменная существует, мы её только что создали. !empty проверяет не пустое ли значение в переменной (empty - пустой с английского). Пустыми в php считаются null, false, 0, '' (пустая строка), и, что довольно странно, '0' (строка, в которую записан 0) isset в данном случае применён к элементу массива с ключём $go, поэтому он не проверяет создана переменная $routes[$go], а именно проверят, если в массиве, записанном в переменной $routes ключ со значением, записанным в переменную $go. Программирование, как и математика, любит точность. Ну теперь, когда ты разобрался, как это работает, тебе должно не составить труда разобраться, как это правильно включить в твою программу. чтоб не оставалось лишних вопросов. В непонятной ситуации берёшь, и также по пунктам расписываешь твою программу, и обычно всё становится понятно
@mkramer У меня сейчас такой вопрос: А как же быть в такой ситуации, например: Если много скриптом, которые подключены в config.routes.php и тебе надо выводить на главной странице в определенном месте. Например, авторизацию поместить в шапку сайта, регистрацию поместить в контент сайта. ну и так далее. Если я указываю файл routes.php указываю на главной странице сайта index.php, а точнее между шапкой, и меню, вот так PHP: <?php session_start(); ?> <!DOCTYPE> <html lang="ru"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div class="page"> <?php /*Шапка сайта*/ include($_SERVER['DOCUMENT_ROOT'].'/templates/default/header.php'); require_once($_SERVER['DOCUMENT_ROOT'].'/system/routes.php'); /*Подключения переключателя роутера*/ /*Меню сайта*/ include($_SERVER['DOCUMENT_ROOT'].'/templates/default/menu.php'); include($_SERVER['DOCUMENT_ROOT'].'/templates/default/content.php'); /*Низ сайта*/ include($_SERVER['DOCUMENT_ROOT'].'/templates/default/footer.php'); ?> </div> <!-- Конец page --> </body> </html> то все скрипты открываются между шапкой, и контентом. А как же быть если надо указать в каком либо другом месте, что бы выводились данные на главной странице? Или вы считаете что я не правильно делаю, а надо еще какой то файл создать, а потом подключать его на главной? Или мне надо указывать именно в скрипте content.php который отвечает за разметку контента на сайте, у меня просто представления, хочется как лучше, хочется как правильней, сразу научится не косячить, а писать правильно) Спасибо.
@mkramer Не ну а в принципе, правильно сделал я? Расписать все я могу, я понимаю, что я делаю как то не так. Может так нельзя делать, указывать переключатель роутер на главной index.php? А чисто в куске шаблона content.php или header.php. и так далее лучше указать? Так а что я сделал не правильно??? В принципе все переходит по ссылкам, но хотелось бы что бы срабатывала не в одном блоке шаблона. Жду ответа)
Народ кто поможет сделать восстановления пароля? Для начала я хочу вытащить данные, для проверки пользователя что он есть в базе пробую сделать так: Но все время пишут no_user хотя такой пользователь есть( PHP: if(isset($_POST['recovery'])){ $email = emailValid($_POST['email']); $check = $pdo->prepare("SELECT `user_id`, `user_photo` FROM `users` WHERE `user_email` = '{$email}' AND `user_status`= 1"); $check->bindValue($email, $_POST['email'], PDO::PARAM_STR); $check->execute(); $rows = $check->fetchAll(PDO::FETCH_ASSOC); if(!empty($rows)) { if($rows['user_photo']) $rows['user_photo'] = "/uploads/users/{$rows['user_id']}/100_{$rows['user_photo']}"; else $rows['user_photo'] = "{theme}/images/100_no_ava.png"; echo "|".$rows['user_photo']; } else echo 'no_user'; } Вот что я делаю тут не так?