Страница 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 можно вызываь так:

Код: Выделить всё

require_once($filename.'.php');

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 можно вызываь так:

Код: Выделить всё

require_once($filename.'.php');
нелучше... Когда в инклюд вставляется переменная это всегда угроза, если сайт протой, то не стоит этого делать.

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 писал(а):нелучше... Когда в инклюд вставляется переменная это всегда угроза, если сайт протой, то не стоит этого делать.
неее, никакой угрозы :lol: сайт поломать сложнее! а вирусы под венду пишут, а это не венда, а ПХП.

:lol: нет ощущения что в ты здесь противоречишь своим утверждениям в соседнем треде?

Если держать продакшн с включенным 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 нужно объявить до этого куска кода, как это делать - фантазия разработчика :D )

Код: Выделить всё

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='Страница, к которой Вы пытались обратится, недоступна.';
			}
далее по коду

Код: Выделить всё

require_once('include/template.inc.php');
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 писал(а)::lol: нет ощущения что в ты здесь противоречишь своим утверждениям в соседнем треде?
:roll: у меня нет, проблема в том что ты путаешь тёплое с мягким - вирусы явление массовое, персональный взлом явление единичное. Тебе как удобней чтоб тебя сломали, через дыру в бесплатном скрипте, бекдор и или через "добрый" совет на форуме? :roll:
lexy писал(а):$content=join("\n",file("content/".sprintf("%08d",$id).".dat"));
:roll: я канешна тупой и нифига не умею, но есть такая функция как file_get_contents()
lexy писал(а):if(!trim($content)){
$title=$this->head='Страница не найдена';
.....
$title=$head='Страница не найдена';
ну, не то что бы меня это смущало, скорее так и должно быть... :|


2 radiofannat, в твоём скрипте уже на лицо 2 уязвимости, а когда ты закончишь делать скрипт, у тебя их будет в десятки раз больше. Не побрезгуй сходи на http://ru2.php.net/manual/ru/tutorial.firstpage.php , там много чего полезного есть