PDA

Просмотр полной версии : вывод файла


LIREX
17.02.2011, 23:19
<?php

$h = fopen("components.php","w");
$text = 'zakaz.php';
fwrite($h,$text) ;
fclose($h);
?>
как сделать так что бы текст из файла zakaz.php записывался в components.php ?

Wandering Star
18.02.2011, 09:48
примерно так:
echo `zakaz.php > components.php`;
Но это хитрый и бесполезный для вас трюк.
Если делать согласно вашему режиму открытия файла, то можно ещё так:
file_put_contents('components.php', file_get_contents('zakaz.php'));
или так:
copy('zakaz.php', 'components.php');
Но это всё равно бред какой-то получается. Зачем вам вообще надо записывать один сценарий в другой?

LIREX
18.02.2011, 14:21
Wandering Star, охх Вы лучше не спрашивайте а то опять ругатся будете)))
Хочу что бы в центральном ДИВе выводился определенный кусок кода( в моем случае что то типо компонента) по нажатию на ссылку, в центральном диве разместил код с include (components.php)
Суть такова что бы постоянно производить перезапись в этот файл, то есть нажимаю на ссылку происходит перезапись и выводится нужный мне компонент, и так с остальными ссылками, как подругому вывод нужного компонента в центральный див не придумал(( если есть идеи подскажите, буду благодарен

Wandering Star
18.02.2011, 14:56
LIREX, есть такой паттерн проектирования - MVC. Он даёт решение поставленной задачи. Вообще, очень правильно разделять данные и представление. Ещё есть шаблонизаторы - например Smarty, это если смотреть на готовое решение. Но если мыслить примитивами, то получается как-то так:

У вас есть страница, допустим index.php. Она всегда выводит один каркас с шапкой, футером и прочей обвязкой. Но для показа основного содержимого вы обращаетесь к этой странице запросом index.php?component=smthng, где в smthng передаёте имя компонента. При этом сама страница внутри того дива содержит примерно такой код:
<?php
if(!isset($_GET['component']))
{
$component = 'default';
} else {
$component = $_GET['component'];
}
$componentFile = '/path/to/components/'.$component.'.php';
if (is_file($componentFile) && is_readable($componentFile))
{
include ($componentFile);
}
?>
Таким образом если вы обращаетесь по ссылке index.php?component=zakaz, то у вас в директории /path/to/components/ должны быть минимум два файла default.php для индексной страницы, если обращаться без указания модуля и zakaz.php для отображения выбранного модуля.

Это конечно некрасиво, но боюсь, что более грамотные решения на вашем текущем уровне вы не осилите. Только не забудьте всегда проверять данные, вводимые пользователем, иначе получите огромную дыру в безопасности. И никогда не давайте сценарию прав на запись другого сценария - это тоже потенциальная уязвимость.

LIREX
18.02.2011, 17:35
Wandering Star, Спасибо большое, Вы не могли бы расказать про девалт.пхп по подробней? он служит для того что бы если компонента нету выводить его я так понимаю?

Wandering Star
21.02.2011, 09:38
Не совсем так. В этом решении default.php будет отображен, если в запросе не будет указан модуль. Т.е. для главной страницы. Если же запрошенного модуля не будет, то не отобразится вообще ничего.

LIREX
16.03.2011, 20:06
Вставил этот скрипт в другой проэкт, по нажатию на ссылку ничего не происходит где может быть подводный камень?


Добавлено через 4 минуты
вот я баран