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:
  1. Ob_start()  
Ez az index.php elejére és a templatekből kovácsolt ideiglenes fájl include-ja előtt pedig a
  1. 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:
  1. #wrapper{   
  2. position:fixed;  
  3. z-index:9001;  
  4. top:0;  
  5. }  
, 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:
  1. <html>  
  2. <head></head><!-- ez itt üres lett... -->  
  3. <body>  
  4. ""<!-- az a bizonyos hézag -->  
  5. <title>..</title><!-- ez hogy került ide? -->  
  6. <!-- minden egyéb, amit egyébként a két head tag közé zártam -->  
  7. <div id="wrapper">..</div>  
  8. </body>  
  9. </html>