редирект..

Фанат

oncle terrible
Команда форума
это самая дурацкая структура сайта, которая только бывает на свете.
вообще непонятно, как человек, который называет себя "не новичком в пхп", мог до сих пор не столкнуться с чудовищными ограничениями, которые накладывает такой подход.

Ведь очень часто этот самый up.inc должен содержать информацию, которая зависит от ***.inc! Это и <title> страницы, и куча прочего мусора из <head>, и подсветка меню.
я не говорю уже об http заголовках.

То есть, выводить up.inc имеет смысл только после того, как отработает код из ***.inc

Хотя, конечно, для хомяка из двух страничек структура идеальная. Автоматизация поражает воображение - страничка не содержит оформления, которое подставляется автоматом! Чудо!
 

mixwell

Новичок
а как лучше организовать структуру сайта?

-~{}~ 29.10.07 00:33:

я не новичек, но не являюсь большим специалистом..

-~{}~ 29.10.07 00:35:

много ли надо менят для того чтобы реализовать грамотную структуру сайта?
 

Фанат

oncle terrible
Команда форума
Когда как.
самое простое - это избавиться от ненужного индекса, и обращаться к файлам напрямую, ***.php
а уже сами файлы будут инклюдить up.inc там, где им это будет удобно.

если же сохранять бессмысленный, на мой взгляд index.php, вся функция которого заключается в том, чтобы показывать другие файлы - то есть подменять вебсервер, то придется осваивать механизм шаблонов.
и структура индекса будет не
include up
include ***
include down
а
include ***
include шаблон.
то есть, код *** не выстреливает сразу данные, которые получает, а подготавливает их, чтобы потом они могли быть выведены в заранее подготовленный шаблон страницы
 

mixwell

Новичок
большое спасибо, ФАНАТ. а вы не могли бы скинуть ссылочки по шаблонам? и есл использовать их, то много ли нужно менять??
 

Фанат

oncle terrible
Команда форума
если использовать шаблоны - то много.
ведь вместо
while ($row=mysql_fetch_array($result)) {
echo "<td width=\"20\">$row[name]<td>";
}
придется везде писать
while ($row=mysql_fetch_array($result)) {
$LIST[]=$row;
}
а потом уже, в другом месте - этот массив назначать переменным шаблона.

К сожалению, про шаблоны я еще не написал статью, поэтому никаких хороших материалов в сети нет.
могу только привести пример очень простого скрипта, который использует шаблоны:
PHP:
<? 
mysql_connect();
mysql_select_db("new");
$table="test";
if($_SERVER['REQUEST_METHOD']=='POST') { 
  if ($id=intval($_POST['id'])) {
    $query="UPDATE $table SET name='".mysql_real_escape_string($_POST['name'])."' WHERE id=$id";
  } else {
    $query="INSERT INTO $table SET name='".mysql_real_escape_string($_POST['name'])."'";
  }
  mysql_query($query);
  header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']); 
  exit; 
} 
if (!isset($_GET['id'])) { 
  $LIST=array();
  $query="SELECT * FROM $table"; 
  $res=mysql_query($query);
  while($row=mysql_fetch_assoc($res)) $LIST[]=$row;
  include 'list.php';
} else { 
  if ($id=intval($_GET['id'])) {
    $query="SELECT * FROM $table WHERE id=$id"; 
    $res=mysql_query($query);
    $row=mysql_fetch_assoc($res);
    foreach ($row as $k => $v) $row[$k]=htmlspecialchars($v);
  } else {
    $row['name']='';
    $row['id']=0;
  }
  include 'form.php';
} 
?>

form.php
<form method="POST">
<input type="text" name="name" value="<?=$row['name']?>"><br>
<input type="hidden" name="id" value="<?=$row['id']?>">
<input type="submit"><br>
<a href="?">Return to the list</a>
</form>

list.php
<a href="?id=0">Add item</a>
<? foreach ($LIST as $row): ?>
<li><a href="?id=<?=$row['id']?>"><?=$row['name']?></a>
<? endforeach ?>
 

mixwell

Новичок
ФАНАТ , вы прояснлили мне немного суть шаблонов. Еще раз большое спасибо. Тогда если учесть, что возможности менять структуру на шаблоны нет(в связи с отсутствием времени) какой, с вашей точки зрения, наиболее оптимальынй подход к реализации структуры сайта?
Может можно оставить index.php, просто подключать up.inc там где это будет нужно? Прошу вас как профессионала посоветовать наиболее отпимальный подход к реализации структуры сайта.
 

Фанат

