Страница 1 из 3
помогите с PHP
Добавлено: 2008-04-17 18:19:23
radiofannat
вопрос такого плана, есть одна страничка вот примерно её код:
Код: Выделить всё
<HTML>
<HEAD>
<TITLE><? echo "$name"; ?></TITLE> /////////// то что нужно
........
<a href='index.php?link=download' class='menu'>Файлы</a>
........
<?
if ($text=="download")
{
$name = "файлы"; ///////////то что неработает
}
?>
.........
как заставить передавать переменную $name в начало кода?
Re: помогите с PHP
Добавлено: 2008-04-17 19:17:05
Alex Keda
никак
Re: помогите с PHP
Добавлено: 2008-04-17 19:23:49
jeehadina
Код: Выделить всё
if($_GET['link'] == 'download') {
// тут делай все шо хош
}
Re: помогите с PHP
Добавлено: 2008-04-17 19:46:47
lexy
дада-да, завязывай с register_globals=On

Re: помогите с PHP
Добавлено: 2008-04-18 0:31:31
radiofannat
упрощю и уточню вопрос:
Код: Выделить всё
этот вариант работает)
$name = "12345";
echo $name;
.........
а нужно вот как:
echo $name;
$name = "12345";
как зделать????
Re: помогите с PHP
Добавлено: 2008-04-18 8:23:23
jeehadina
это капец )))))))))))))))))))
ты хоть сам понял шо написал?
Re: помогите с PHP
Добавлено: 2008-04-18 9:33:07
ProFTPD
в PERL цикл, выход в конец функция next
в пхп не знаю
Re: помогите с PHP
Добавлено: 2008-04-18 11:22:32
lexy
radiofannat писал(а):упрощю и уточню вопрос:
Код: Выделить всё
этот вариант работает)
$name = "12345";
echo $name;
.........
а нужно вот как:
echo $name;
$name = "12345";
как зделать????
гхм.... книжку почитать.... по алгоритмам..... и по программированию. чтоб получить значение переменной, ее СНАЧАЛА надо объявить.
так что твой пример тоже работает. при вызове echo происходит инициализация переменной в '' и вывод а следом присвоение значения.
нельзя показать свою ж в форточку, выбежать из дома и увидеть, как в форточке мелькнул твой зад )))))))
в нормальном раскладе должно выглядеть так:
Код: Выделить всё
<?
if ($text=="download")
{
$name = "файлы"; ///////////то что неработает
}
?>
<HTML>
<HEAD>
<TITLE><? echo "$name"; ?></TITLE> /////////// то что нужно
........
<a href='index.php?link=download' class='menu'>Файлы</a>
........
Re: помогите с PHP
Добавлено: 2008-04-18 11:25:28
jeehadina
все то хрень, что мы сдесь пишем.
нет четко сформулированного вопроса - нет нормального ответа. и все тут нах.
Re: помогите с PHP
Добавлено: 2008-04-18 12:59:52
radiofannat
правильно, переменную нужно сначало обьявить а после только вытягивать с неё всё...
получается так что с одного кода получается несколько страниц, может с помощью сесии задать это, что бы при генерации страницы передавались данные... может так?
Re: помогите с PHP
Добавлено: 2008-04-18 13:04:09
zg
Код: Выделить всё
<?
ob_start();
if ($text=="download")
{
$name = "файлы"; ///////////то что неработает
}
// Любой вывод на экран
$html = ob_get_clean();
?>
<HTML>
<HEAD>
<TITLE><? echo "$name"; ?></TITLE> /////////// то что нужно
........
<a href='index.php?link=download' class='menu'>Файлы</a>
........
<?=$html; // Вывод работы php?>
Re: помогите с PHP
Добавлено: 2008-04-18 13:10:25
radiofannat
lexy писал(а):radiofannat писал(а):
Код: Выделить всё
<?
if ($text=="download")
{
$name = "файлы"; ///////////то что неработает
}
?>
<HTML>
<HEAD>
<TITLE><? echo "$name"; ?></TITLE> /////////// то что нужно
........
<a href='index.php?link=download' class='menu'>Файлы</a>
........
мне прийдётся сесь код тогда переделывать(((
если ето в начало всё кинуть то как я буду инклудить транички в середину кода html ???
Код: Выделить всё
if ($text=="download")
{
$name = "файлы"; ///////////то что неработает
include "то что подключаю.php";
}
как зделать тогда???
Re: помогите с PHP
Добавлено: 2008-04-18 13:13:34
zg
radiofannat писал(а):как зделать тогда???
через буферизацию, пример я привёл выше
Re: помогите с PHP
Добавлено: 2008-04-18 13:14:39
lexy
гхм.... нафига для вывода тайтла сессии городить?
посмотри пример. что я выше показал.... разбирай $POST или $GET до начала вывода страницы (т.е. до <html>), выключи register_globals в php.ini
так будет правильней. Отдели обработки (т.е. получение пользовательских данных) от отображения
проимер:
Код: Выделить всё
<?
switch ($GET['link]){
case 'download':
$screen='download';
//some initialization works for download
break;
case 'foo':
$screen='foo';
$name='Файлы';
//some initialization works for download
break;
case 'bar':
$screen='bar';
//some initialization works for download
break;
default:
$screen='';
}
?>
<html>
<head>
<title><?=$name'?></title>
</head>
<body>
<? switch($screen){
case 'download':?>
<a href='index.php?link=download' class='menu'>Файлы</a>
<? break;
case 'foo': ?>
<a href='index.php?link=foo' class='menu'>Fooo</a>
<? break;
case 'bar': ?>
<a href='index.php?link=bar' class='menu'>bARRRR</a>
<? break;
default: ?>
main page text
<? }//end of switch SCREEN ?>
</body></html>
Re: помогите с PHP
Добавлено: 2008-04-18 13:15:57
lexy
radiofannat писал(а):мне прийдётся сесь код тогда переделывать(((
если ето в начало всё кинуть то как я буду инклудить транички в середину кода html ???
ну если ты изначально логику неправильно построил, чтож поделать
Re: помогите с PHP
Добавлено: 2008-04-18 14:22:53
lexy
мне прийдётся сесь код тогда переделывать(((
если ето в начало всё кинуть то как я буду инклудить транички в середину кода html ???
Код: Выделить всё
if ($text=="download")
{
$name = "файлы"; ///////////то что неработает
include "то что подключаю.php";
}
как зделать тогда???
так include , А еще лучше require_once можно вызываь так:
Re: помогите с PHP
Добавлено: 2008-04-19 15:20:32
radiofannat
а если попробывать чтото типа инклуда но не выдавать на страничку а просто как переменную держать, а после в коде зделать типа echo $страничка;
возможно так? как зделать???
Re: помогите с PHP
Добавлено: 2008-04-20 18:07:21
lexy
radiofannat писал(а):а если попробывать чтото типа инклуда но не выдавать на страничку а просто как переменную держать, а после в коде зделать типа echo $страничка;
возможно так? как зделать???
можно и так, я сам обычнго так и делаю - служебную инфу типа заголовков и опций в MySQL а контент в файлег. И мускул не перегружен и файловый ввод-вывод быстрей проходит чем запрос в БД. Завтра на работу выползу - кину кусок кода.
Re: помогите с PHP
Добавлено: 2008-04-20 20:21:49
zg
radiofannat писал(а):возможно так? как зделать???
для начала внимательно читать ответы на вопрос
Код: Выделить всё
<?
ob_start();
if ($text=="download")
{
$name = "файлы"; ///////////то что неработает
}
else
{
$name = 'Не файлы';
}
// Любой вывод на экран
include('some_file.php');
$html = ob_get_clean();
?>
<HTML>
<HEAD>
<TITLE><? echo "$name"; ?></TITLE> /////////// то что нужно
........
<a href='index.php?link=download' class='menu'>Файлы</a>
........
<? echo $html; // Вывод работы php?>
Re: помогите с PHP
Добавлено: 2008-04-20 20:24:59
zg
lexy писал(а):А еще лучше require_once можно вызываь так:
нелучше... Когда в инклюд вставляется переменная это всегда угроза, если сайт протой, то не стоит этого делать.
Re: помогите с PHP
Добавлено: 2008-04-21 8:33:28
Alex Keda
а я так делаю:
Код: Выделить всё
// инклюдим кукисы
require_once($_SERVER["DOCUMENT_ROOT"] . "/includes/cookie_functions.php");
причина - иногда файлы перемещаются внутри субдиректорий - когда логика меняется.
не приходитьяс дёргаться что что-то потеряется...
Re: помогите с PHP
Добавлено: 2008-04-21 8:48:32
lexy
zg писал(а):нелучше... Когда в инклюд вставляется переменная это всегда угроза, если сайт протой, то не стоит этого делать.
неее, никакой угрозы

сайт поломать сложнее! а вирусы под венду пишут, а это не венда, а ПХП.

нет ощущения что в ты здесь противоречишь своим утверждениям в соседнем треде?
Если держать продакшн с включенным register_globals, не инициализовать переменные и не проверять входящие данные, любой скрипт будет опасен.
Re: помогите с PHP
Добавлено: 2008-04-21 9:05:14
lexy
radiofannat писал(а):а если попробывать чтото типа инклуда но не выдавать на страничку а просто как переменную держать, а после в коде зделать типа echo $страничка;
возможно так? как зделать???
к примеру, как можно организовать
этот кусок идет в самом начале (до всех хтмл-тегов:
id - идентификатор страницы (в данном случае - числовой), файлы хранятся в подкаталоге content в виде <000000ID>.dat, к примеру 00000102.dat,
title - содержимое тега <title> в странице
head - основной заголовок страницы
content - собсна текст страницы
(id, title и head нужно объявить до этого куска кода, как это делать - фантазия разработчика

)
Код: Выделить всё
if (file_exists("content/".sprintf("%08d",$id).".dat")&& $title&&$head){
$content=join("\n",file("content/".sprintf("%08d",$id).".dat"));
if(!trim($content)){
$title=$this->head='Страница не найдена';
$content='Страница, к которой Вы пытались обратится, недоступна.';
}
} else {
$title=$head='Страница не найдена';
$content='Страница, к которой Вы пытались обратится, недоступна.';
}
далее по коду
template.inc.php - это шаблон твоей страницы, в который вставляется полученная выше инфа, удобно, что можешь использовать несколько разных тем оформления сайта и для правки дизайна достаточно просто поменять этот файл. В самом простом виде он может выглядеть так:
Код: Выделить всё
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title><?=$title?></title>
</head>
<body>
<h1><?=$head?></h1>
<?=$content?>
</body>
</html>
Re: помогите с PHP
Добавлено: 2008-04-21 9:28:55
radiofannat
немного переделал код...
Код: Выделить всё
<?
$web = $_GET['123'];
if ($web=="search")
{
$incsearch=1;
$name = "поиск"; //ето нужно БЫЛО добавить на верх!!!!
}
...............
всякий код...
пофиг какой...
?>
<HTML>
<HEAD>
<TITLE><? echo "$name ?></TITLE>
...............
<?
if($incsearch==1)
{
include 'search.php';
}
?>
всем посибо, разобрался...
Re: помогите с PHP
Добавлено: 2008-04-21 11:38:41
zg
lexy писал(а):
нет ощущения что в ты здесь противоречишь своим утверждениям в соседнем треде?

у меня нет, проблема в том что ты путаешь тёплое с мягким - вирусы явление массовое, персональный взлом явление единичное. Тебе как удобней чтоб тебя сломали, через дыру в бесплатном скрипте, бекдор и или через "добрый" совет на форуме?
lexy писал(а):$content=join("\n",file("content/".sprintf("%08d",$id).".dat"));

я канешна тупой и нифига не умею, но есть такая функция как
file_get_contents()
lexy писал(а):if(!trim($content)){
$title=$this->head='Страница не найдена';
.....
$title=$head='Страница не найдена';
ну, не то что бы меня это смущало, скорее так и должно быть...
2 radiofannat, в твоём скрипте уже на лицо 2 уязвимости, а когда ты закончишь делать скрипт, у тебя их будет в десятки раз больше. Не побрезгуй сходи на
http://ru2.php.net/manual/ru/tutorial.firstpage.php , там много чего полезного есть