Нативный php.Что за этим стоит? - Visavi.net
https://visavi.net/
RSS - Visavi.nethttps://visavi.net/assets/img/images/logo_small.pngRSS - Visavi.net
https://visavi.net/
[email protected] (admin)[email protected] (admin)Mon, 23 Dec 2024 07:31:30 +030014. <strong>lolpetyaz</strong>, ну пользовательские переменные надо фильтровать. Чти Вантуза, он писал уже о проблемах, которые могут возникать. Я мало представляю себе шаблонизатор, который на прямую берет адрес и использует его для загрузки шаблона. Обычно это делается через роутер, а роутер уже использует всякие регулярки и т.п.
https://visavi.net/topics/42520/684953
Нативный php.Что за этим стоит? АртурSat, 01 Aug 2015 15:21:40 +0300Сообщенияhttps://visavi.net/topics/42520/684953Ну смотри, условно имеется список темплейтов (или модулей, библиотек, чего угодно)<br>
<pre class="prettyprint">
<?php
$tpls=array('head', 'foot', 'menu');
?>
</pre>
В функции мы проверяем имеется ли подключаемый модуль в списке (тут я использую global, но вообще список должен получаться в самой функции, читаться из файлика или xcache например)<br>
<pre class="prettyprint">
<?php
function new_view($name,$data = null) {
global $tpls; // тут должно быть получение кэшированного списка
if(in_array($name, $tpls)) {
require($_SERVER['DOCUMENT_ROOT'].'/Views/'.$name.'.phtml');
}else{
throw new Exception('blalalal');
}
}
?>
</pre>
https://visavi.net/topics/42520/684947
Нативный php.Что за этим стоит? /7o/loTeH4I1kSat, 01 Aug 2015 10:05:08 +0300Сообщенияhttps://visavi.net/topics/42520/684947<blockquote class="blockquote"><strong>anonymouse</strong> (31 Июля 2015 / 21:46)<br>
15. <strong>lolpetyaz</strong>, просто фильтруй переменные которые поступают от пользователя (желательно учитывая тип) и проблем не будет.<br>
Ну и как-то проверяй, что инклудиться будет именно нужный файл. (у меня например кэшируется список шаблонов, если подключаемого шаблона нет в списке, то он не подключится)</blockquote>
Тоесть так будет все гуд?<br>
<pre class="prettyprint">
<?php
function new_view($name,$data = null) {
if(file_exists($_SERVER['DOCUMENT_ROOT'].'/Views/'.$name.'.phtml')) {
require($_SERVER['DOCUMENT_ROOT'].'/Views/'.$name.'.phtml');
}else{
throw new Exception('blalalal');
}
}
$data['title'] = 'title';
$counter = $db->query('SELECT * FROM `users`')->fetch();
$data['user_id'] = $counter['id'];
new_view('test');
</pre>
И вот файл test.phtml<br>
<pre class="prettyprint">
<html>
<head>
<title><?=$data['title']?></title>
</head>
<body>
<big><?=$data['user_id']?></big>
</body>
</html>
</pre>
<br>
Обьясни тогда,что под словом "Фильрируй "ты имел ввиду?а еще лучше покажи на этом примере)
https://visavi.net/topics/42520/684944
Нативный php.Что за этим стоит? lolpetyazFri, 31 Jul 2015 23:18:43 +0300Сообщенияhttps://visavi.net/topics/42520/68494415. <strong>lolpetyaz</strong>, просто фильтруй переменные которые поступают от пользователя (желательно учитывая тип) и проблем не будет.<br>
Ну и как-то проверяй, что инклудиться будет именно нужный файл. (у меня например кэшируется список шаблонов, если подключаемого шаблона нет в списке, то он не подключится)
https://visavi.net/topics/42520/684942
Нативный php.Что за этим стоит? /7o/loTeH4I1kFri, 31 Jul 2015 21:46:39 +0300Сообщенияhttps://visavi.net/topics/42520/68494214. <strong>Shamsik</strong>, причем тут tpl шаблонизатор к нативноому php?Я тоже пользовался smarty и писал класс свого небольшого шаблонизатора для tpl,яя немогу понять как мне работать с нативным php и еще если с ним разобраться то никакие шаблонизаторы не дадут тебе такую скорость работы!Только вот надо понять все доконца)<br>
<br>
<em><span style="font-size:x-small">Добавлено через 01:11 сек.</span></em><br>
13. <strong>Башка</strong>, ну а что ты скажешь насчет этого?пользовательских переменных?
https://visavi.net/topics/42520/684940
Нативный php.Что за этим стоит? lolpetyazFri, 31 Jul 2015 20:54:27 +0300Сообщенияhttps://visavi.net/topics/42520/684940Правильно говорят все для таких вещей используют шаблонизатор, <br>
<br>
Зачем писать Слова или HTML тэги в классах или в функциях если это можно сделать в одной отделом файле<br>
<br>
<em><span style="font-size:x-small">Добавлено через 01:15 сек.</span></em><br>
Я к примеру всегда пользовался Twig очень понятный и отличный Шаблонизатор
https://visavi.net/topics/42520/684939
Нативный php.Что за этим стоит? ShamsikFri, 31 Jul 2015 19:53:24 +0300Сообщенияhttps://visavi.net/topics/42520/6849397. <strong>lolpetyaz</strong>, а речь не шла о пользовательских переменных, данных.
https://visavi.net/topics/42520/684937
Нативный php.Что за этим стоит? АртурFri, 31 Jul 2015 18:03:34 +0300Сообщенияhttps://visavi.net/topics/42520/684937если $name приходит от пользователя там могут быть символы типа ../../test.php и символ нулевого байта то есть по сути сработает конструкция типа include '../../test.php'; а не include '../../test.php.phtml'; как ты того будешь ожидать<br>
поэтому или список или регулярное выражение
https://visavi.net/topics/42520/684935
Нативный php.Что за этим стоит? Вантуз-менFri, 31 Jul 2015 17:07:40 +0300Сообщенияhttps://visavi.net/topics/42520/68493510. <strong>Vantuz</strong>, ну все пишут,что это не самый безопастный код,типа надо нативный шаблонизатор для рааботы с данными!)
https://visavi.net/topics/42520/684934
Нативный php.Что за этим стоит? lolpetyazFri, 31 Jul 2015 17:06:53 +0300Сообщенияhttps://visavi.net/topics/42520/6849347. <strong>lolpetyaz</strong>, почему нельзя, можно, или я не понимаю вопроса
https://visavi.net/topics/42520/684933
Нативный php.Что за этим стоит? Вантуз-менFri, 31 Jul 2015 17:05:01 +0300Сообщенияhttps://visavi.net/topics/42520/6849338. <strong>Vantuz</strong>, не совсем понял,примерно как?
https://visavi.net/topics/42520/684932
Нативный php.Что за этим стоит? lolpetyazFri, 31 Jul 2015 17:04:18 +0300Сообщенияhttps://visavi.net/topics/42520/6849327. <strong>lolpetyaz</strong>, для них проверяй через регулярку типа /[a-z0-9\-_]/i
https://visavi.net/topics/42520/684931
Нативный php.Что за этим стоит? Вантуз-менFri, 31 Jul 2015 17:03:46 +0300Сообщенияhttps://visavi.net/topics/42520/6849314. <strong>Башка</strong>, но а как же быть с пользовательскими переменными?данными?<br>
<br>
<em><span style="font-size:x-small">Добавлено через 01:05 сек.</span></em><br>
6. <strong>Vantuz</strong>, да суть не в этом,но на заметку возьму,мне интересно почему нельзя работать с пользовательскими данными без какого либа шаблонизатора?
https://visavi.net/topics/42520/684930
Нативный php.Что за этим стоит? lolpetyazFri, 31 Jul 2015 17:01:46 +0300Сообщенияhttps://visavi.net/topics/42520/6849301. <strong>lolpetyaz</strong>, прям как в 1 посте конечно небезопасно, если список файлов небольшой безопаснее всего использовать следующий пример<br>
<br>
это актуально если name будет приходить от пользователя<br>
<pre class="prettyprint"><?php
function new_view($name,$data = null) {
switch ($name) {
case 'page1':
include 'page1.phtml';
break;
case 'page2':
include 'page2.phtml';
break;
case 'page3':
include 'page3.phtml';
break;
default:
echo 'Шаблон не найден';
}
}
</pre>
https://visavi.net/topics/42520/684929
Нативный php.Что за этим стоит? Вантуз-менFri, 31 Jul 2015 17:01:09 +0300Сообщенияhttps://visavi.net/topics/42520/684929Все нормально там, если нет необходимости испольновать сторонний шаблонизатор то php с этим и сам нормально справляется.
https://visavi.net/topics/42520/684928
Нативный php.Что за этим стоит? TegosFri, 31 Jul 2015 16:05:18 +0300Сообщенияhttps://visavi.net/topics/42520/684928