[php] Kilkukrotne wykonywanie strony

0

Wtiam.
Czy moglby mi ktos powiedziec co jest magicznego w moim 'headerze' ze strona mi sie wykonuje kilkukrotnie.
Juz poruszalem to na forum wczesniej ale teraz doszedlem ze blad lezy w moim szablonie 'header.tpl'.

Mozliwe ze moj serwer php jest walniety... chciaz watpie.
A moze to jakis blad SMARTY bo wlasnie z niego korzystam jako systemu szablonow?

A oto kod:

index.php

<?php
include_once "smarty/libs/Smarty.class.php";

define ('SITE_PATH', realpath(dirname(__FILE__)) );
define ('VIEW_PATH', SITE_PATH.'/views/');

$smarty = new Smarty();
$smarty->template_dir='';
$smarty->compile_dir='compile/';
$smarty->cache_dir='cache/';
$smarty->config_dir='';	// configi wykorzystane jako pliki jezykowe

$smarty->display('header.tpl');

$fp = fopen('plik.log','at');
flock( $fp, LOCK_EX );
fwrite( $fp, 'R');
flock( $fp, LOCK_UN );
fclose( $fp );
	
?>

header.tpl ( sory za dlugi kod )

	<link rel="stylesheet" type="text/css" href="public/style/style.css" />
	<a href="pl" style="background-image:url(public/gfx/[email protected])" title=""></a>
	<a href="ru" style="background-image:url(public/gfx/[email protected])" title=""></a>
	<a href="en" style="background-image:url(public/gfx/[email protected])" title=""></a>
	<embed src="public/bannery/middle_.swf" />

.htaccess

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?route=$1 [L,QSA] 

Jezeli nie uzyjemy .htaccess to strona wykona sie 1 raz.
Jezeli nie wczytamy header.tpl to tez strona sie wykona jeden raz.

Jeżeli byście mogli to przetestować to byłbym wdzięczny...

Oszalec mozna....

Calosc mozecie pobrac stad: http://www.speedyshare.com/419533767.html

Czy naprawde nikt nie potrafi tego wyjasnic?

.

0

Doszedlem do tego ze przyczyna jest te kilka linijek ktore wpisalem w powyższym poscie.
W przypadku:

<link rel="stylesheet" type="text/css" href="public/style/style.css" />
<embed src="public/bannery/middle_.swf" />

Wystarczy dodac http:// przed public

Natomiast w:

<a href="pl" style="background-image:url(public/gfx/[email protected])" title=""></a>
<a href="ru" style="background-image:url(public/gfx/[email protected])" title=""></a>
<a href="en" style="background-image:url(public/gfx/[email protected])" title=""></a>

Nalezy usunac "url(" i ")"

Nie mam pojecia dlaczego tak jest. potrafi ktos to wyjasnic?

Blad SMARTY czy blad mod_rewrite?

0

Nie jestem ekspertem, ale przypuszczam, że problem leży w specyfice konfiguracji samego serwera.
Wielokrotnie przy zleceniach webdesign'erskich miałem podobne problemy dotyczące zapisu ścieżek - np. nie używając ścieżek bezwzględnych przy przenoszeniu aplikacji na inny hosting byłem zmuszony hurtowo zmieniać takie notacje...

0
PowerRobson napisał(a)

Doszedlem do tego ze przyczyna jest te kilka linijek ktore wpisalem w powyższym poscie.
W przypadku:

<link rel="stylesheet" type="text/css" href="public/style/style.css" />
<embed src="public/bannery/middle_.swf" />

Wystarczy dodac http:// przed public

Natomiast w:

<a href="pl" style="background-image:url(public/gfx/[email protected])" title=""></a>
<a href="ru" style="background-image:url(public/gfx/[email protected])" title=""></a>
<a href="en" style="background-image:url(public/gfx/[email protected])" title=""></a>

Nalezy usunac "url(" i ")"

Nie mam pojecia dlaczego tak jest. potrafi ktos to wyjasnic?

Blad SMARTY czy blad mod_rewrite?

Dodając http://public/gfx/ url() powodujesz, że style stają się niepoprawne - obrazki nie są zaciągane. Do tego próbują być zaciągnięte z http://public/gfx/.... - hosta public, którego pewnie nie ma :)

Imo błąd masz w próbie odwoływania się do pliku, który nie istnieje/serwer nie może odczytać i wtedy adres tego taki jest przepisywany na index.php powodując ponowne przetworzenie strony. Najłatwiej chyba w firebugu sprawdzić odpowiedź dla każdego z żądań i wychwycic plik generujący drugi request do index.

A w kodzie który podałeś, zaistniały "bug" wystąpi nawet więcej niż raz - nie załaczyłeś żadnego pliku z public, więc każdy request o obrazek, styl - cokolwiek - skutkuje przepisaniem url na index.php.

0

Dzieki pomoc :)

A da sie jakos zaradzic aby nie wykonywal ponownie index.php przy pomocy mod_rewrite?

0

A niby jak chcesz temu zapobiec? Każde odwołanie do nieistniejącego pliku jest przepisywane na index.php - lepiej zadbaj o to, aby pliki były na swoich miejscach.

0

Zabezpieczylem to tak ze dopisuje rozszerzenie html na koncu dzieki czemu pomija pliki obrazow itd.

0

A czy nie lepiej nie odwoływać się do plików, które nie istnieją? Szczególnie w stylach, które przecież sam tworzysz!

1 użytkowników online, w tym zalogowanych: 0, gości: 1