Autor Zpráva
jonge
Profil
Zkouším dělat e-shop, a mám problém s include a sessions. Mám tento kód:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="charset=utf-8" />
<meta name="description" content="E-Shop" />
<meta name="keywords" content="e-shop, internetovy obchod, elektronicky obchod" />
<meta name="robots" content="all,follow" />
<meta name="googlebot" content="index,follow,snippet,archive" />
<meta http-equiv="imagetoolbar" content="no" />
<meta name="autosize" content="off" />
<meta name="author" content="David Jongepier" />
<title>E-Shop</title>
</head>

<body>
<h1>E-shop</h1>

<?php
if(empty($_GET['page']))
{
include("main.php");
}

else
{
if($_GET['page'] == "index")
{
include("main.php");
}

else
{
if(file_exists($_GET['page'].".php"))
{
include($_GET['page'].".php");
}
else
{
echo "Soubor nenalezen!!!";
}
}
}
?>
</body>
</html>


No a když mám soubor ve kterém potřebuji sessions tak musím použít funkci session_start(), jenomže ta musí být na začátku dokumentu, a když se includne tak je to uprostřed. Jaké byste navrhovali řešení? Díky.
Aesir
Profil
jonge:
Jaké byste navrhovali řešení?

Oddělit aplikační a prezentační logiku.
jonge
Profil
Oddělit aplikační a prezentační logiku.
8-O Was ist das? Mohl bys mi to prosím popsat trochu blíže?
gaminn
Profil *
Dej session_start(); na začátek této stránky, popř. začni dělat na takovém řešení, kdy bude programová a prezentační logika zcela oddělená.
jonge
Profil
začni dělat na takovém řešení, kdy bude programová a prezentační logika zcela oddělená
Už jsi druhý kdo mi to řekl :-) a ještě pořád nevím co to znamená :-D
gaminn
Profil *
Zjednodušeně - nejdřív se provede veškeré php, potom se zobrazí výsledek.
Aesir
Profil
jonge:
Jednoduše řečeno, použijte šablony. :)
gaminn
Profil *
Ještě jednodušeji - veškerý výstup ukládej, po provedení všech příkazů ho zobraz. Ale šablony jsou šablony...
koudi
Profil
Imho pokud ti dělaj problémy session, nepouštěj se do eshopu. Začal bych něčím jednodušším
jonge
Profil
O šablonách jsem slyšel zatím jenom jako balíčky PHP, které většina hostingů nemá... Mohli byste mi dát link někam kde je to více popsané, ať se tady nemusíte rozepisovat? :-) Díkes
jonge
Profil
Imho pokud ti dělaj problémy session, nepouštěj se do eshopu. Začal bych něčím jednodušším
Já jsem dělal přihlášení jen bez hlaviček dokumentu, to bylo v poho...
gaminn
Profil *
http://www.smarty.php.net
Aesir
Profil
gaminn:
veškerý výstup ukládej, po provedení všech příkazů ho zobraz
Vy tvoříte šablony na jiném principu? :)
gaminn
Profil *
Pardon... http://smarty.php.net/
gaminn
Profil *
Aesir

Sám používám Smarty, takže ve vlastím php kódu se mi nevyskytuje žádná prezentační logika, ukládání do proměnné je přeci jen něco na půli cesty.
Aesir
Profil
gaminn:
ukládání do proměnné je přeci jen něco na půli
I Smarty ukládají výstup do paměti, jestli je to proměnná či interní buffer, není rozdíl...ale dost OT. :)
gaminn
Profil *
Aesir

Pokud se uloží řetězce (tj. i značky HTML) určené k výstupu do pouhé proměnné (tj. echo '<strong>A</strong>'; se nahradí dejme tomu $page->sprintf('<strong>A</strong>')) nejde až o takové oddělení aplikační a prezentační logiky;) Ale teď už opravdu dost :D
souki
Profil
na začátek ob_start(); a nakonec ob_end_flush(); aneb řešení pro lamy
Toto téma je uzamčeno. Odpověď nelze zaslat.

0