[php] Kilkukrotne wykonywanie strony

Odpowiedz Nowy wątek
2009-07-28 14:01
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?

.

Pozostało 580 znaków

2009-07-28 23:02
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?

Pozostało 580 znaków

2009-07-29 01:50
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...


---
"...zyje poki z glosnikow leje sie ten balsam. jest nas coraz mniej, mozesz policzyc nas na palcach"
(DuzePe, Eldo, Emil Blef - "Sinus")

Pozostało 580 znaków

2009-07-29 07:31
nav
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:// i usuwając 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.


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

2009-07-29 09:46
0

Dzieki pomoc :)

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

Pozostało 580 znaków

2009-07-29 17:16
nav
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.


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

2009-07-29 18:53
0

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

Pozostało 580 znaków

2009-07-29 20:56
nav
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!


utf-8 rlz! ٩(ಥ_ಥ)۶

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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

Robot: CCBot