oncle terrible
Команда форума
а большой сайт? сколько в нем различных скриптов?
 

mixwell

Новичок
сайт знакомств. назвать его очень большим нельзя, но и не хомяк точно. Скриптов достаточно(личная страничка, услуги разные, рагстрация, поиск и т.д.)
 

Фанат

oncle terrible
Команда форума
я насчитал 5, если считать "и т.д."
поменять вывод в 5 скриптах совсем несложно, причем по какой угодно системе.
 

mixwell

Новичок
Простите за недопонимание.. А как более грамотно поменять вывод? т.е. up.inc выводить только там где это будет наиболее правильно? Вы советовали не использовать index. Почему? ведь можно используя его, как я уже сказал выводить up.inc непосредственно в ***.inc. Правильно ли я вас понял?
 

dimagolov

Новичок
mixwell поменять вывод можно к примеру так:
вместо echo $CurValueToOutput; делать $ScriptOutput .= $CurValueToOutput;

еще можно это сделать через буффер вывода (ob_start и дальше согласно ману)
 

mixwell

Новичок
т.е. собирать весь вывод в одну переменную, а потом уже, после проработки всех скриптов ее вывести?
 

das6745

Новичок
извините, но никто не сталкивался с редиректом скрипта на самого себя (или на текущую страницу, если быть точнее) в konqueror'e? странно, но редирект не идет, стоит поменять хоть что-нить, например добавить # или ежще один слэш или что угодно нейтрально и все работает нормально?. Редирект делается header("Location : ...

пробемму то я решил внешним редиректом, тоесть делаю редирект на саму себя + постфикс "redir/" а потом моддреврайтом это отлавливаю и назад редирект делаю.

Это вуду для того чтобы очитстить POST который идет от пользователя (чтоб когда он отправил с формы данные а потом обновляет страницу не показывалось никаких сообщений об повторной отправке данных)

Собственно правильно ли я решил проблемму редиректом и есть ли другие решения (без javaScript и вообще скриптов на стороне пользователя).
 

Beavis

Banned
das6745
правильно, после отправки данных постом, сбрасывают его редиректом на эту же страницу
 

quad_4

Новичок
Автор оригинала: das6745
у меня редирект не идет, стоит поменять хоть что-нить, например добавить # или ежще один слэш или что угодно нейтрально и все работает нормально
php никого никуда не редиректит, он отправляет заголовок(указание), а как на него реагировать - решает твой браузер. В данной ситуации видимо твой браузер тупит.
 

das6745

Новичок
да, я неверно выразился, исправил, но всеже смысл вы поняли. браузер действительно тупит, есть куча баг-репортов на эту тему и т.д., мне просто интересно, есть ли более красивая реализация редиректа немного туповатых браузеров? во всех остальных (Lynx, FF, Opera) все нормально. Работает согласно документации. но konqueror вообще игнорирует редирект на текущую активную страницу (наверное какая-то оптимизация).

я еще слышал про реализацию meta тагами в теле хтмл, content-refresh= ля-ля, сколько надо, наверное можно 0 поставить, я с этим не эксперементировал.
 

Toxic_Cat

Новичок
Каждому браузеру не угодишь...

Вообще странно, что какой-то там браузер, получив редирект в заголовке не реагирует на него - в топку его :)
 

das6745

Новичок
Beavis
, да, спасибо, почитал. Но, к сожалению, нового ничего не прочел (кроме того как на перле послать ответ). Наверное больше способов и ненадо =).

Toxic_Cat, не угодишь, но есть стандарты которыми я свято следую.

<offtop>браузер konqueror является вроде как подмножеством FF, вернее на одном движке работают. И еще он включен в большинство дистрибутивов по умолчанию. Также является файловым менеджером, просмотрщиком медиа и текстов (все через плагины, помоему), также отлично справляется с различными сетевыми протоколами. А вот редирект страницы саму на сбя не делает хоть ты апстену убейся. Хотя вроде как есть плагин который и эту недоработку залечивает, но я просто интересовался кто как решил подобную проблемму. И стоит ли такие браузеры фтопку выкидывать? Я лично так не думаю, есть более достойные браузеры для фтопак =).</offtop>
 

Фанат

oncle terrible
Команда форума
ведь можно используя его, как я уже сказал выводить up.inc непосредственно в ***.inc.
можно.
но в этом случае index становится ненужным. именно поэтому я и советовал не использовать его.
что тут непонятного-то?

другое дело, что у тебя все ссылки сейчас указывают на индекс. и только поэтому его придется оставить.
 
Сверху