2011-11-03 2 views
0

У меня есть два сценария, которые я вызываю двумя вызовами PHP include(). Первый запускает сеанс/устанавливает файлы cookie, второй загружает один из двух сценариев JavaScript. Чтобы все было в порядке, я использовал два вызова, но я хотел бы просто объединить их в один.Есть ли способ, соответствующий стандарту, запуск сеанса PHP и эхо сценарий JavaScript в одном заявлении include()?

Текущая настройка (упрощенно):

<? include "session.php" ?> 
<!DOCTYPE HTML> 
<html> 
<head> 
<? include "scripts.php" ?> 
... 

Что я хотел бы:

<? include "session_and_scripts.php" ?> 
<!DOCTYPE HTML> 
<html> 
<head> 
... 

Но это недопустимые разметки. Теперь, если это действительно не имеет значения, я бы хотел сделать это так. Если есть серьезные последствия, то я думаю о том, чтобы просто повторять DOCTYPE во включенном PHP-файле, чего я бы предпочел не делать.

Итак, что лучше: эхо DOCTYPE, используйте include() два раза или используйте include() один раз и имеют недопустимую разметку?

EDIT - Весь сценарий (сессионный и JavaScript), в идеале должен быть полностью осуществимым с одной строкой коды (например, один включать())

+1

Это то, что f чтобы упростить работу. – DampeS8N

ответ

2

Используйте ob_start на первый, чтобы избежать проблем с session_start

<?php ob_start();?> 
<!DOCTYPE HTML> 
<html> 
<head> 
<?php include "session_and_scripts.php"; ?> 

Путь, который использует только 1 1file и никаких дополнительных инструкций:

<?php include "session_and_scripts.php" ?> 
<!-- more head-stuff--> 
</head> 
<body> 
<!--more content--> 

session_and_scripts.php должны сделать следующее:

<?php 
    //do the session stuff 
?> 
<!DOCTYPE HTML> 
<html> 
<head> 

<script type="text/javascript"> 
    //some javascript 
</script> 

(Но я WOULD'NT скажем, это хороший подход)

+0

. Хорошая идея, но она все еще заканчивается использованием двух строк кода в разных местах.Я немного отредактирую вопрос для ясности, но идея состоит в том, чтобы иметь возможность реализовать весь скрипт (сеанс и javascript) с одной строкой кода –

+0

. Большая проблема, с которой я столкнулся, заключается в том, чтобы сделать ее модульной, вы должны иметь возможность учитывать разные DOCTYPES. Плюс, если включить fail, у вас есть конечные теги для html и head, но нет начальных. Может быть, я сделаю это, но если включить не удается, просто распечатайте теги DOCTYPE, html и head. Или, может быть, в конце всего, 2 включает не так уж плохо;). Спасибо за ответ –

2

Но это недопустимые разметки. Теперь, если это действительно не имеет значения, я бы хотел сделать это так. Если есть серьезные последствия, то я думаю о том, чтобы просто повторять DOCTYPE во включенном PHP-файле, чего я бы предпочел не делать.

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

Предполагая, что вы хотите действительный разметка с использованием только один включать в себя и без вторя DOCTYPE из включаемого файла, вы можете сохранить текст скрипта в переменную PHP и эхо его на главной странице после включения

//main page 
<? include "session_and_scripts.php" ?> 
<!DOCTYPE HTML> 
<html> 
<head> 
<?php echo $script;?> 


// session_and_scripts.php 
<?php 
session_start(); 
$script = '<blablabla>'; 
+0

Да, это было другое соображение. Кроме того, это приводит к одной и той же проблеме: две строки. Весь скрипт (сеанс и javascript) должен быть полностью реализован с помощью одной строки кода. –

+0

вы не можете делать то, что хотите, без печати doctype в session_script.php или распечатать сценарий до doctype. – Marcx