Урок здесь
Спустя 1 час, 53 минуты, 38 секунд (21.01.2010 - 01:26) AmberLEX написал(а):
Цитата |
Дело в том, что сам файл меню мы подключим непосредственно в шаблоне, что бы избежать нагромаждения кода и лишних перезаписей. |
Не пойму, а чем меню с ob_start() не устроило. И что значит лишних перезаписей?
Кажись так наоборот в одном стиле выглядело
Кажись так наоборот в одном стиле выглядело
<div id="menu">
<?php echo $menu; ?><br />
</div>
<div id="content">
<?php echo $content; ?>
</div>
Спустя 14 минут, 34 секунды (21.01.2010 - 01:40) twin написал(а):
Ну в индексе тогда должно быть так:
1. На три строки болше. Избыточность кода
2. Лишняя операция.
3. Переменная $menu содержит больший объем информации, чем константа с путем.
То есть код мы сократили и ресурсоемкость уменьшили. На лицо оптимизация.
А разница между
и
практически не заметна. Так что стиль не пострадал.
ob_start();а это
include IRB_ROOT . '/skins/tpl/menu.tpl';
$menu = ob_get_contents();
ob_end_clean();
1. На три строки болше. Избыточность кода
2. Лишняя операция.
3. Переменная $menu содержит больший объем информации, чем константа с путем.
То есть код мы сократили и ресурсоемкость уменьшили. На лицо оптимизация.
А разница между
<?php echo IRB_LANG_SITE_NAME; ?>
и
<?php include IRB_GENERAL_MENU; ?>
практически не заметна. Так что стиль не пострадал.
Спустя 21 час, 47 минут, 54 секунды (21.01.2010 - 23:28) Хозяин Огня написал(а):
Цитата (twin) |
В следующем уроке нужно сделать редактирование статичных страниц. Там понадобится такое же меню страниц и какой нибудь несложный визивиг-редактор. |
Спустя 3 минуты, 59 секунд (21.01.2010 - 23:32) twin написал(а):
А код?
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 13 часов, 7 минут, 52 секунды (22.01.2010 - 12:40) Shturman написал(а):
Цитата (Хозяин Огня @ 21.01.2010 - 20:28) | ||
|
После отправки без обновления страницы изменения не видны.
Спустя 6 часов, 2 минуты, 21 секунда (22.01.2010 - 18:42) Хозяин Огня написал(а):
Вот))
Shturman, исправил.
Shturman, исправил.
Спустя 3 часа, 46 минут, 4 секунды (22.01.2010 - 22:28) Lenarfate написал(а):
а что делает вот это
объясните, пожалуйста
return array_map(create_function('$link', 'return str_replace(".tpl", "", $link);'), $files);??
объясните, пожалуйста
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
Спустя 4 часа, 56 минут, 48 секунд (23.01.2010 - 03:25) waldicom написал(а):
комменты на английском в первом сообщении - это жесть
Спустя 2 часа, 46 минут, 28 секунд (23.01.2010 - 06:12) twin написал(а):
Lenarfate
ну вообще то это примерно так, чтоб понятно было:
А если это не понятно, то вот:
ну вообще то это примерно так, чтоб понятно было:
funcction func($link)
{
return str_replace(".tpl", "", $link);
}
return array_map('func', $files);
А если это не понятно, то вот:
Цитата |
Функция array_map() применяет по очереди ко всем элементам массива функцию, которая прописана в первом аргументе. |
waldicom
Я рад что понравилось.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 6 часов, 2 минуты, 50 секунд (23.01.2010 - 12:14) Lenarfate написал(а):
вон оно как все просто оказывается)
Спустя 2 часа, 58 минут, 51 секунда (23.01.2010 - 15:13) twin написал(а):
Вообще все просто. Нужно только немного поработать, и все встанет на свои места)))
Спустя 10 часов, 5 минут, 27 секунд (24.01.2010 - 01:19) Lenarfate написал(а):
а можно ли напрямую прописывать одну функцию внутри другой? ну типа
function func(){ function func2() {} }наверное, нет?))
Спустя 7 часов, 2 минуты, 2 секунды (24.01.2010 - 08:21) twin написал(а):
В принципе можно, но не нужно. Вызвать внутреннюю функцию можно будет только после того, как вызвана внешняя.
Спустя 1 час, 22 минуты, 49 секунд (24.01.2010 - 09:44) Хозяин Огня написал(а):
Твин, приложи домашнее задание к этому уроку, если можно.
Спустя 1 день, 3 часа, 28 минут, 45 секунд (25.01.2010 - 13:12) twin написал(а):
Не понял немного, что приложить? Само задание есть - модуль редактирования статичных страниц. Ты даже сделал кое что...
Или что ты имел ввиду под
Или что ты имел ввиду под
Цитата |
приложи домашнее задание к этому уроку, если можно. |
?
Спустя 3 дня, 1 час, 28 минут, 35 секунд (28.01.2010 - 14:41) Lenarfate написал(а):
twinвот пишу в админке управление новостями:редактировать и удалить.
если делать удаление новостей по чекбоксу, я так понимаю, надо пользоваться как раз ячейкой `public`?
если делать удаление новостей по чекбоксу, я так понимаю, надо пользоваться как раз ячейкой `public`?
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
Спустя 1 месяц, 6 дней, 3 часа, 12 минут, 10 секунд (4.03.2010 - 17:53) KonstantinK написал(а):
Раз за вопросы не ругают то еще спрошу.
А зачем мы в sequrity/enter.php делаем $POST = htmlChars($POST);
ведь данные уже использованы или на тот случай если введенные данные не верны и нас опять отсылает в форму, да и почему бы не сделать эту обработку сразу в Variables.php.
Ну и в принципе тот же вопрос относительно meta/view.php
А зачем мы в sequrity/enter.php делаем $POST = htmlChars($POST);
ведь данные уже использованы или на тот случай если введенные данные не верны и нас опять отсылает в форму, да и почему бы не сделать эту обработку сразу в Variables.php.
Ну и в принципе тот же вопрос относительно meta/view.php
Спустя 10 минут, 2 секунды (4.03.2010 - 18:03) twin написал(а):
Дело в том, что функцией htmlspecialchars() данные обрабатывать (за редчайшим исключением) нужно только перед выдачей в поток. А значит непосредственно перед шаблонами.
Если мы обработаем переменные на входе, а они потребуются в скрипте, то данные будут искажены. Вместо кавычки допустим мы получим ", что несколько отличается от оригинала.
Если мы обработаем переменные на входе, а они потребуются в скрипте, то данные будут искажены. Вместо кавычки допустим мы получим ", что несколько отличается от оригинала.
Спустя 52 секунды (4.03.2010 - 18:04) twin написал(а):
За вопросы не ругать , а спасибо буду говорить.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 1 день, 8 часов, 31 минута, 23 секунды (6.03.2010 - 02:35) LindonAlex написал(а):
Сделал 7 урок до момента создания сессии, дальше пошла какая то ошибка - во первых после нажатия кнопки войти в сессии появляется значение, которое мы по идее нигде в нее не помещаем:
Вот что показывает функция дебага:
Хотя здесь по задумке должно быть значение true.
Во вторых после нажатия ссылки на уничтожение сессии браузер выдает такое сообщение на чистом экране "The variable host is not defined". После обновления страницы я опять попадаю на страницу авторизации (как и должно быть по идее), и дебагер показывает что в сессии нет никаких значений. В самом низу страницы высвечивается ошибка Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0.
Если заново в адресной строке браузера набрать адрес админки - то опять $_SESSION['admin'] = 123456, и показана форма для заполнения метаданных. Т.е. сессия не была уничтожена. В чем здесь может быть проблема?
Вот что показывает функция дебага:
$_SESSION =
Array
(
[admin] => 123456
)
Хотя здесь по задумке должно быть значение true.
Во вторых после нажатия ссылки на уничтожение сессии браузер выдает такое сообщение на чистом экране "The variable host is not defined". После обновления страницы я опять попадаю на страницу авторизации (как и должно быть по идее), и дебагер показывает что в сессии нет никаких значений. В самом низу страницы высвечивается ошибка Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0.
Если заново в адресной строке браузера набрать адрес админки - то опять $_SESSION['admin'] = 123456, и показана форма для заполнения метаданных. Т.е. сессия не была уничтожена. В чем здесь может быть проблема?
Спустя 3 часа, 53 минуты, 15 секунд (6.03.2010 - 06:29) twin написал(а):
Ну с вот этим
Цитата |
Во вторых после нажатия ссылки на уничтожение сессии браузер выдает такое сообщение на чистом экране "The variable host is not defined". |
понятно, вчера разбирали этот казус.
А вот с сессией... Такая ошибка бывает от того, что в суперглобальных массивах появляются одноименные элементы. То есть допустим $_POST['admin'] и $_SESSION['admin'']. Но по моей схеме никаких $_POST['admin'] там быть не может по определению, для того и весь урок. Там должно быть
$_POST['form']['value1']
Кстати, там в аттаче рабочий пример. Сравни.
А вот с сессией... Такая ошибка бывает от того, что в суперглобальных массивах появляются одноименные элементы. То есть допустим $_POST['admin'] и $_SESSION['admin'']. Но по моей схеме никаких $_POST['admin'] там быть не может по определению, для того и весь урок. Там должно быть
$_POST['form']['value1']
Кстати, там в аттаче рабочий пример. Сравни.
Спустя 9 часов, 7 минут, 41 секунда (6.03.2010 - 15:36) LindonAlex написал(а):
Да.. Видимо я или очень глупый или очень криворукий - проблему с "The variable host is not defined" убрал, просто вчера не обратил на это сообщение внимания.
Теперь возникла такая проблема - ввожу логин и пароль, смотрим что у нас в массиве:
Однако в сессию не помещается никаких значений и я снова попадаю на страницу авторизации, т.е. по какой то причине у меня скорее всего не выполняется условие здесь:
PS
Сравнил свои скрипты с тем что в аттаче... разницы не нашел, по крайней мере в том что касается сессии... Хотя опять таки - не ручаюсь за свою состоятельность
Теперь возникла такая проблема - ввожу логин и пароль, смотрим что у нас в массиве:
$_POST =
Array
(
[form] => Array
(
[value1] => root
[value2] => 123456
)
[ok] => Отправить
)
$POST =
Array
(
[value1] => root
[value2] => 123456
[value3] =>
)
Однако в сессию не помещается никаких значений и я снова попадаю на страницу авторизации, т.е. по какой то причине у меня скорее всего не выполняется условие здесь:
/**
* Generation of page of an error at access out of system
* Генерация страницы ошибки при доступе вне системы
*/
if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('./404.html'));
}
///////////////////////////////////////////////////////////////
foreach($admins as $admin => $pass)
if($POST['value1'] === $admin && md5($POST['value2']) === $pass)
$_SESSION['admin'] = true;
if(isset($_SESSION['admin']))
reDirect();
/**
* We connect the template of enter form
* подключаем шаблон формы входа
*/
include IRB_ROOT .'/skins/tpl/admin/sequrity.tpl';
PS
Сравнил свои скрипты с тем что в аттаче... разницы не нашел, по крайней мере в том что касается сессии... Хотя опять таки - не ручаюсь за свою состоятельность
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
Спустя 5 минут, 35 секунд (6.03.2010 - 15:42) Lenarfate написал(а):
а вот так
if($ok)
{
foreach($admins as $admin => $pass)
if($POST['value1'] === $admin && md5($POST['value2']) === $pass)
$_SESSION['admin'] = true;
}
if(isset($_SESSION['admin']))
reDirect();
Спустя 13 минут, 2 секунды (6.03.2010 - 15:55) LindonAlex написал(а):
Тоже самое, вот что выдает трассировка $_SESSION :
хотя в массивах $_POST и $POST данные присутствуют...
Выглядит так как будто сессия не создается вообще хотя в индексе админки все есть:
The variable is not defined or empty
Array
(
)
хотя в массивах $_POST и $POST данные присутствуют...
Выглядит так как будто сессия не создается вообще хотя в индексе админки все есть:
/**
* We include buffering
* включаем буфферизацию
*/
ob_start();
session_start();
Спустя 16 минут, 43 секунды (6.03.2010 - 16:12) twin написал(а):
Трассировка, она зачем... Чтобы локализовать причину.
Поставь её прямо под
и поехали ниже, искать где косяк.
Поставь её прямо под
session_start();
и поехали ниже, искать где косяк.
Спустя 27 минут, 56 секунд (6.03.2010 - 16:39) LindonAlex написал(а):
Цитата |
Трассировка, она зачем... Чтобы локализовать причину. Поставь её прямо под <pre class="sh_sourceCode" rel="php"> <span class="sh_function">session_start</span><span class="sh_symbol">();</span></pre> и поехали ниже, искать где косяк. |
Поставил:
ob_start();
session_start();
include '../debug.php';
define('IRB_TRACE', true);
IrbDebug($_SESSION);
Вот что выдало:
File: Z:\home\localhost\www\saite\admin\index.php
GLOBALS
Line: 24
The variable is not defined or empty
Array
(
)
Ставим дальше в enter.php:
foreach($admins as $admin => $pass)
if($POST['value1'] === $admin && md5($POST['value2']) === $pass)
$_SESSION['admin'] = true;
ScrDebug($_SESSION);
Смотрим трассировку:
File: Z:\home\localhost\www\saite\admin\sequrity\enter.php
Function: include
Line: 28
The variable is not defined or empty
Array
(
)
Т.е. получается что не смотря на правильно введенные данные (это видно из трассировки массивов $_POST и $POST), при сравнении с данными из массива $admins условие не соблюдается и в сессии не создается переменной для авторизации.
Упростил немного код:
if($POST['value1'] === $admins['root'] && md5($POST['value2']) === $admins['123456'])
$_SESSION['admin'] = true;
ScrDebug($_SESSION);
Иииии..... О чудо!!!
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
File: Z:\home\localhost\www\saite\admin\index.php
GLOBALS
Line: 24
$_SESSION =
Array
(
[admin] => 1
)
Я авторизовался в админке и попал прямиком на страницу редактирование мета данных.
Спустя 23 минуты, 14 секунд (6.03.2010 - 17:03) twin написал(а):
И что, за ручку вести? трассировка это что? Ниже ставим и анализируем
Спустя 4 часа, 2 минуты, 9 секунд (6.03.2010 - 21:05) LindonAlex написал(а):
Но я так понимаю такой вариант:
Нам не подойдет если у нас будет несколько администраторов и у каждого будут свои данные для авторизации сохраненные в массиве admins.
if($POST['value1'] === $admins['root'] && md5($POST['value2']) === $admins['123456'])
$_SESSION['admin'] = true;
Нам не подойдет если у нас будет несколько администраторов и у каждого будут свои данные для авторизации сохраненные в массиве admins.
Спустя 11 минут, 12 секунд (6.03.2010 - 21:16) twin написал(а):
Напротив. Там как раз сделано так, что можно в массив складывать бесконечно много пар логин => пароль
Спустя 55 минут, 34 секунды (6.03.2010 - 22:12) LindonAlex написал(а):
Twin, взгляни выше, я имею в виду то что пришлось мне у себя изменить, а твой вариант чего то не захотел работать, как раз он и должен бы
Цитата |
...складывать бесконечно много пар логин => пароль |
Спустя 19 минут, 2 секунды (6.03.2010 - 22:31) twin написал(а):
Не надо менять ничего, тем блее так. Все там работает, я только что проверил.
Спустя 13 дней, 18 часов, 10 минут, 1 секунда (20.03.2010 - 16:41) Гость_Олег написал(а):
Чет меня непускает в админку( дефолтные пароль и логин root 123456 ввожу и нечего непроисходит,думал что гдетото ошибку сделал,взял скачал с сайта реализ,попробывал поставить к сибе на хостинг и тоже самое непускает,в чем может быть проблема?
![unsure.gif](http://phpforum.ru/html/emoticons/unsure.gif)
Спустя 4 часа, 58 секунд (20.03.2010 - 20:42) twin написал(а):
Логин и пароль там root root, а не root 123456
Спустя 16 дней, 17 часов, 50 минут, 6 секунд (7.04.2010 - 13:32) ohxxx написал(а):
Добрый день уважаемые IRBIS team и г-н Twin
Я хотел написать что, я думаю о курсах но не знал где это сделать, решил тут.
Спасибо большое курсы очень познавательны и очень хорошие.
Эм.... сразу скажу у меня уровень знания РНР низкий поэтому буду рассуждать с моей точки зрения.
Если до ядра все курсы я смог изучить (достаточно легко) то на ядре начались проблемы.Надо очень много надо помнить и держать в уме такую непривычно большую структуру. По крайней мере для начинающего программиста это сложно.Потому что, часто получается что вы даёте кусок кода как например default.php типа она у нас написанодавайте этим пользоваться.
А теперь собственно что я хотел бы предложить (может моё мнение примут во внимание).
Собственно сделать отдельно уроки чтобы потом их можно было "подключить" к ядру.
Урок по настройке htaccess
Урок по безопасности сайта
Урок по ЧПУ
Урок по дебагеру
Ну или ещё как нибудь разбить по другому чтобы можно было с отдельными частями поиграть и чтобы понять как они работают. ( да и потом человек соберет как ему надо ,просто может ему такая огромная структура не нужна вовсе или нужна куда более сложная модель). Конечно вы скажете ну мы же тебе предлогаем универсальное ядро бери и пользуйся и что надо привыкать сразу как должно быть...
Еще один вариант какой я вижу в процессе создания писать сначала код в один файл например. Потом код раскидать по разным файлам и создать функции. То есть можно будет просмотреть начинающим программисту код весь целиком (скажем начиная от запроса к базе заканчивая выводом на экран) и потом распихать его по файлам функционала . На мой взгляд так легче воспринять чем бегать по файлам и пытаться их собрать в одно в голове чтобы была цельная картинка (конечно я понимаю что делить код ка кто так сложно ,чтобы можно было в один файл пихнуть какую то часть а потом по файлам его распихивать )
Собственно почему я пришол к такому заключению
Если разобрать мелкие части отдельно и их рассмотреть. То начинающему будет гораздо легче , ведь он уже попользовался этим всем по отдельности и собрать в более сложную структуру будет гораздо легче. Так как , каждую часть уже понимаеш отлично просто надо привыкнуть к тому что буде определённая структура.
И ещё одна вещь не всегда понятно в какой файл код писать тесть не всегда написано куда этот код писать (относится не только к курсу ядра) поэтому предлагаю сдеать просто перед каждым кодом написать название файла тогда не нужно будут ломать голову ( иногда написано но не явно ... . а ведь НЕ за один день ядро то пройти можно когда надо все функции и их описания читать разбираться как они работают и тд и тп... .
Во общем это мои пять копеек с уважением ohxxx.
З.Ы, ещё раз благодарю за титанический труд по созданию курсов
Я хотел написать что, я думаю о курсах но не знал где это сделать, решил тут.
Спасибо большое курсы очень познавательны и очень хорошие.
Эм.... сразу скажу у меня уровень знания РНР низкий поэтому буду рассуждать с моей точки зрения.
Если до ядра все курсы я смог изучить (достаточно легко) то на ядре начались проблемы.Надо очень много надо помнить и держать в уме такую непривычно большую структуру. По крайней мере для начинающего программиста это сложно.Потому что, часто получается что вы даёте кусок кода как например default.php типа она у нас написанодавайте этим пользоваться.
А теперь собственно что я хотел бы предложить (может моё мнение примут во внимание).
Собственно сделать отдельно уроки чтобы потом их можно было "подключить" к ядру.
Урок по настройке htaccess
Урок по безопасности сайта
Урок по ЧПУ
Урок по дебагеру
Ну или ещё как нибудь разбить по другому чтобы можно было с отдельными частями поиграть и чтобы понять как они работают. ( да и потом человек соберет как ему надо ,просто может ему такая огромная структура не нужна вовсе или нужна куда более сложная модель). Конечно вы скажете ну мы же тебе предлогаем универсальное ядро бери и пользуйся и что надо привыкать сразу как должно быть...
Еще один вариант какой я вижу в процессе создания писать сначала код в один файл например. Потом код раскидать по разным файлам и создать функции. То есть можно будет просмотреть начинающим программисту код весь целиком (скажем начиная от запроса к базе заканчивая выводом на экран) и потом распихать его по файлам функционала . На мой взгляд так легче воспринять чем бегать по файлам и пытаться их собрать в одно в голове чтобы была цельная картинка (конечно я понимаю что делить код ка кто так сложно ,чтобы можно было в один файл пихнуть какую то часть а потом по файлам его распихивать )
Собственно почему я пришол к такому заключению
Если разобрать мелкие части отдельно и их рассмотреть. То начинающему будет гораздо легче , ведь он уже попользовался этим всем по отдельности и собрать в более сложную структуру будет гораздо легче. Так как , каждую часть уже понимаеш отлично просто надо привыкнуть к тому что буде определённая структура.
И ещё одна вещь не всегда понятно в какой файл код писать тесть не всегда написано куда этот код писать (относится не только к курсу ядра) поэтому предлагаю сдеать просто перед каждым кодом написать название файла тогда не нужно будут ломать голову ( иногда написано но не явно ... . а ведь НЕ за один день ядро то пройти можно когда надо все функции и их описания читать разбираться как они работают и тд и тп... .
Во общем это мои пять копеек с уважением ohxxx.
З.Ы, ещё раз благодарю за титанический труд по созданию курсов
Спустя 3 часа, 26 минут, 8 секунд (7.04.2010 - 16:58) twin написал(а):
Спасибо. Ну это все верно, просто курс этот (по ядру) рождался здесь на глазах, и кто принимал участие, все обсуждали и разбирали. Самостоятельно конечно все сложнее, именно по этому в каждом уроке есть ссылка на пост в этом форуме.
Нужно не стеснятся и спрашивать.
Конечно все не просто, но если уж сильно разложить по буковкам, негде думать будет)))
Хотя предложение хорошее. Я потихоньку буду разжевывать каждый урок/
Вто чпу к примеру есть уже.
Там только основы ведь. Всего расписать все равно нельзя, нужно думать головой. Иначе толку не будет. Ну а что совсем трудно - спрашивать. На то и форум.
Нужно не стеснятся и спрашивать.
Конечно все не просто, но если уж сильно разложить по буковкам, негде думать будет)))
Хотя предложение хорошее. Я потихоньку буду разжевывать каждый урок/
Вто чпу к примеру есть уже.
Там только основы ведь. Всего расписать все равно нельзя, нужно думать головой. Иначе толку не будет. Ну а что совсем трудно - спрашивать. На то и форум.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 11 дней, 5 часов, 25 минут, 22 секунды (18.04.2010 - 22:23) freed-master написал(а):
а как можно перед редиректом присвоить переменной значение и передать его? написано глупо, но надеюсь мысль ясна...
Спустя 10 минут, 24 секунды (18.04.2010 - 22:34) twin написал(а):
Два варианта. GET и сессия. Можно и в кукис запихать, но сие глповато...
Спустя 10 дней, 46 минут, 5 секунд (28.04.2010 - 23:20) ohxxx написал(а):
Вечер добрый г-н Twin
По уроку 7
1.Текст урока
Функция reDirect() выглядит так:
Эм.. немешлобы дописать куда этот код записывается а именно
libs/default.php
то что дальше было глупостью удалил....
По уроку 7
1.Текст урока
Функция reDirect() выглядит так:
Эм.. немешлобы дописать куда этот код записывается а именно
libs/default.php
то что дальше было глупостью удалил....
Спустя 10 часов, 45 минут, 6 секунд (29.04.2010 - 10:05) ohxxx написал(а):
Добрый день г-н Twin
По уроку 7
1.
Желатьельно всё таки поменять комментарий. А то меня например иззанего переклинило всё пытался понять как туда массив впихнуть
вот комментарий из урока :
предлагаю так:
2. Предлогаю добавить это описание к $_SERVER['HTTP_REFERER']
Элемент $_SERVER['HTTP_REFERER']
В элементе $_SERVER['HTTP_REFERER'] приводится адрес страницы, с которой посетитель пришёл на данную страницу. Переход должен осуществляться по ссылке. Создадим две страницы index.php и page.php.
Страница index.php
Страница page.php будет аналогичного содержания, но ссылка будет указывать на страницу index.php.
Страница page.php
По уроку 7
1.
Желатьельно всё таки поменять комментарий. А то меня например иззанего переклинило всё пытался понять как туда массив впихнуть
вот комментарий из урока :
function reDirect()
{ // Получаем массив аргументов, переданных в функцию reDirect()
$arguments = func_get_args();
предлагаю так:
function reDirect()
{ // из аргумента переданного в функцию reDirect() получаем массив аргументов
$arguments = func_get_args();
2. Предлогаю добавить это описание к $_SERVER['HTTP_REFERER']
Элемент $_SERVER['HTTP_REFERER']
В элементе $_SERVER['HTTP_REFERER'] приводится адрес страницы, с которой посетитель пришёл на данную страницу. Переход должен осуществляться по ссылке. Создадим две страницы index.php и page.php.
Страница index.php
<?php
echo "<a href=page.php>Ссылка на страницу PHP</a><br />";
echo "Содержимое $_SERVER['HTTP_REFERER'] - ".
$_SERVER['HTTP_REFERER']
?>
Страница page.php будет аналогичного содержания, но ссылка будет указывать на страницу index.php.
Страница page.php
<?php
echo "<a href=index.php>Ссылка на страницу PHP</a><br />";
echo "Содержимое $_SERVER['HTTP_REFERER'] - ".
$_SERVER['HTTP_REFERER']
?>
Спустя 1 день, 10 часов, 50 минут, 47 секунд (30.04.2010 - 20:56) ohxxx написал(а):
День добрый г-н TWIN
Умнея такой глюк причём тоже самое и в скачанном архиве не могу понять причину
Высвечивается и админ панель и форма входа одновременно (до ввода пароля) Да ссылки на панели не рабочие но всёже.(смысле никуда не переходит)
Изображение тут
Умнея такой глюк причём тоже самое и в скачанном архиве не могу понять причину
Высвечивается и админ панель и форма входа одновременно (до ввода пароля) Да ссылки на панели не рабочие но всёже.(смысле никуда не переходит)
Изображение тут
Спустя 15 дней, 4 часа, 41 минута, 2 секунды (16.05.2010 - 01:37) Гость_Кирилл написал(а):
Спасибо, спасибо, спасибо!
плачу от счастья; как мне не хватало такого материала...
плачу от счастья; как мне не хватало такого материала...
Спустя 2 дня, 21 час, 22 минуты, 12 секунд (18.05.2010 - 22:59) Igrok написал(а):
Добрый вечер!
По уроку 7.
Хорошо бы добавить ссылку на файл, с которым происходит действие, а то не сразу понятно:
По уроку 7.
Хорошо бы добавить ссылку на файл, с которым происходит действие, а то не сразу понятно:
Цитата |
и продолжим. Вообще мы довольно много уже изучили, пора начинать задачки посложнее. Соорудим-ка мы контроллер редактирования метаданных. Нечто подобное мы уже сооружали в гостевой книге. Вот он: |
Т.е. что-то типа:
Цитата |
Вот он: admin/meta/read_controller.php |
И в файле www7.zip отсутствует описание функции reDirect() в файле libs/default.php.
Спасибо за курсы!
Спустя 43 минуты, 33 секунды (18.05.2010 - 23:42) twin написал(а):
Спасибо, будем исправлять.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 9 дней, 12 часов, 18 минут, 44 секунды (28.05.2010 - 12:01) igor717 написал(а):
Здравствуйте, скажите пожалуйста, где лучше хранить данные логин-пароль в БД ли же в конфиге?
Спустя 1 час, 6 минут, 50 секунд (28.05.2010 - 13:08) twin написал(а):
Смотря какой. В файле надежнее, но хлопотнее. По этому админские лучше в файле, пользовательские - в базе.
Спустя 28 минут, 49 секунд (28.05.2010 - 13:37) igor717 написал(а):
Спасибо, как всегда все по полочкам!
Спустя 4 часа, 42 минуты, 33 секунды (28.05.2010 - 18:19) igor717 написал(а):
twin, поднималась тема при прямом доступе к файлу... Скажите пожалуйста, так все таки, есть ли смысл в этой защите?
Если она в принцепе ничего не защищает. Ведь "незаинтересованный" пользователь в жизни не наберет ....php? Есть ли смысл допустим в самом низу корневой директории оставить только index.php, а остальные (variables.php, config.php) закинуть в отдельную и запретить доступ ко всем файлам, кроме главного в .htaccess?
if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('../../404.html'));
}
Если она в принцепе ничего не защищает. Ведь "незаинтересованный" пользователь в жизни не наберет ....php? Есть ли смысл допустим в самом низу корневой директории оставить только index.php, а остальные (variables.php, config.php) закинуть в отдельную и запретить доступ ко всем файлам, кроме главного в .htaccess?
Спустя 2 минуты, 6 секунд (28.05.2010 - 18:21) twin написал(а):
Все, сил больше нет.
Я напишу завтра развернутое обоснование.
Не думал, что такая мелочь вызовет столь живой интерес)))
Я напишу завтра развернутое обоснование.
Не думал, что такая мелочь вызовет столь живой интерес)))
Спустя 27 дней, 18 часов, 19 минут, 55 секунд (26.06.2010 - 12:41) AXS написал(а):
Доброго времени... Смутила завязка reDirect() и href()
Дело в том, что reDirect() принимает параметры и поместив их в массив передаёт их функции href()
Та в свою очередь приняв его опять помещает в массив и в итоге получаем:
Ну и как следствие: The variable Array is not defined
Что здесь не так???
PS: Смотрю через отладчик и баузеры FF и Хром
Дело в том, что reDirect() принимает параметры и поместив их в массив передаёт их функции href()
Та в свою очередь приняв его опять помещает в массив и в итоге получаем:
array (
0: array (
0: string "page=main"
1: string "rem=21"
)
)
Ну и как следствие: The variable Array is not defined
Что здесь не так???
PS: Смотрю через отладчик и баузеры FF и Хром
Спустя 59 минут, 10 секунд (26.06.2010 - 13:41) AXS написал(а):
Короче не знаю в чём головняк, но сделал вот что:
Было в href():
Стало:
Было в href():
$arg = func_get_arg(0); // Получаем массив аргументов переданных в функцию
Стало:
$arg = func_get_arg(0); // Получаем массив аргументов переданных в функцию href(тут_вот)
if (!is_array($arg))
$arg = func_get_args();
Спустя 9 минут, 14 секунд (26.06.2010 - 13:50) Guest написал(а):
То есть
Было:
Стало:
Было:
<?php
$arg = func_get_args; // Получаем массив аргументов переданных в функцию
Стало:
<?php
$arg = func_get_arg(0); // Получаем массив аргументов переданных в функцию href(тут_вот)
if (!is_array($arg))
$arg = func_get_args();
Спустя 18 дней, 23 часа, 1 минута, 8 секунд (15.07.2010 - 12:51) X L написал(а):
Здравствуйте уважаемые программисты.
Значит дошёл я до 7-го урока а хитрый php всё ни как не успокоиться - запустив скачанный архив я обнаружил:
на главной странице -
TRACE № 1.
File: Z:\home\...ru\www\modules\main\view.php
Function: include
Line: 9
The variable is not defined or empty
Будьте добры, объясните - пожалуйста - Почему это происходит
И КАК??? мне от этого избавиться.
ОООчень хочется знать.
Значит дошёл я до 7-го урока а хитрый php всё ни как не успокоиться - запустив скачанный архив я обнаружил:
на главной странице -
TRACE № 1.
File: Z:\home\...ru\www\modules\main\view.php
Function: include
Line: 9
The variable is not defined or empty
Будьте добры, объясните - пожалуйста - Почему это происходит
И КАК??? мне от этого избавиться.
![blink.gif](http://phpforum.ru/html/emoticons/blink.gif)
Спустя 12 дней, 3 часа, 34 минуты, 18 секунд (27.07.2010 - 16:25) twin написал(а):
Кто работает?
Спустя 1 месяц, 3 дня, 3 часа, 19 минут, 11 секунд (30.08.2010 - 19:44) Omega написал(а):
Добрый вечер. Вот фрагмент файла ./admin/meta/read_controller.php :
$arrays = array_fill(1, count($pages), array(
'title' => IRB_NO_TITLE,
'keywords' => IRB_NO_KEYWORDS,
'description' => IRB_NO_DESCRIPTION
));
Вопрос: а почему первый параметр array_fill равен 1, а не 0?
$arrays = array_fill(1, count($pages), array(
'title' => IRB_NO_TITLE,
'keywords' => IRB_NO_KEYWORDS,
'description' => IRB_NO_DESCRIPTION
));
Вопрос: а почему первый параметр array_fill равен 1, а не 0?
Спустя 6 минут, 13 секунд (30.08.2010 - 19:51) Omega написал(а):
Блин, вот спросил так спросил, сорри! Просто опыта ещё мало, не всегда отличаю важное от неважного... и начинаю искать скрытый смысл там, где его и нет ваще...
Спустя 3 минуты, 9 секунд (30.08.2010 - 19:54) twin написал(а):
Цитата |
Вопрос: а почему первый параметр array_fill равен 1, а не 0? |
А фиг знает... Это не суть важно, можно и нуль. Все равно следом идет преобразования массива.
PS Ну вот, сам докопался.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 23 часа, 40 минут, 54 секунды (31.08.2010 - 19:35) Omega написал(а):
Я тут всё админку мучаю
Установил всё из архива www7.zip на виртуальный хост rbis, и попробовал залогиниться в админке:
root root работает, а 123456 123456 - не хочет. И так и сяк смотрю - ничё не понимаю... Может знаете, в чём дело? А то что-то никак не соображу.
P.S.
Нет, ну ничего не понимаю... смотрю код, все вроде должно работать, но пара 123456 123456 упорно не проходит сравнения. У меня уже глаз дергается
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
root root работает, а 123456 123456 - не хочет. И так и сяк смотрю - ничё не понимаю... Может знаете, в чём дело? А то что-то никак не соображу.
P.S.
Нет, ну ничего не понимаю... смотрю код, все вроде должно работать, но пара 123456 123456 упорно не проходит сравнения. У меня уже глаз дергается
![huh.gif](http://phpforum.ru/html/emoticons/huh.gif)
Спустя 37 минут, 53 секунды (31.08.2010 - 20:13) A.V. написал(а):
Omega,
так проверьте первым делом в массиве с именами-паролями админов (config.php), есть ли там ключ и значение 123456.
так проверьте первым делом в массиве с именами-паролями админов (config.php), есть ли там ключ и значение 123456.
Спустя 6 минут, 22 секунды (31.08.2010 - 20:19) Omega написал(а):
Вот массив в конфиге:
$admins = array(
'123456' => 'e10adc3949ba59abbe56e057f20f883e',
'root' => '63a9f0ea7bb98050796b649e85481845',
Тут ещё одие момент: попробовал использовать вместо "цифровых" буквенные пары типа abc => abc. С такими парами все работает.
Ещё: 'root23' => md5('root23') ещё работает, а '23' => md5('23') уже нет.
$admins = array(
'123456' => 'e10adc3949ba59abbe56e057f20f883e',
'root' => '63a9f0ea7bb98050796b649e85481845',
Тут ещё одие момент: попробовал использовать вместо "цифровых" буквенные пары типа abc => abc. С такими парами все работает.
Ещё: 'root23' => md5('root23') ещё работает, а '23' => md5('23') уже нет.
Спустя 21 минута, 24 секунды (31.08.2010 - 20:40) twin написал(а):
Да, мой косяк. Дело в том, что стоит строгое равенство при проверке логина
параноя... В конфиге это строка, а в POST - число. Логин, состоящий из одних цифр он отвергает. Нужно поставить простое равенство
или не использовать числовые логины.
foreach($admins as $admin => $pass) {
if($POST['value1'] === $admin && md5($POST['value2']) === $pass)
$_SESSION['admin'] = true;
параноя... В конфиге это строка, а в POST - число. Логин, состоящий из одних цифр он отвергает. Нужно поставить простое равенство
foreach($admins as $admin => $pass) {
if($POST['value1'] == $admin && md5($POST['value2']) === $pass)
$_SESSION['admin'] = true;
или не использовать числовые логины.
Спустя 44 минуты, 17 секунд (31.08.2010 - 21:25) Omega написал(а):
Цитата |
В конфиге это строка, а в POST - число. |
Получается, что когда мы в форме вводим число, то оно попадает в _POST как число, а не в виде кодов символов 1, 2, ... ?
Спустя 10 минут, 49 секунд (31.08.2010 - 21:35) twin написал(а):
Да.
Спустя 12 минут, 27 секунд (31.08.2010 - 21:48) Omega написал(а):
Вопрос снят.
Спустя 3 дня, 22 часа, 53 минуты, 8 секунд (5.09.2010 - 20:41) Слава написал(а):
К этому ядру можно прикрутить кучу разделов, страниц и т.д.
Соответственно, можно прикрутить и кучу МЕТА тегов.
Вопрос - Где луче хранить Мета теги (файл или база данных)
Соответственно, можно прикрутить и кучу МЕТА тегов.
Вопрос - Где луче хранить Мета теги (файл или база данных)
Спустя 21 минута, 36 секунд (5.09.2010 - 21:03) Слава написал(а):
Перефразирую.
Допустим в базе хранится сто статей на одну тему. Модуль отвечающий за эту тему вытягивает их в зависимости от нажатого. Выходит одни и те же МЕТА теги на все сто статей. Не писать же на каждую статью модуль???
Может луче их писать с ключами (модуль) (статья). Опять же, если писать их в файл, или много файлов или ОГРОМНЫЙ массив в одном файле. Выход ли писать их в специальную таблицу в базе или прикрепить, луче их к таблице со статьями???
Допустим в базе хранится сто статей на одну тему. Модуль отвечающий за эту тему вытягивает их в зависимости от нажатого. Выходит одни и те же МЕТА теги на все сто статей. Не писать же на каждую статью модуль???
Может луче их писать с ключами (модуль) (статья). Опять же, если писать их в файл, или много файлов или ОГРОМНЫЙ массив в одном файле. Выход ли писать их в специальную таблицу в базе или прикрепить, луче их к таблице со статьями???
Спустя 12 минут, 41 секунда (5.09.2010 - 21:15) twin написал(а):
Конечно в таком случае нужно писать в базу. Причем можно в ту же таблицу, что и сами статьи.
Спустя 3 дня, 1 час, 25 минут, 57 секунд (8.09.2010 - 22:41) Слава написал(а):
Я так понимаю, что в таком случае блок МЕТА можно удалить (или может его модернизировать под логин - пароль администратора?)
Спустя 9 минут, 16 секунд (8.09.2010 - 22:50) twin написал(а):
Все зависит от твоей фантазии)))
Не нужен - значит удали.
Не нужен - значит удали.
Спустя 4 дня, 14 часов, 20 минут, 37 секунд (13.09.2010 - 13:11) ShamanV написал(а):
Да, в этом уроке пришлось регулярно спотыкаться. Дело в том, что начиная с этого момента:
Цитата |
Вообще мы довольно много уже изучили, пора начинать задачки посложнее. Соорудим-ка мы контроллер редактирования метаданных. Нечто подобное мы уже сооружали в гостевой книге. |
становится трудно понять, в какие файлы писать приведенные куски кода. Раньше названия файлов явно указывались перед кодом.
Я воспринял это как домашнее задание и решил сравнить с вашей версией ядра. Скачал, поставил и...
1. При попытке зайти в админку не пускает. Посмотрел на код:
$admins = array(
'root' => '63a9f0ea7bb98050796b649e85481845', // root => root Изменить в релизе
'123456' => 'e10adc3949ba59abbe56e057f20f883e',
);
Но вы же сами предлагали обработать пароли ф-цией md5(). И при анализе принятых данных она используется. А тут забыли...
2. После добавления md5() пароль был принят, но редирект не сработал. Страница приняла угрожающий вид:
Цитата |
Fatal error: Call to undefined function reDirect() in Z:\home\www7\www\admin\sequrity\enter.php on line 28 |
Насколько я понял, функцию reDirect() было предложено поместить файл библиотеки default.php. Но в нем нет этой ф-ции, забыли положить.
После добавления функции вроде бы работает как надо.
Спустя 57 минут, 31 секунда (13.09.2010 - 14:09) twin написал(а):
Цитата |
И при анализе принятых данных она используется. А тут забыли... |
Так а это что?
Это тот самый MD5-хэш и есть. От пароля root.
Редирект действительно позабыли.
Спасибо, поправил.
'63a9f0ea7bb98050796b649e85481845'
Это тот самый MD5-хэш и есть. От пароля root.
Редирект действительно позабыли.
![sad.gif](http://phpforum.ru/html/emoticons/sad.gif)
Спасибо, поправил.
Спустя 6 минут, 18 секунд (13.09.2010 - 14:15) ShamanV написал(а):
Цитата (twin @ 13.09.2010 - 11:09) | ||
Так а это что? '63a9f0ea7bb98050796b649e85481845' Это тот самый MD5-хэш и есть. От пароля root. Редирект действительно позабыли. ![]() Спасибо, поправил. |
О! А я думаю, что это пароль такой странный
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 38 минут, 45 секунд (13.09.2010 - 14:54) ShamanV написал(а):
admin/sequrity/enter.php
Относительный путь вроде бы неправильно прописан.
Кстати, admin_menu.tpl отображается у нас для всех, кто зашел по админскому адресу, еще до авторизации. Имеет ли смысл показывать (пускай и косвенно) возможности админ-панели всем желающим?
if(!defined('IRB_KEY'))
{
header("HTTP/1.1 404 Not Found");
exit(file_get_contents('./404.html'));
}
Относительный путь вроде бы неправильно прописан.
Кстати, admin_menu.tpl отображается у нас для всех, кто зашел по админскому адресу, еще до авторизации. Имеет ли смысл показывать (пускай и косвенно) возможности админ-панели всем желающим?
Спустя 9 дней, 2 часа, 57 минут, 1 секунда (22.09.2010 - 17:51) Гость_MrRobby написал(а):
Помогите пожалуйста, все сделал, но выдает такую ошибку:
Все перепроверял несколько раз но ничего не нашел(
Use of undefined constant IRB_META_ADMIN - assumed 'IRB_META_ADMIN'
Все перепроверял несколько раз но ничего не нашел(
Спустя 1 час, 17 минут, 46 секунд (22.09.2010 - 19:08) twin написал(а):
неопределена константа IRB_META_ADMIN.
В языковом файле должно быть так:
В языковом файле должно быть так:
define('IRB_META_ADMIN', 'Панель администрирования');
Спустя 44 минуты, 11 секунд (22.09.2010 - 19:53) Guest написал(а):
в том то и проблема что там прописано( все остальные определяет а вот эту не хочет(
Спустя 1 час, 1 минута, 3 секунды (22.09.2010 - 20:54) MrRobby написал(а):
ой все спасибо, проблема решена) нужно было в индексе подключение файла ru.php поставить раньше чем view.php
Спустя 24 дня, 13 часов, 42 минуты, 1 секунда (17.10.2010 - 10:36) minok94 написал(а):
Немогу войти в админку, показывает меню и поле авторизации но после набора данных страница просто перезагружается.
Или я чего то не понимаю?
Или я чего то не понимаю?
Спустя 7 дней, 10 часов, 28 минут, 59 секунд (24.10.2010 - 21:05) kovaldm написал(а):
Цитата (twin @ 22.09.2010 - 20:08) |
неопределена константа IRB_META_ADMIN. В языковом файле должно быть так: define('IRB_META_ADMIN', 'Панель администрирования'); |
На мой взгляд лучше было-бы назвать ее 'IRB_LANG_META_ADMIN', так как определяется она в языковом файле.
Спустя 1 минута, 21 секунда (24.10.2010 - 21:06) kovaldm написал(а):
Цитата (minok94 @ 17.10.2010 - 11:36) |
Немогу войти в админку, показывает меню и поле авторизации но после набора данных страница просто перезагружается. Или я чего то не понимаю? |
Такое происходит, если неправильно набрать логин/пароль.
Спустя 3 дня, 13 часов, 28 минут, 56 секунд (28.10.2010 - 10:35) oblomingo написал(а):
Доброе время суток, хочу поблагодарить за замечательный материал на вашем сайте! Уроки полезные, все доступно раскрыто.
Одно замечание - в 7 уроке, когда вы устанавливаете админку, модуль называете sequrity.
Затем сделаем файл admin/sequrity/enter.php ...
include IRB_ROOT .'/skins/tpl/admin/sequrity.tpl'; ...
Может правильнее все это дело было бы переименовать в security ?
Одно замечание - в 7 уроке, когда вы устанавливаете админку, модуль называете sequrity.
Затем сделаем файл admin/sequrity/enter.php ...
include IRB_ROOT .'/skins/tpl/admin/sequrity.tpl'; ...
Может правильнее все это дело было бы переименовать в security ?
Спустя 1 минута, 39 секунд (28.10.2010 - 10:37) oblomingo написал(а):
Цитата (minok94 @ 17.10.2010 - 07:36) |
Немогу войти в админку, показывает меню и поле авторизации но после набора данных страница просто перезагружается. Или я чего то не понимаю? |
Та же проблема ...
Спустя 7 минут, 4 секунды (28.10.2010 - 10:44) twin написал(а):
пароль меняли?
Спустя 55 минут, 57 секунд (28.10.2010 - 11:40) oblomingo написал(а):
Нет, я пока просто по кусочкам все собираю.
В конфиге только поменял:
'root' => '63a9f0ea7bb98050796b649e85481845' на 'root' => 'root'
Ибо в enter.php:
if ($POST['value1'] === $admin && md5($POST['value2']) === $pass)
...$POST['value1'] без функции md5. Правильно сделал? В любом случае залогинится не выходит, попробую ваш вариант скачать и поискать ошибку у себя.
Только что попробовал вариант, скачанный со странички седьмого урока - залогиниться и тут не получилось
Логин: root
Пасс: 123456
Так ?
В конфиге только поменял:
'root' => '63a9f0ea7bb98050796b649e85481845' на 'root' => 'root'
Ибо в enter.php:
if ($POST['value1'] === $admin && md5($POST['value2']) === $pass)
...$POST['value1'] без функции md5. Правильно сделал? В любом случае залогинится не выходит, попробую ваш вариант скачать и поискать ошибку у себя.
Только что попробовал вариант, скачанный со странички седьмого урока - залогиниться и тут не получилось
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Логин: root
Пасс: 123456
Так ?
Спустя 1 час, 43 минуты, 9 секунд (28.10.2010 - 13:23) twin написал(а):
Ну там же написано Логин => Пароль
root => root
Логин: root
Пасс: root
root => root
Логин: root
Пасс: root
Спустя 3 часа, 40 минут, 30 секунд (28.10.2010 - 17:03) oblomingo написал(а):
Моя ошибка
спасибо за помощь!
Кстати, в последней версии рамки (8 урок) из /libs/default.php функция reDirect исчезла ...
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Кстати, в последней версии рамки (8 урок) из /libs/default.php функция reDirect исчезла ...
Спустя 1 месяц, 20 дней, 1 час, 22 минуты, 31 секунда (18.12.2010 - 19:26) Vasisas написал(а):
Добрый день . Спасибо за интересные курсы.
Вопросик такой (не пойму в чем ошибка)
Захожу в панель администрирования набрав адрес в адресной строке бровзера.
когда в панели администрации ввожу пароль и логин нажимаю отправить запрос.
вываливается
Notice: Undefined index: HTTP_REFERER in X:\... ...\libs\default.php on line 71
Если нажать F5 то дальше заходит в админ панель. Конечно я не очень силен в том что там должно быть в переменной $_SERVER['HTTP_REFERER']
Вопросик такой (не пойму в чем ошибка)
Захожу в панель администрирования набрав адрес в адресной строке бровзера.
когда в панели администрации ввожу пароль и логин нажимаю отправить запрос.
вываливается
Notice: Undefined index: HTTP_REFERER in X:\... ...\libs\default.php on line 71
Если нажать F5 то дальше заходит в админ панель. Конечно я не очень силен в том что там должно быть в переменной $_SERVER['HTTP_REFERER']
Спустя 5 часов, 37 минут, 54 секунды (19.12.2010 - 01:04) twin написал(а):
Странно это всё... Сервер локальный?
Спустя 41 минута, 27 секунд (19.12.2010 - 01:45) Vasisas написал(а):
До локальный. Причем без разницы что мой (тот который по вашим урокам сам писал) код что ваш код.
Может быть это как то с настройками сервера связанно.Сервер денверовский использовал как на вашем сайте написано все курсы проходил все подряд.
Может быть это как то с настройками сервера связанно.Сервер денверовский использовал как на вашем сайте написано все курсы проходил все подряд.
Спустя 17 дней, 15 часов, 5 минут (6.01.2011 - 16:50) web-dev написал(а):
switch($GET['page'])
{
case 'main':
include IRB_ROOT .'admin/main/router.php';
break;
case 'second':
include IRB_ROOT .'admin/second/router.php';
break;
case 'meta':
include IRB_ROOT .'admin/meta/router.php';
break;
case 'exit':
include IRB_ROOT .'admin/sequrity/exit.php';
break;
default:
include IRB_ROOT .'admin/main/router.php';
break;
}
Для каждой страницы нужно что ли свой кейс писать?
Спустя 3 минуты, 28 секунд (6.01.2011 - 16:54) inpost написал(а):
web-dev
Не страницы, а модуля, к примеру: модуль пользователя, внутри роутера что-то наподобии:
include $GET[' rem'];
А внутри модуля функционал по авторизации, лички, переписки и т.д. А в page передаётся ,как бы, раздел. В админке это "Новости", а внутри страницы по обновлению, добавлению, редактированию, удалению и т.д.
С другой стороны можно было бы вообще заменить на:
Не страницы, а модуля, к примеру: модуль пользователя, внутри роутера что-то наподобии:
include $GET[' rem'];
А внутри модуля функционал по авторизации, лички, переписки и т.д. А в page передаётся ,как бы, раздел. В админке это "Новости", а внутри страницы по обновлению, добавлению, редактированию, удалению и т.д.
С другой стороны можно было бы вообще заменить на:
include IRB_ROOT .'admin/'.$GET['page'].'/router.php';
Спустя 1 месяц, 4 дня, 23 часа, 3 минуты, 54 секунды (11.02.2011 - 15:58) kent666 написал(а):
Доброе время суток! Помогите разобраться с функцией array_combine
есть данные в конфиге
есть обрабатывающий скрипт
в справочнике функций написано что функция array_combine создает новый простой(или ассоциативный) массив из исходных, причем использует один массив в качестве ключей, второй в качестве значений нового массива.
когда я вывожу массив $meta видно, что первичный ключ это не значение массива $CONFIG_SETTING а ключ
Array (
[main] => Array ( [title] => First_page [keywords] => IRB_LANG_NO_KEYWORDS [description] => IRB_LANG_NO_DESCRIPTION )
[second] => Array ( [title] => Вторая страница [keywords] => IRB_LANG_NO_KEYWORDS [description] => IRB_LANG_NO_DESCRIPTION )
)
подскажите пожалуйста где я протупил! :unsure:
есть данные в конфиге
/**
* Installation page
* Установка страниц
*/
$CONFIG_SETTING = array(
'main' => 'Главная страница',
'second' => 'Вторая страница' ,
);
есть обрабатывающий скрипт
if(!file_exists(IRB_ROOT .'/setup/meta.txt')) // Проверяем наличие файла. Если нет - формируем.
{ // Получаем массив названий модулей
global $CONFIG_SETTING;
// Заполняем ассоциативный массив элементами-массивами с атрибутами мета-тегов по числу модулей
$arrays = array_fill(1, count($CONFIG_SETTING), array(
'title' => IRB_LANG_NO_TITLE,
'keywords' => IRB_LANG_NO_KEYWORDS,
'description' => IRB_LANG_NO_DESCRIPTION
));
// Создаем массив, где ключами - названия модулей, элементами - массивы с метаданными
$meta = array_combine($CONFIG_SETTING, $arrays);
в справочнике функций написано что функция array_combine создает новый простой(или ассоциативный) массив из исходных, причем использует один массив в качестве ключей, второй в качестве значений нового массива.
когда я вывожу массив $meta видно, что первичный ключ это не значение массива $CONFIG_SETTING а ключ
Array (
[main] => Array ( [title] => First_page [keywords] => IRB_LANG_NO_KEYWORDS [description] => IRB_LANG_NO_DESCRIPTION )
[second] => Array ( [title] => Вторая страница [keywords] => IRB_LANG_NO_KEYWORDS [description] => IRB_LANG_NO_DESCRIPTION )
)
подскажите пожалуйста где я протупил! :unsure:
Спустя 6 часов, 59 минут, 29 секунд (11.02.2011 - 22:57) twin написал(а):
А работает или ошибка?
Спустя 16 часов, 25 минут, 37 секунд (12.02.2011 - 15:23) kent666 написал(а):
Все работает.
Просто не могу понять почему функция array_combine вместо значений массива берет его ключи
И в конце 7 урока в архиве www7 в файле default нет функции reDirect
Просто не могу понять почему функция array_combine вместо значений массива берет его ключи
![unsure.gif](http://phpforum.ru/html/emoticons/unsure.gif)
И в конце 7 урока в архиве www7 в файле default нет функции reDirect
Спустя 1 час, 36 минут, 59 секунд (12.02.2011 - 17:00) kent666 написал(а):
А вопросы по гостевой книге писать здесь или в другом разделе?
Нужна помощь!
У меня затруднение со строкой
Искал пояснения на форумах. Там такая структура используется, но понятного описания я не нашел!
Функция dirname(__FILE__) определяет имя каталога текущего файла, но для чего тогда функция basename?
Ведь она определяет имя файла, а в ее аргументе уже только имя каталога
Нужна помощь!
У меня затруднение со строкой
/**
* Define the name of the current catalogue
* Определяем название текущего каталога
*/
$modul = basename(dirname(__FILE__));
Искал пояснения на форумах. Там такая структура используется, но понятного описания я не нашел!
Функция dirname(__FILE__) определяет имя каталога текущего файла, но для чего тогда функция basename?
Ведь она определяет имя файла, а в ее аргументе уже только имя каталога
Спустя 9 минут, 35 секунд (12.02.2011 - 17:09) twin написал(а):
Ну каталог тоже определяет
Спустя 3 месяца, 7 дней, 2 часа, 3 минуты, 59 секунд (19.05.2011 - 18:13) Vseonet написал(а):
Добрый день.
У меня почему то при заходе в админку и вводе пароля метаданные указываются константами, а не заменяются на строки, которые мы в них положили. Причем так происходит только в скачаном архиве. Те скрипты, которые я делал по листингам работают правильно.
Проверил подключение языкового файла в индексе - есть
Константы в конфиге - есть
Конструкции во вьюшке - тоже все правильно
В общем причину так и не нашел, вот такой нотис:
Мб сами поймете, где что то пропустили
И еще есть пару предложений:
1. Ну а вот тут достаем из чулана заветный бубен и начинаем оголтело скакать с ним вокруг индекса. - мб стоит добавить в этом предложении, что речь идет о индексе, который в админке. А то я долго втыкал, почему вдруг файлы стали вызываться из /admin. Потом только дошло, что приведен листинг индекса админки.
2. В листинге admin/meta/read_controller.php возможно опечатка в коментарии:
// Создаем массив, где ключами - названия модулей, элементами - массивы с метаданными Мб лучше ключи и элементы
3. В этом же листинге функции getMenu() и getModul() названы одинаково: * Функция генерации меню модулей
У меня почему то при заходе в админку и вводе пароля метаданные указываются константами, а не заменяются на строки, которые мы в них положили. Причем так происходит только в скачаном архиве. Те скрипты, которые я делал по листингам работают правильно.
Проверил подключение языкового файла в индексе - есть
Константы в конфиге - есть
Конструкции во вьюшке - тоже все правильно
В общем причину так и не нашел, вот такой нотис:
Notice: Use of undefined constant IRB_LANG_NO_DESCRIPTION - assumed 'IRB_LANG_NO_DESCRIPTION' in Z:\home\localhost\www\proverka\admin\meta\view.php on line 25
Мб сами поймете, где что то пропустили
И еще есть пару предложений:
1. Ну а вот тут достаем из чулана заветный бубен и начинаем оголтело скакать с ним вокруг индекса. - мб стоит добавить в этом предложении, что речь идет о индексе, который в админке. А то я долго втыкал, почему вдруг файлы стали вызываться из /admin. Потом только дошло, что приведен листинг индекса админки.
2. В листинге admin/meta/read_controller.php возможно опечатка в коментарии:
// Создаем массив, где ключами - названия модулей, элементами - массивы с метаданными Мб лучше ключи и элементы
3. В этом же листинге функции getMenu() и getModul() названы одинаково: * Функция генерации меню модулей
Спустя 26 дней, 4 часа, 42 минуты, 39 секунд (15.06.2011 - 22:56) Domin написал(а):
twin у меня такая проблемка, я именно с функцией reDirect()
дело все в том что я передаю туда значения так reDirect('page=home');
вылетает ошибка из функции href(), а иммено вот эта строка :
дальше идет учловие, оно не выполняется и соответственно
как быть ?
дело все в том что я передаю туда значения так reDirect('page=home');
вылетает ошибка из функции href(), а иммено вот эта строка :
$param = explode('=', $var); // Разделяем имя переменной и значение (page=gallery, например)
дальше идет учловие, оно не выполняется и соответственно
die('The variable <b>'. $param[0] .'</b> is not defined'); // Иначе...
как быть ?
Спустя 16 часов, 28 минут, 10 секунд (16.06.2011 - 15:24) nugle написал(а):
twin
у меня теоретический вопрос.
Получается любая страница сайта считается модулем?
____________________________
Все понял. вопрос снят.
у меня теоретический вопрос.
Получается любая страница сайта считается модулем?
____________________________
Все понял. вопрос снят.
Спустя 3 дня, 10 часов, 5 минут, 55 секунд (20.06.2011 - 01:30) mxwuser написал(а):
Такой вопрос. Есть страница, которая должна открываться только в случае существования GET переменной. Ваш массив (GET), в любом случае имеет эту переменную равную 0. Получается что проверкой if(!isset($GET['id'])), не проверить наличие этой перемееной. Как с этим бороться? Или просто сделать запрос с доп. проверкой на неравенство 0.
Спустя 2 минуты, 18 секунд (20.06.2011 - 01:32) Игорь_Vasinsky написал(а):
isset() - как раз и проверяет наличие, а тебе нужно проверять именно на соответствие
Спустя 1 минута, 59 секунд (20.06.2011 - 01:34) Игорь_Vasinsky написал(а):
nugle
модулем является именно модуль, а страница генерирется вместе - контроллер, модуль, вид
модулем является именно модуль, а страница генерирется вместе - контроллер, модуль, вид
Спустя 16 минут, 24 секунды (20.06.2011 - 01:51) mxwuser написал(а):
Цитата |
isset() - как раз и проверяет наличие, а тебе нужно проверять именно на соответствие |
Я все правильно написал. Мне и нужно проверить наличие. Если есть - то дальше генерируем страницу, в соответствии с этой переменной. Если нет ее - перенаправляем. А с этим массивом GET, получается что эта переменная всегда есть, даже если в строке URL ее нету.
Спустя 4 минуты, 46 секунд (20.06.2011 - 01:55) Игорь_Vasinsky написал(а):
Прочитай внимательно что ты написал
Цитата |
GET, получается что эта переменная всегда есть, даже если в строке URL ее нету. |
$rem = isset($_GET['rem']) : $_GET['rem'] : null;
if($rem)
echo "Я тута!";
else
echo "Меня нету!";
Спустя 8 минут, 32 секунды (20.06.2011 - 02:04) mxwuser написал(а):
Мне кажется ты даже не понимаешь о чем пишешь. Чтобы понять о чем я пишу, тебе нужно было изучить движок предложенный Твином.
Я говорю не о массиве $_GET, а о массиве $GET.
Я говорю не о массиве $_GET, а о массиве $GET.
Спустя 1 минута, 34 секунды (20.06.2011 - 02:05) Игорь_Vasinsky написал(а):
упс
теорию знаю, а для практики у меня свой., т.е. он тоже на MVC, но реализация не такая ветвляющая.
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
теорию знаю, а для практики у меня свой., т.е. он тоже на MVC, но реализация не такая ветвляющая.
Спустя 40 минут, 9 секунд (20.06.2011 - 02:46) inpost написал(а):
mxwuser
$GET, $ok, $go, $do, $POST -> они существуют, но пустые. (кроме $GET['page'] & $GET['rem'] & $GET['num']). проверяй на !empty =)
$GET, $ok, $go, $do, $POST -> они существуют, но пустые. (кроме $GET['page'] & $GET['rem'] & $GET['num']). проверяй на !empty =)
Спустя 10 часов, 51 минута, 27 секунд (20.06.2011 - 13:37) mxwuser написал(а):
inpost
Да в том то и дело что не пустые. Проверка на пустоту тоже не дает желаемого эффекта. Если выводить через принт_р массив GET, показывает
Добавлено:
Изменил 0 на NULL:
Вроде как теперь на существование нормально проверяет, но подводных камней не появится в таком случае?
Да в том то и дело что не пустые. Проверка на пустоту тоже не дает желаемого эффекта. Если выводить через принт_р массив GET, показывает
Array ( [page] => register [rem] => read [id] => 0 [num] => 0 )
Добавлено:
Изменил 0 на NULL:
/**
* Array of variables for GET-parametres
* Массив переменных для GET-параметров
*/
$GET = array(
'page' => 'main',
'rem' => 'read',
'id' => NULL,
'num' => 0,
);
Вроде как теперь на существование нормально проверяет, но подводных камней не появится в таком случае?
Спустя 9 дней, 10 часов, 50 минут, 45 секунд (30.06.2011 - 00:28) aveBen написал(а):
Прошел курс по ядру. Очень понравился материал, сидел вникал и накопилось несколько вопросов. Но задам только один, остальные скорее всего отпадут ![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
На примере Вашего ядра, я хочу сделать модуль. Совершенно обычный с использованием MySQL. У вас же, очень много внимания уделено работе с файлами. Например в админке мета редактируется и заноситься в модули через файл. Я собираюсь делать свой модуль с хранением информации в БД.
Вопрос: правильную ли схему я избрал?
1) Я создаю базу. Заполняю её несколькими данными.
2) Делаю модуль modules/news (к примеру)
3) Делаю запрос к базе с выводом данных в цикле while не более 5 новостей. (остальные в будущем я планирую в постраничку вывести) В итоге, мы имеем модуль с выведенной информацией.
4) В админке создаю форму для заполнения полей которые соответствуют полям и таблицам в БД + методом POST передаю информацию в БД. Новая новость заносится в БД.
5) На сайте пропадает старая новость с например id?=1 и добавляется новая id?=6.
Получается обычный вывод информации и обычный ввод информации для данного модуля. Шаги я правильно описал? Хочу приспособиться к Вашему ядру, что бы в дальнейшем не косячить и не задавать подобных вопрос
Конечно правильней было бы сделать а уже потом, задавать вопрос. Но тут логика такая у меня, лучше 1 раз спросить, чем потом 101 раз переспрашивать.
Заранее спасибо за ответ.
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
На примере Вашего ядра, я хочу сделать модуль. Совершенно обычный с использованием MySQL. У вас же, очень много внимания уделено работе с файлами. Например в админке мета редактируется и заноситься в модули через файл. Я собираюсь делать свой модуль с хранением информации в БД.
Вопрос: правильную ли схему я избрал?
1) Я создаю базу. Заполняю её несколькими данными.
2) Делаю модуль modules/news (к примеру)
3) Делаю запрос к базе с выводом данных в цикле while не более 5 новостей. (остальные в будущем я планирую в постраничку вывести) В итоге, мы имеем модуль с выведенной информацией.
4) В админке создаю форму для заполнения полей которые соответствуют полям и таблицам в БД + методом POST передаю информацию в БД. Новая новость заносится в БД.
5) На сайте пропадает старая новость с например id?=1 и добавляется новая id?=6.
Получается обычный вывод информации и обычный ввод информации для данного модуля. Шаги я правильно описал? Хочу приспособиться к Вашему ядру, что бы в дальнейшем не косячить и не задавать подобных вопрос
![ph34r.gif](http://phpforum.ru/html/emoticons/ph34r.gif)
Конечно правильней было бы сделать а уже потом, задавать вопрос. Но тут логика такая у меня, лучше 1 раз спросить, чем потом 101 раз переспрашивать.
Заранее спасибо за ответ.
Спустя 6 часов, 34 минуты, 10 секунд (30.06.2011 - 07:02) twin написал(а):
Вот тут есть новости. И примерно так, как ты себе и представляешь.
Спустя 2 дня, 18 часов, 41 минута, 18 секунд (3.07.2011 - 01:43) aveBen написал(а):
Товарищи, обвариваю ваш модуль новостей, есть вопрос !
Сделал в БД поле images и в него поместил ссылку на фото которая будет прикреплена к новости.
При попытке вывести это фото, выводит только саму ссылку на фото. Подскажите пожалуйста, как вывести правильно?
Сделал в БД поле images и в него поместил ссылку на фото которая будет прикреплена к новости.
При попытке вывести это фото, выводит только саму ссылку на фото. Подскажите пожалуйста, как вывести правильно?
Спустя 6 часов, 8 минут, 8 секунд (3.07.2011 - 07:51) aveBen написал(а):
Цитата (aveBen @ 2.07.2011 - 22:43) |
Товарищи, обвариваю ваш модуль новостей, есть вопрос ! Сделал в БД поле images и в него поместил ссылку на фото которая будет прикреплена к новости. При попытке вывести это фото, выводит только саму ссылку на фото. Подскажите пожалуйста, как вывести правильно? |
Отбой :) Вопрос отпал, нужно было просто константу с корневым путем прописать в вывод :) Вот как у меня вышло:
<img src="<?php echo IRB_HOST . $tpl_images; ?>"></p>
Спустя 2 месяца, 2 дня, 13 часов, 21 минута, 54 секунды (5.09.2011 - 21:13) rusiamen написал(а):
Здравствуйте, возник небольшой трабл...
При переходе по меню в админке в адресной строке выскакивает такое:
/admin/main/?route=main
/admin/second/?route=second
Вроде так не должно быть? Пытался понять причину, но безуспешно. В чем может быть проблема?
....
Ну еще одно. Немного поэкспериментировав с ссылками понял, что можно использовать в адресной строке дополнительные $_GET параметры такого вида.
/main/read?some_parametr
Я так понял эти параметры можно только инициализировать, но какие-то значения им передать не получается(/main/read?some_parametr=true ), так как по всей видимости функция href() их режет.
Я бы хотел узнать насколько целесообразно использование такой возможности и как можно было бы разрешить добавлять значения?
Заранее спасибо!
При переходе по меню в админке в адресной строке выскакивает такое:
/admin/main/?route=main
/admin/second/?route=second
Вроде так не должно быть? Пытался понять причину, но безуспешно. В чем может быть проблема?
....
Ну еще одно. Немного поэкспериментировав с ссылками понял, что можно использовать в адресной строке дополнительные $_GET параметры такого вида.
/main/read?some_parametr
Я так понял эти параметры можно только инициализировать, но какие-то значения им передать не получается(/main/read?some_parametr=true ), так как по всей видимости функция href() их режет.
Я бы хотел узнать насколько целесообразно использование такой возможности и как можно было бы разрешить добавлять значения?
Заранее спасибо!
Спустя 2 часа, 54 секунды (5.09.2011 - 23:14) twin написал(а):
Странно, я не встречал такого. Чтото с реврайтом наверное напутано.
Что касается "добавить параметр", то нужно просто добавлять его в массив:
Что касается "добавить параметр", то нужно просто добавлять его в массив:
$GET = array(
'page' => 'main',
'rem' => 'read',
'id' => NULL,
'num' => 0,
'var' => '',
'shmar' => '',
'bar' => 0,
);
Спустя 15 часов, 40 минут, 27 секунд (6.09.2011 - 14:55) rusiamen написал(а):
Еще немного помучал адресную строку, и обнаружилось что непонятки выскакивают только при одно параметре, при двух и более они улетучиваются.
1 параметр - /admin/second/?route=second
2 и более - /admin/second/read - уже нормально
Странно(
И это притом, что тестировал я все на уже готовой раме скачанной с вашего сайта.
1 параметр - /admin/second/?route=second
2 и более - /admin/second/read - уже нормально
Странно(
И это притом, что тестировал я все на уже готовой раме скачанной с вашего сайта.
Спустя 1 день, 7 часов, 1 минута, 10 секунд (7.09.2011 - 21:56) rusiamen написал(а):
Я уже все перепробовал, и денвер пере установил, и другие сборки вашего 'фреймворка' ставил, а этот маленький изьян, который так портит эстетику так и не убрался(
Исправил бы сам, но не силен в чпу(
Неужели у вас такое не выплывает? У меня последняя сборка denwer-3, все по стандарту.
Исправил бы сам, но не силен в чпу(
Неужели у вас такое не выплывает? У меня последняя сборка denwer-3, все по стандарту.
Спустя 3 дня, 1 час, 56 минут, 15 секунд (10.09.2011 - 23:52) zeromind написал(а):
сначала отвечу rusiamen, у меня такой же косяк admin/main/?route=main и тоже самое с второй страницей - second, это админ панель, я пока не напрягаюсь потому что, есть вопросы:
1) Вообще сложен для меня немного алгоритм функций ядра.. наверно потому что не знаком со всеми "базовыми понятиями".
где указано что глобальные массивы для чтения ? (
2)$CONFIG_SETTING[$GET['rem']] - эта запись выносит мне мозг))
это типо массив в массиве? как это расшифровать ёпта, и пожалуйста приведи пример, а то так и не пойму
3) "десереализуем массив и сериализованный массив" тоже не понял что это))
unserialize и serialize соответственно
может посоветуете что почитать, чтоб уметь разбираться в php на примерно таком уровне, чтоб отлично понимать все функции которые были в этих уроках? впринципе итог весь понятен, но некоторые функции нет..
вот ещё кстате 4! вопрос - например, была функция такая в прошлом уроке
и она применяеться тут
С ДРУГИМИ АРГУМЕНТАМИ!!! т.е. $tpl и $row меняеться в соответстующем порядке в функции вместо $cont и $row?
1) Вообще сложен для меня немного алгоритм функций ядра.. наверно потому что не знаком со всеми "базовыми понятиями".
function getModul()
{
// Глобальные массивы только для чтения
global $CONFIG_SETTING, $GET;
// Возвращаем выбранное название
return !empty($CONFIG_SETTING[$GET['rem']]) ? $CONFIG_SETTING[$GET['rem']] : IRB_LANG_NO_SELECT;
}
где указано что глобальные массивы для чтения ? (
2)$CONFIG_SETTING[$GET['rem']] - эта запись выносит мне мозг))
это типо массив в массиве? как это расшифровать ёпта, и пожалуйста приведи пример, а то так и не пойму
3) "десереализуем массив и сериализованный массив" тоже не понял что это))
unserialize и serialize соответственно
может посоветуете что почитать, чтоб уметь разбираться в php на примерно таком уровне, чтоб отлично понимать все функции которые были в этих уроках? впринципе итог весь понятен, но некоторые функции нет..
вот ещё кстате 4! вопрос - например, была функция такая в прошлом уроке
function parseTpl[b]($cont, $data = '')[/b]
и она применяеться тут
$rows .= parseTpl($tpl, $row);
С ДРУГИМИ АРГУМЕНТАМИ!!! т.е. $tpl и $row меняеться в соответстующем порядке в функции вместо $cont и $row?
Спустя 9 часов, 8 минут, 21 секунда (11.09.2011 - 09:00) twin написал(а):
Цитата |
где указано что глобальные массивы для чтения ? ( |
Нигде. Это просто рекомендация. Если переменные объявляются глобальными, то их крайне нежелательно изменять. Их желательно использовать только для чтения. От того они и пишутся в верхнем регистре, дабы не перепутать.
Цитата |
2)$CONFIG_SETTING[$GET['rem']] - эта запись выносит мне мозг)) это типо массив в массиве? как это расшифровать ёпта, и пожалуйста приведи пример, а то так и не пойму |
Все стновится гораздо проще, если начинаешь вместо переменных подставлять их значения. Что у нас в переменной $GET['rem']? Допустим 'read'. Тогда эта запись
выглядит так:
$CONFIG_SETTING[$GET['rem']]
выглядит так:
$CONFIG_SETTING['read']
Цитата |
3) "десереализуем массив и сериализованный массив" тоже не понял что это)) unserialize и serialize соответственно |
Цитата |
вот ещё кстате 4! вопрос - например, была функция такая в прошлом уроке и она применяеться тут С ДРУГИМИ АРГУМЕНТАМИ!!! |
Аргументы в вызове и определении совсем не должны быть одинаковыми. Мы же передаем в штатные функции всякие свои каракули (допустим serialize($array)) и понятия не имеем, как называется аргумент в самой функции.
Спустя 17 дней, 4 часа, 50 минут, 24 секунды (28.09.2011 - 13:51) rusiamen написал(а):
Неужели с этим косяком admin/main/?route=main нельзя ничего поделать?
Спустя 22 дня, 12 часов, 6 минут, 5 секунд (21.10.2011 - 01:57) Krevedko написал(а):
Коля, когда ты уже перепишешь эту унылость с буферизацией ? Настоящие паддаваны делают отдельную функцию под это дело:
И потом просто подключаем файл с этой функцией и передаем туда названия файлов и параметры. Например блок контента:
Преимущества очевидны. Более компактная запись и нет проблемы с видимостью переменных. Для каждого шаблона свои переменные.
function view_cache($file, $vars = array())
{
foreach ($vars as $k => $v)
{
$$k = $v;
}
ob_start();
include $file;
return ob_get_clean();
}
И потом просто подключаем файл с этой функцией и передаем туда названия файлов и параметры. Например блок контента:
$title = 'Страница авторизации';
$description = 'Авторизуйтесь, чтобы попасть в личный кабинет';
$content = view_cache('view_auth.php');
$main = view_cache('view_main.php',
array('title' => $title, 'description' => $description, 'content' => $content)
);
echo $main;
Преимущества очевидны. Более компактная запись и нет проблемы с видимостью переменных. Для каждого шаблона свои переменные.
Спустя 8 часов, 44 минуты, 12 секунд (21.10.2011 - 10:41) KonstantinK написал(а):
Krevedko
Денис а чем тебя не устраивает стандартная parseTpl() , я чет не пойму?
Денис а чем тебя не устраивает стандартная parseTpl() , я чет не пойму?
Спустя 1 час, 42 минуты, 43 секунды (21.10.2011 - 12:24) Krevedko написал(а):
да всем она меня не устраивает. я ей и не пользуюсь уже давно.
Спустя 1 час, 58 минут, 13 секунд (21.10.2011 - 14:22) imbalance_hero написал(а):
Krevedko
Ты дважды подряд запустил функцию view_cache, она ДВАЖДЫ отработала include (!!!), а если нужно будет в цикле отработать шаблон для 10-20 записей, будешь дёргать один и тот же файл 10-20 раз?
Неправильная у тебя функция, лучше бы parseTpl использовал бы в связке с getTpl, и не было бы такой нагрузки на файловую систему дёргая один и тот же файл постоянными инклюдами.
Ты дважды подряд запустил функцию view_cache, она ДВАЖДЫ отработала include (!!!), а если нужно будет в цикле отработать шаблон для 10-20 записей, будешь дёргать один и тот же файл 10-20 раз?
Неправильная у тебя функция, лучше бы parseTpl использовал бы в связке с getTpl, и не было бы такой нагрузки на файловую систему дёргая один и тот же файл постоянными инклюдами.
Спустя 1 час, 15 минут, 13 секунд (21.10.2011 - 15:37) Krevedko написал(а):
и чо..дважды отработала include, трагедия блин. а у Коли тогда дважды отработает file_get_contents.
и зачем мне ее в цикл засовывать ?
я в нужный вид передам массив с параметрами и внутри вида их в цикле обработаю. для этого и придумали альтернативную запись типа
foreach ..:
endforeach;
нарезать кучу шаблонов-это имхо гораздо неудобнее. потом в них теряешься жестко.
и зачем мне ее в цикл засовывать ?
я в нужный вид передам массив с параметрами и внутри вида их в цикле обработаю. для этого и придумали альтернативную запись типа
foreach ..:
endforeach;
нарезать кучу шаблонов-это имхо гораздо неудобнее. потом в них теряешься жестко.
Спустя 23 минуты, 4 секунды (21.10.2011 - 16:00) imbalance_hero написал(а):
Krevedko
Как можно теряться, когда имена четко записанные? Папка news:
Заблудился и не понял, что такое row?! :)
Как можно теряться, когда имена четко записанные? Папка news:
news.tpl
news_row.tpl
Заблудился и не понял, что такое row?! :)
<?php foreach($var as $v) { ?>
и где тут foreach, endforeach?!
<?php } ?>
Спустя 18 минут, 38 секунд (21.10.2011 - 16:19) Krevedko написал(а):
огорчу тебя, но таких вот row может быть несколько. я видел страницы, нарезанные кусков на 6 таким вот вашим способом.
а надо вот так:
еще лучше для echo использовать сокращенную запись. и вверху файла писать для верстальщика, что находится в переменных.
а надо вот так:
<?php foreach($interesting as $value): ?>
<p>
<a style="text-decoration:underline;" href="/<?php echo $value['cat_name']; ?>/<?php echo $value['id']; ?>-<?php echo $value['pic_url']; ?>">
<?php echo $value['name']; ?>
</a>
</p>
<br />
<?php endforeach; ?>
еще лучше для echo использовать сокращенную запись. и вверху файла писать для верстальщика, что находится в переменных.
Спустя 8 минут, 21 секунда (21.10.2011 - 16:27) KonstantinK написал(а):
Krevedko
Все равно не пойму в чем выигрыш, разницу в функциях view_cache() и parseTpl() я конечно вижу но и там и там нужен шаблон и массив ну только что ты предварительно шаблон не вытягиваешь с помощью getTpl() , но все равно количество шаблонов то не уменьшается. Согласен что в большом количестве шаблонов действительно иногда теряешься, но у тебя проблема ведь тоже не решена. Или я чего то не вижу, в пятницу вечером?
Все равно не пойму в чем выигрыш, разницу в функциях view_cache() и parseTpl() я конечно вижу но и там и там нужен шаблон и массив ну только что ты предварительно шаблон не вытягиваешь с помощью getTpl() , но все равно количество шаблонов то не уменьшается. Согласен что в большом количестве шаблонов действительно иногда теряешься, но у тебя проблема ведь тоже не решена. Или я чего то не вижу, в пятницу вечером?
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 3 минуты, 8 секунд (21.10.2011 - 16:30) Krevedko написал(а):
hMVC надо юзать. виджеты.
те уроки уже устарели. переписать пора.
те уроки уже устарели. переписать пора.
Спустя 5 часов, 10 минут, 19 секунд (21.10.2011 - 21:41) Гость_Вася написал(а):
Вы извините за дилетантский вопрос:
но когда я открываю файл PHP в браузере, то вижу не работу скриптов, а сами скрипты. Подскажите, в чем может быть причина?
но когда я открываю файл PHP в браузере, то вижу не работу скриптов, а сами скрипты. Подскажите, в чем может быть причина?
Спустя 3 минуты, 22 секунды (21.10.2011 - 21:44) Игорь_Vasinsky написал(а):
файл должен открываться из url
и быть с расширением php - script.php
и быть с расширением php - script.php
Спустя 12 минут, 14 секунд (21.10.2011 - 21:56) Гость_Вася написал(а):
Спасибо Вам!
суть: 2 файла
1-й html: ссылка из него - <form action="add.php" method="post">
отрабатывает себя - супер!
2-й php (add.php) - он запускается, но я вижу лишь скрипты на экране.
начинаю его нормально.... <?php
чудеса какие-то!....
суть: 2 файла
1-й html: ссылка из него - <form action="add.php" method="post">
отрабатывает себя - супер!
2-й php (add.php) - он запускается, но я вижу лишь скрипты на экране.
начинаю его нормально.... <?php
чудеса какие-то!....
Спустя 2 минуты, 54 секунды (21.10.2011 - 21:59) Гость_Вася написал(а):
дабавлю, файл php я запускаю из командной строки браузера...
Спустя 13 часов, 28 минут, 39 секунд (22.10.2011 - 11:28) KonstantinK написал(а):
Krevedko
Денис , д. Коля свой движок уже переписал, как то он говорил, и говорил что там много по новому - современному, тока вот не знаю выложит ли на всеобщее обозрение, может это у него для платных курсов? Подождем увидим.
Денис , д. Коля свой движок уже переписал, как то он говорил, и говорил что там много по новому - современному, тока вот не знаю выложит ли на всеобщее обозрение, может это у него для платных курсов? Подождем увидим.
Спустя 5 часов, 49 минут (22.10.2011 - 17:17) imbalance_hero написал(а):
Твоё:
Моё:
И?
И если кто-то режет на 6 кусков, это мои проблемы? Человек просто не умеет пользоваться конструктором, ты не догадался до такого вывода?
<?php foreach($interesting as $value): ?>
<p>
<a style="text-decoration:underline;" href="/<?php echo $value['cat_name']; ?>/<?php echo $value['id']; ?>-<?php echo $value['pic_url']; ?>">
<?php echo $value['name']; ?>
</a>
</p>
<br />
<?php endforeach; ?>
Моё:
<?php foreach($interesting as $value) { ?>
<p>
<a style="text-decoration:underline;" href="/<?php echo $value['cat_name']; ?>/<?php echo $value['id']; ?>-<?php echo $value['pic_url']; ?>">
<?php echo $value['name']; ?>
</a>
</p>
<br />
<?php } ?>
И?
И если кто-то режет на 6 кусков, это мои проблемы? Человек просто не умеет пользоваться конструктором, ты не догадался до такого вывода?
Спустя 1 час, 45 минут, 5 секунд (22.10.2011 - 19:02) Krevedko написал(а):
какой же ты противный все-таки
не дай бог приведется править твой код
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
![biggrin.gif](http://phpforum.ru/html/emoticons/biggrin.gif)
Спустя 2 часа, 43 минуты, 51 секунда (22.10.2011 - 21:46) imbalance_hero написал(а):
Krevedko
Тебя взбесило то, что вместо второй конструкции foreach я использую первую? Странное умозаключение.
Тебя взбесило то, что вместо второй конструкции foreach я использую первую? Странное умозаключение.
Спустя 16 минут, 23 секунды (22.10.2011 - 22:02) Krevedko написал(а):
да че меня взбесило ? совсем нет. просто я считаю ее менее наглядной, особенно когда несколько вложенных циклов или условий.
Спустя 18 часов, 19 минут, 48 секунд (23.10.2011 - 16:22) twin написал(а):
Цитата |
Коля, когда ты уже перепишешь эту унылость с буферизацией ? Настоящие паддаваны делают отдельную функцию под это дело:
И потом просто подключаем файл с этой функцией и передаем туда названия файлов и параметры. Например блок контента:
Преимущества очевидны. Более компактная запись и нет проблемы с видимостью переменных. Для каждого шаблона свои переменные. |
Чет не вижу я "очевидных пеимуществ". Вернее сказать, не вижу никаких.
Причем твой вариант описан (более цивилизованно, без переменных переменных) у меня давно вот тут как не выдержавший клинических испытаний.
Цитата |
и чо..дважды отработала include, трагедия блин. а у Коли тогда дважды отработает file_get_contents. и зачем мне ее в цикл засовывать ? |
Первое, у меня потому и две функции, чтобы первая один раз считала шаблон, а вторая потом хоть сто раз отработала результат. И я жестко тестил инклюды, проигрывают они.
Вот ты верстльщик и прогер в одном лице. и потому то тебе
Цитата |
нарезать кучу шаблонов-это имхо гораздо неудобнее. потом в них теряешься жестко. |
и ты верно рассудил, что
Цитата |
я в нужный вид передам массив с параметрами и внутри вида их в цикле обработаю. для этого и придумали альтернативную запись типа foreach ..: endforeach; |
Однако это удобно, если ты один и шаблон прост.
А представь себе шаблон, в котором куча разных заменяемых таблиц, формируемых в циклах, да еще и с вложениями. Представь, сколько будет PHP логики в шаблоне. Тем паче "алтернативным" синтаксисом.
Позволю себе лирическое отступление.
Откуда это пошло "альтернативный синтаксис"? Чему он альтернативный? Это просто разновидность обычного PHP синтаксиса. Есть желание - пишем end. Нет желания - не пишем. Это как и с фигурными скобками в одной строке. Я их терпеть не могу, кто то без них жить не может. Это не альтернатива вовсе.
А представь себе шаблон, в котором куча разных заменяемых таблиц, формируемых в циклах, да еще и с вложениями. Представь, сколько будет PHP логики в шаблоне. Тем паче "алтернативным" синтаксисом.
Позволю себе лирическое отступление.
Откуда это пошло "альтернативный синтаксис"? Чему он альтернативный? Это просто разновидность обычного PHP синтаксиса. Есть желание - пишем end. Нет желания - не пишем. Это как и с фигурными скобками в одной строке. Я их терпеть не могу, кто то без них жить не может. Это не альтернатива вовсе.
Спустя 7 минут, 55 секунд (23.10.2011 - 16:30) twin написал(а):
Так вот, что касается такого способа организации шаблона. Очень тонка грань между нативным синтаксисом и говнокодингом. И ты не спрячешь смешение бизнесс-логики с логикой представления, если напишешь PHP код в файл с расширением .tpl или .html
По сути это и останется говнокодом. Ведь на каждый верстальщик в состоянии разобрать логику if... endif внутри других if... endif, внутри которых еще по парочке foreach... endforeach
Так что вот для того и придумано деление шаблонов на куски. Если цикл один или два, функция parseTpl() легко отработает и твои endforeach'и. А если их куча, да еще и с заменами, то стоит разделить шаблон.
Свернутый текст
Кстати, еще. Вот так у тебя красиво смотрится.
А если кода много, то найти какого именно фореча мы наблюдаем енд крайне трудно. Есть схема гораздо информативнее.
или так (если не предполагается двигать строки)
Так что
По сути это и останется говнокодом. Ведь на каждый верстальщик в состоянии разобрать логику if... endif внутри других if... endif, внутри которых еще по парочке foreach... endforeach
Так что вот для того и придумано деление шаблонов на куски. Если цикл один или два, функция parseTpl() легко отработает и твои endforeach'и. А если их куча, да еще и с заменами, то стоит разделить шаблон.
Свернутый текст
Апологетов классической шаблонизации прошу не суетиться. Она тут не обсуждается ввиду полной несостоятельности.
Свернутый текст
Кстати, еще. Вот так у тебя красиво смотрится.
<?php foreach($interesting as $value): ?>
<p>
<?php echo $value['name']; ?>
</p>
<br />
<?php endforeach; ?>
А если кода много, то найти какого именно фореча мы наблюдаем енд крайне трудно. Есть схема гораздо информативнее.
<?php foreach($interesting as $value){ //foreach 1 ?>
<p>
<?php echo $value['name']; ?>
</p>
<br />
<?php }//end foreach 1 ?>
или так (если не предполагается двигать строки)
<?php foreach($interesting as $value){ ?>
<p>
<?php echo $value['name']; ?>
</p>
<br />
<?php }//end foreach 5 (<-номер строки) ?>
Так что
Цитата |
hMVC надо юзать. виджеты. те уроки уже устарели. переписать пора. |
Чушь это все. Ничего не устарело. Ты просто вырос из них, а вот до нового уровня пока не дорос. Анализируешь не в ту сторону.
KonstantinK
Цитата |
Денис , д. Коля свой движок уже переписал, как то он говорил, и говорил что там много по новому - современному, тока вот не знаю выложит ли на всеобщее обозрение, может это у него для платных курсов? Подождем увидим. |
Я переписал. Новый вариант в платном разделе. Но этот момент там без изменений. Я даже в класс эти функции не стал объединять - не вижу смысла)
Спустя 3 часа, 32 минуты, 23 секунды (23.10.2011 - 20:02) imbalance_hero написал(а):
Не знаю, как в других программах, но в Дриме позавчера увидел классную вещь, можно поставить указатель на открывшиеся скобки, нажать на кнопку, и получить выделение в таком стиле:
http://my.jetscreenshot.com/7950/20111023-gyi7-12kb
Отлично работает с множеством вложений, очень удобно теперь стало находить окончание нужного цикла и условия.
А ещё вот, много условий и много вложений в скрипте, сейчас записал запись так:
http://my.jetscreenshot.com/7950/20111023-prav-12kb , можно увидеть, что условие содержит именно информацию о начале цикла, и мини-описании, что делает. Воообщем, комментирование - это лучший способ не забыть и ориентироваться в скриптах
http://my.jetscreenshot.com/7950/20111023-gyi7-12kb
Отлично работает с множеством вложений, очень удобно теперь стало находить окончание нужного цикла и условия.
А ещё вот, много условий и много вложений в скрипте, сейчас записал запись так:
http://my.jetscreenshot.com/7950/20111023-prav-12kb , можно увидеть, что условие содержит именно информацию о начале цикла, и мини-описании, что делает. Воообщем, комментирование - это лучший способ не забыть и ориентироваться в скриптах
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 26 минут, 18 секунд (23.10.2011 - 20:29) Krevedko написал(а):
перебор массива в виде -это еще не логика
я бы даже сказал совсем не логика )
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 3 месяца, 8 дней, 21 час, 44 минуты, 35 секунд (2.02.2012 - 18:13) Guest написал(а):
Николай, (twin) здравствуйте! Спасибо за курс!
В этом архиве http://irbis-team.com/school/zip/freim/www7.zip
в файле www/language/ru.php видимо опечатка в определениях констант
define('IRB_LAND_NO_TITLE', 'Заголовок не установлен');
define('IRB_LAND_NO_KEYWORDS', 'Ключевые слова не прописаны');
define('IRB_LAND_NO_DESCRIPTION', 'Описания страницы нет');
define('IRB_LAND_META_ADMIN', 'Панель администрирования');
define('IRB_LAND_NO_SELECT', 'Не выбрано');
Вместо "LAND" должно быть "LANG"?
В этом архиве http://irbis-team.com/school/zip/freim/www7.zip
в файле www/language/ru.php видимо опечатка в определениях констант
define('IRB_LAND_NO_TITLE', 'Заголовок не установлен');
define('IRB_LAND_NO_KEYWORDS', 'Ключевые слова не прописаны');
define('IRB_LAND_NO_DESCRIPTION', 'Описания страницы нет');
define('IRB_LAND_META_ADMIN', 'Панель администрирования');
define('IRB_LAND_NO_SELECT', 'Не выбрано');
Вместо "LAND" должно быть "LANG"?
Спустя 8 минут, 38 секунд (2.02.2012 - 18:22) twin написал(а):
Спасибо
Спустя 10 дней, 1 час, 57 секунд (12.02.2012 - 19:23) Vladimir67 написал(а):
Цитата (imbalance_hero @ 23.10.2011 - 17:02) |
Не знаю, как в других программах, но в Дриме позавчера увидел классную вещь, можно поставить указатель на открывшиеся скобки, нажать на кнопку, и получить выделение в таком стиле: http://my.jetscreenshot.com/7950/20111023-gyi7-12kb Отлично работает с множеством вложений, очень удобно теперь стало находить окончание нужного цикла и условия. А ещё вот, много условий и много вложений в скрипте, сейчас записал запись так: http://my.jetscreenshot.com/7950/20111023-prav-12kb , можно увидеть, что условие содержит именно информацию о начале цикла, и мини-описании, что делает. Воообщем, комментирование - это лучший способ не забыть и ориентироваться в скриптах ![]() |
Интерено..., но на какую кнопку нажать нать надо?
Я делаю почти всегда все в Dream., но
поскольку вручную сам пишу, кучу возможностей,
которые видимо полезны в любом случае, не знаю
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.
Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.
Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
![user posted image](http://irbis-team.com/img/baner.png)