ugrás a tartalomhoz

Hézag a weblap tetején

tacsiazuma · 2014. Aug. 18. (H), 16.19
A következő problémával fordulok hozzátok:
(Nem tudtam, hogy PHP vagy CSS/HTML kategóriába töltsem, mindkettőt érintheti)
Nemrégiben elkezdtem egy MVC alapon működő weblapot készíteni és az a problémám, hogy a weboldal tetejére bekúszik egy sornyi hézag.

Utánajártam már pár helyen, hogy hol is lehet a gond, de nem nagyon sikerült előrejutnom.

A történet rendkívül egyszerű, index.php definiál pár konstanst, utána include router.php, ami aztán a szétkapott URI alapján megkeresi a megfelelő fájlokat/osztályokat, model lekéri az oldal tartalmát, view végül kihámozza a templatekből a php kódot, css-t és összerakja egy md5(URI+ pár változó).tmp fájlban, amolyan cache jelleggel, ezt includeolja és exit().

Minden php fájl elejére a CI-ből lesett direkt script elérést gátló kódot raktam bele, de a kihámozáskor ezeket az offseteket átugorja a program. A fájlok végén nincs ott a záró ?>, de ez se oldott meg semmit.

Ugye HTML elemeket nem nagyon tudok beletenni a template fájlok előtt, mert a title tag-et csak akkora tudom meg, így az kimarad, hogy előtte megcsináljam a wrapper div-et. (Bár akkor valszeg abban lenne hézag.)
 
2

HTML

Poetro · 2014. Aug. 18. (H), 22.06
Jó lenne az oldalt látni, legalább a HTML elejét, és akkor kiderülne, hogy hol a "hézag". Mondjuk az is lehet, hogy a CSS a ludas, de nem valószínű, hogy a PHP oldalon kellene a hibát keresni.
3

Az én tippem a body elem

bamegakapa · 2014. Aug. 18. (H), 22.26
Az én tippem a body elem default marginja.
4

Nem az a gond

tacsiazuma · 2014. Aug. 18. (H), 23.20
Nem az a gond, az a 8 pixeles default margin elenyésző ehhez képest. Azzal is próbálkoztam az elején, de nem javított a helyzeten. Köszönöm a tippet, az már megvan, hogy két idézőjelet tesz be valamiért a body elembe. Azt keresem, hogy ezt pontosan mi teszi. Az include netán?
5

Látatlanban nem fogjuk tudni

bamegakapa · 2014. Aug. 19. (K), 08.14
Látatlanban nem fogjuk tudni megmondani. Ha bekerül két idézőjel, az nem hiszem hogy véletlen, azt valahol kiiratod. Ezzel mondjuk nem mondtam túl meglepőt gondolom.
6

A problémát sikerült

tacsiazuma · 2014. Aug. 19. (K), 14.38
A problémát sikerült megoldanom. Bocs, hogy nem másoltam be a kódot, hogy megkeressük hol is van a gond, de a rengeteg include-olt fájl miatt nem lett volna jó ötlet. Pofonegyszerű volt a megoldás (bár a hibát nem találom, de egy fórumon azt olvastam, hogy az include hagyott ilyen kis piszok nyomokat az outputban:
Ob_start()
Ez az index.php elejére és a templatekből kovácsolt ideiglenes fájl include-ja előtt pedig a
ob_end_flush()
megoldotta a problémát. Alapból nem szabadott volna outputnak lennie, de meguntam a keresgélést. Tudom, ez nagyobb projektnél nem megvalósítható és kevesebbért is tarkólövés jár. (Alternatív gányolásnak még megjátszottam előtte a css-ben:

#wrapper{ 
position:fixed;
z-index:9001;
top:0;
}
, bár ez utóbbira nem vagyok túl büszke :D

Ez utóbbival az a legfőbb gond, hogy csak tüneti kezelés, mert a HTML kód továbbra is hasonlóan festett a developer módban:
<html>
<head></head><!-- ez itt üres lett... -->
<body>
""<!-- az a bizonyos hézag -->
<title>..</title><!-- ez hogy került ide? -->
<!-- minden egyéb, amit egyébként a két head tag közé zártam -->
<div id="wrapper">..</div>
</body>
</html>