ugrás a tartalomhoz

require_once - ie - érdekesség

Vrt · 2008. Jan. 28. (H), 23.59
Sziasztok!

Van egy valami.php fájl...meta tagok után a következő parancs:
 <?php
 require_once('style.php'); ?>
FF -ben a megjelenítés tökéletes. IE pedig az egész oldalt (a többi aloldalhoz képest) egy sorral lejebb emeli.

Ha megbocsátotok bevágom ide a php -t amit beemelek a valami.php -be:
<?php header("Content-type: text/html; charset=utf-8");?>
<?php
require_once('var.php');
$sql = mysql_connect($sql_server_name, $sql_login_name, $sql_login_password) or die('<p class="error_logout">Beállítási hiba! nézze meg újra az SQL beállításokat</p>');
mysql_select_db($sql_dbase_name) or die('<p class="error_logout">Beállítási hiba! nézze meg újra az SQL beállításokat</p>');
$fejlec_table = mysql_fetch_array( mysql_query("select * from `gb_texts` where gb_texts_id=1", $sql), MYSQL_ASSOC);
$fejlec_kiirni = $fejlec_table['gb_texts_fejlec'];
$lekerdezes = "select * from `css_style` where id=1";
$set = mysql_fetch_array(mysql_query($lekerdezes, $sql), MYSQL_ASSOC);
print '<style type="text/css">
 
 body { background-color: #'.$set['bg_colour'].'; } 
 body,td,th { color: #'.$set['text_colour'].';
 font-family: Arial, Helvetica, sans-serif; } 
.table1 { background-color: #'.$set['table1_bg_colour'].'; color: #'.$set['table1_text_colour'].';} 
.table1:link { color: #'.$set['table1_text_colour'].'; text-decoration: underline;}
.table1:visited { color: #'.$set['table1_text_colour'].'; text-decoration: underline;}
.table2 { background-color: #'.$set['table2_bg_colour'].'; color: #'.$set['table2_text_colour'].';}
.table3 { background-color: #'.$set['table3_bg_colour'].'; color: #'.$set['table3_text_colour'].';}
.table3:link { color: #'.$set['table3_text_colour'].'; text-decoration: none;}
.table3:visited { color: #'.$set['table3_text_colour'].'; text-decoration: none;}
.table3:hover { color: #'.$set['table3_text_colour'].'; text-decoration: underline;}
</style>';

mysql_close($sql);
?>

És következzen amit a var.php
<?php header("Content-type: text/html; charset=utf-8");?>
<?php
error_reporting(0);

$sql_server_name = "serverneve";
$sql_login_name = ".....";
$sql_login_password = ".....";
$sql_dbase_name = ".....";
$mainpage = "........";
$uzenetek_szama_oldalankent = "5";
?>
Remélem ti láttok benne valami okosságot. Nem vok. valami expert a témában szal csak olyan egyszerűen magyarázzátok h. mi lehet a gond:)

Előre is köszi.

Kriszián
 
1

nem php hanem html/css

gex · 2008. Jan. 29. (K), 00.09
inkább azt a html-t másold ide (vagy linkeld), amit a szerver elküld. a szerver nem fog máshogy lefuttatni egy php kódot ie és ff számára. valószínűleg az ie eltérő html és css értelmezése eredményezi a hibát.
2

csak az ff

Vrt · 2008. Jan. 29. (K), 13.42
Szia!

Közben leteszteltem a többi " jelentős " böngészővel is. Csak az FF jeleníti meg jól (vagyis ahogy kéne). A többi tesz soremelést.

A sytle.php -ből kikommenteztem az összes css sort. És annak ellenére is azt hozza.

Kriszitán
3

eltérő alapértékek

gex · 2008. Jan. 29. (K), 15.56
ha jól emlékszem pont most volt egy ilyen téma, és a css-be írt body { margin: 0; padding: 0; } megoldotta. szerintem neked is ez lesz a megoldásod, mert a "minden böngészőnek mások az alapértékei margin, padding, stb ügyben" a problémád.

hasznos lehet a css reset is.

szerk: megtaláltam a témát, nem ugyanez volt, de hasonló. ;)
4

nem nyert

Vrt · 2008. Jan. 29. (K), 19.50
Ez nem nyert. Két css-t használok. Mind a kettőben megvan a margin, padding 0-ra. A valami.php altal beemelt stilus.php fajlban is van nehany style ertek, amit hozzafuz a valami.php -hez a meghivasa utan. Beallitottam ott is ...de semmi..sot kitoroltem az osszes style elemet belole akkor sincs valtozas. Kitoroltem a valami.php bol a h1,2 sorokat is mert a linked altal emlitett hozzaszolasokban azzal is baj volt. De azert itt megjegyeznem hogy ugyanez a stilus van hasznalva a tobbi oldalhoz is es ott nincs gond.. csak ezzel a valami.php val....egyebkent meg ha atnevzem html-re akkor minden fasza..csak ugye elszall a php resze es nem tudja bevhni az adatbazist..es mindenfele szintaktikai hibat nyom ki...

Más ötleted van?

Kiprobáltam a gépen levő webserveren és itt meg tökéletes. Nincs margin, teljesen fenn van ie -ben is. Ugyan az a fájl. Ilyenkor merre kotorásszak?
5

soremelés egyből az elején?

TeeCee · 2008. Jan. 29. (K), 23.56

<?php header("Content-type: text/html; charset=utf-8");?>  
<?php  
require_once('var.php'); 
...
Ebben csak én látom a soremelést?

<?php
header("Content-type: text/html; charset=utf-8");
require_once('var.php'); 
...
Próba-cseresznye...
6

még mindig nem.

Vrt · 2008. Jan. 30. (Sze), 00.31
Ezzel annyit érek el hogy:

1. Amit beirtam forrast (az elso - valami.php) ha abban megoldom ezt amit javasoltal akkor az adatbazishoz hozza se fer, elszall.

2. Ha fooldalon csinalom ezt meg, ahol beemelem a valami.php-t akkor a soremeles megszunik, de kiteszi balra..es a stílust nem is használja....

Egyébként azt hiszem hogy ennek a sornak : <?php header("Content-type: text/html; charset=utf-8");?> egyedül kell szerepelnie, mintha ezt mondták volna.

Szóval még mindig nem az igazi..De azt tyénleg nem értem hogy saját webserveren miért jó..uw meg miért nem..lehet hogy mysql beállítás okozza ezt?

Krisztián
7

nem egyedül, első...

TeeCee · 2008. Jan. 30. (Sze), 01.21
... szóval elsőnek kell szerepelnie ;-)
Próbáld ki a következőt: a header()-es utasításokat az első kiírások elé rakd! (kiírásnak minősül minden, amit a PHP-val kiíratsz - echo, print, printf, ... -, vagy amit nem PHP TAG-eken belülre írsz!

(Zárójeles megjegyzés: A PHP amikor értelmezi a PHP-fájlt, akkor neki tök mind1 lesz, hogy <?php echo 'aaa'; ?><?php echo 'bbb'; ?>-t írsz-e, vagy egyben <?php echo 'aaabbb'; ?>-t...)

A header-eknek kell először kimennie. Ha egyetlen byte is ki van küldve, akkor pl. a kukik nem is működnek, de akkor szép hibaüzenetet is kapsz.
Arra gondoltam, lehet, hogy az apache van máshogy beállítva, hogy hány byte-os szeletekben küldje ki a generált oldalt. Ez logikusnak is tűnik most nekem, mondjuk azért nem használja a stílust (gondolom a style.php-ben van a CSS - amit egyébként célszerűbb külön CSS-fájlba tenni), mert a header()-nek először kellene megérkeznie és mivel az apache addig csak gyűjtögette a generált tartalmat, tudja, hogy a fejléc az első, eldobja a tartalmat (a style.php-vel együtt) és veszi a fejlécet. Vagy az IE tenne ilyet...

Mindegy. A header() mindig MINDEN kiírás előtt megy, ezt jegyezd meg!

Amúgy itt le is van írva, hogy a header() az első: http://hu.php.net/header

Na, erre mit reagál az IE, várom a fejleményeket, üdv:
TeeCee :o)
8

kimenetet mutasd

gex · 2008. Jan. 30. (Sze), 12.24
vonatkoztass el attól, hogy amit küld a szerver az egy statikus html oldal vagy valami amit a php generált le. kizárólag az számít, amit megkap a böngésző. mutass két linket a két szerverre, vagy ha ez nem működik/nem akarod, akkor mentsd le a két oldalt, tedd fel valahova és adj linket. kezdünk átmenni tippelgetésbe, ez sok időd veszi el neked is és nekünk is.
9

két link két szerverre

Vrt · 2008. Jan. 30. (Sze), 14.30
Gex, TeeCee!

Na kicsit kezdek elmerülni a mélyvízben..szóval akkor először is:

A local webserveremre nem tudok linket mutatni. Az ultrawebes link itt.

A vendegkonyv.php forrását ha megnézitek akkor az első sort nem mutatja, ahol a kódolást állítom, így a biztonság kedvéért:

1. vendegkonyv.php első néhány sora..(meta tagokat egy kivételével kitörlöm mert felesleges ideváni)
<?php header("Content-type: text/html; charset=utf-8");?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Vendégkönyv - Esküvőszervezés - Varga Zsuzsanna</title>
<link rel="stylesheet" type="text/css" href="style2.css" media="screen" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="rating" content="general">
<script type="text/javascript" src="swfobject.js"></script>
<?php 
require_once('style.php'); ?>
</head>
<body style="background-color:#FFFFFF;">
<div id="Table_01">
.
.
.
2. A vendegkonyv.php -be beemelem a style.php-t
<?php header("Content-type: text/html; charset=utf-8");?
<?php
require_once('var.php');
$sql = mysql_connect($sql_server_name, $sql_login_name, $sql_login_password) or die('<p class="error_logout">Beállítási hiba! nézze meg újra az SQL beállításokat</p>');
mysql_select_db($sql_dbase_name) or die('<p class="error_logout">Beállítási hiba! nézze meg újra az SQL beállításokat</p>');
$fejlec_table = mysql_fetch_array( mysql_query("select * from `gb_texts` where gb_texts_id=1", $sql), MYSQL_ASSOC);
$fejlec_kiirni = $fejlec_table['gb_texts_fejlec'];
$lekerdezes = "select * from `css_style` where id=1";
$set = mysql_fetch_array(mysql_query($lekerdezes, $sql), MYSQL_ASSOC);
print '<style type="text/css">
 body { background-color: #'.$set['bg_colour'].'} 
 body,td,th { color: #'.$set['text_colour'].';
 font-family: Arial, Helvetica, sans-serif; } 
.table1 { background-color: #'.$set['table1_bg_colour'].'; color: #'.$set['table1_text_colour'].';} 
.table1:link { color: #'.$set['table1_text_colour'].'; text-decoration: underline;}
.table1:visited { color: #'.$set['table1_text_colour'].'; text-decoration: underline;}
.table2 { background-color: #'.$set['table2_bg_colour'].'; color: #'.$set['table2_text_colour'].';}
.table3 { background-color: #'.$set['table3_bg_colour'].'; color: #'.$set['table3_text_colour'].';}
.table3:link { color: #'.$set['table3_text_colour'].'; text-decoration: none;}
.table3:visited { color: #'.$set['table3_text_colour'].'; text-decoration: none;}
.table3:hover { color: #'.$set['table3_text_colour'].'; text-decoration: underline;}
</style>';

mysql_close($sql);
?>
3. A tstyle.php beemeli a var.php-t
<?php header("Content-type: text/html; charset=utf-8");?>
<?php
error_reporting(0);
$sql_server_name = "sql3.ultraweb.hu";
$sql_login_name = "***";
$sql_login_password = "***";
$sql_dbase_name = "****";
$mainpage = "http://albisoft.uw.hu/vargazsuzsa/";
$uzenetek_szama_oldalankent = "5";
?>
Na kb ennyiről szól. Amikor a vendekonyv.php-be NEM emelem be a style.php-t akkor nem rontja a margint.....kb ennyit sikerült debuggolnom:)

Remélem így már könnyebb lesz megoldásra lelni..

Köszi

Kriszitán
10

forrás

gex · 2008. Jan. 30. (Sze), 15.01
mondtam, hogy nem a php része érdekel minket, hanem az, hogy mit küld a szerver a böngészőnek. mondom, hogy mit csináltam, így legközelebb te is boldogulni fogsz:
  1. forrás megtekintése ff-ben. semmi különös, itt úgyis jó az oldal.
  2. forrás megtekintése ie-ben. forrásból nem sokat tudok megállapítani itt sem, így keresek egy olyan eszközt, amivel meg tudom nézni a dom-fát, illetve a különböző elemek tulajdonságait (a'la firebug).
  3. megnézem a dom-fát és kiszúrok két text node-ot még a legelső div előtt. a forrásban tényleg látszik egy kocka karakter, ami a nem megjeleníthető karakterek helyén szokott lenni.
  4. elmentem az oldalt, megnézem utf-8-as szerkesztőben, valami kis felső pont, de billentyűzetről nem tudom reprodukálni.
  5. megnézem ff alatt is, forrás megtekintésénél nincs benne, de ha elmentem és megnézem szerkesztőben, egy és ugyanaz (itt erősen csodálkoztam).
  6. ráengedem a validátort az oldaladra, ami visszatér egy "Sorry! This document can not be checked." hibával bizonyos értelmezhetetlen karakterek miatt.

szóval a megoldás, hogy mindenféle értelmetlen karakterekkel van tele az oldal amit legenerálsz, ez ie-t megzavarja ff meg nem törődik vele. ha a saját gépeden jó akkor rosszul töltöd fel a szerverre talán (van ilyen bináris feltöltés, lehet, hogy azzal kéne), de ez igazából csak tipp. vagy írj az uw-nek, bár nem hiszem, hogy csak neked lenne ilyen problémád ha az ő saruk lenne, vagy várj amíg egy nálam okosabb elmondja, hogy hogyan is kerülhetnek bele azok a karakterek a kimenetbe.
11

próbálozom..

Vrt · 2008. Jan. 30. (Sze), 17.27
Gex!

Sorry ha nem értek meg minden elsőre..igyekszem okosan csinálni ezt a témát, és megfelelni aminek meglehet..sok van még hátra az útból... (pl dom fa.. most hallom:) ..ne nevess..de utánanézek..sőt már nézem..)

- Megnéztem FireBug-al...az első DIV előtt nem látok karaktert de van egy soremelés...csak DW-ben ezt nem látom..
- IE developert feltettem ultraweben ha megnézem akkor a body sor alatt van egy #text sor (ahol látszik a kis négyzet..) utána egy style sor..és utána megint egy #text sor ahol viszont nincs négyzet... és utána kezdődik a az első div...
Ultraweb kepernyomentes
Na most ugyanez a saját webservern ahol nem csinál soremelést. Body sor után #comment "értéke" Imageready Slice(...psd), következő a div és utána megint egy #comment End imageready slices
Localwebserver kepernyomentes
- Megnéztem PSpad editorban, ott én nem láttam semmit.
- Validátor nekem is ellszál..

Köszönöm az eddig segítséged..ezen a vonalon valahogy továbbmegyek..rá kell jöjjek..mostmár nagyon idegel a téma...Ha esetleg van valami isteni szikrád...

Köszi

Kriszitán
12

már mondtam

gex · 2008. Jan. 30. (Sze), 17.37
ff-fel és ie-vel és csináld meg azt, hogy fájl->oldal mentése->csak html. amit így lementesz nézd meg egy utf-8-képes szerkesztőben - bizonyára a pspad is tudja -, és nézd meg a <style ...> sort. az elején látnod kell egy furcsa karaktert. az a hibás, ie alatt azért van soremelés, mert ie kiírja azt a karaktert is. ff valahogy lenyeli.

de hogy az a karakter hogyan kerül oda, nem tudom biztosan megmondani.
13

a beemelés cseszi el

Vrt · 2008. Jan. 31. (Cs), 00.54
Gex!

Az ötleted alapján elindulva, kevertem kavartam..már majdnem meglett a megoldás is..de aztán rájöttem h. megsem jó. Lementettem az oldalt, UTF-8 editor...kitöröltem azokata karaktereket. és visszatöltöttem..azonnal meg is szűnt a probléma, de viszont mivel azt a fájlt töltöttem vissza amit "futás-időben" mentettem le, így az beemelt tartalom is része volt a fájlnak..így elcseszte a dolgot, nem működtek a linkek..ésatöbbi...Na erre akkor gyorsan kitöröltem a beemelt sorokat (style.php ugye)...elmetn visszatölt..és megint szar..Amikor beemeli a style.php-t egész egyszerűen kapok hozzá néhány non-unicode charactert vagy mit. Na erre kiszedtem a stílus sorokat a style.php -ből, hátha akkor nem emel be semmi plusz sort, és nem kapok ilyen dolgokat..de a lépése nem két ilyen karakter hanem 4:)

Össze vissza játszottam vele, de egyenlőre nem találtam megoldást.:( Kicsit megfáradtam holnap meló..szóval majd holnap folytatom azzal hogy felteszem egy másik ingyenes szolgáltatóhoz..csak attól félek, hogy majd az elés helyen is belefutok ebbe...

Na mind1..ha esetleg valami ötleted van..szívesen veszem..ha belefáradtál a témába akkor meg köszönöm az eddig segítséget...sok érdekes tippet adtál és sok ötletet hogy mit tanuljak meg:)

Kriszitán
14

Új file

Max Logan · 2008. Jan. 31. (Cs), 09.24
Ha a beemelt php okoz problémát, akkor én azt csinálnám, hogy:
  • nyitok egy üres filet.
  • a mostani style.php-t megnyitnám notepad-del és elmenteném ANSI-ba. Ezzel egyből eltűnnek a rejtéjes karakterek.
  • Az ANSI file-t megnyitnám notepad-del, majd mindent kijelöl CTRL + C
  • Vissza az üres file-hoz, CTRL + V, majd mentés UTF-8-ba

Ha ezek után sem jó, akkor valamelyik másik file-ban van a hiba.
15

ftp fw-re

gex · 2008. Jan. 31. (Cs), 11.26
ha eddig jól figyeltem, akkor a te szervereden nincs hiba. ami azt jelenti, hogy a fájlok szállítás, azaz a fw-re való felmásoláskor "romlanak el". esetleg próbáld ki az uw-t, atw-t. valaminek lennie kell.

ha akarod írj nekem, megnézem a fájlokat, most már engem is érdekel, hogy miért van ez.
16

A header()...

TeeCee · 2008. Jan. 31. (Cs), 14.50
... csak egyszer kell, minden kiírás előtt! :)
(a fájlra nincs hatással, csak a böngésző tudja, hogy hogy kell értelmeznie a dolgokat...)
Nem a header-ek többszöri kiadásakor volt egy négyzeted IE alatt?

Amúgy mivel szerkeszted a fájlokat?

Továbbiakban szeretném felhívni a figyelmedet, hogy a "k&uuml;ld&#337;" az nem UTF-8ban van ;-) - bár gondolom a dizájnt kaptad és a dinamikus dolgokat csak 'belecsináltad' :)

Várjuk a további fejleményeket...
17

Na szóval

Vrt · 2008. Jan. 31. (Cs), 15.44
Szóval akkor szép sorban:

Max logan: Kipróbáltam ezt az ansiba ..ut8..dolgot de az eredménye annyi lett hogy nem egy hanem két kocka lett IE developerben:) unbelievable...:(

Gex: Én már nem tudom mit higgyek...nem tudom miért romlana el..egyszerűen UW-n ha lefut a require_once parancs és beemeli a style.php- betesz még néhány köcsög karaktert.. amint lesz egy kis időm és főnök nem ólalkodik itt melettem feltöltöm atw-re vagy fw-re és meglátom hogy ott mit csinál...egyszerűen már nem tudom...

TeeCee: Minden fájlban csak egyszer adom ki a header-t..vagy nem?:) Vagy nem vágom..( mondjuk ez nem lenne meglepő..amennyi a témáról már tudok). DW-ben " alkotok". Az általad is említett "k&uuml;ld&#337 részeket majd javítom:)...az most kevésbé izgat..erre megy rá az idegem:) De nem kaptam semmit...desgin-t is én rajzoltam..meg a vázat is én csináltam..kivéve persze ezt a dinamikus vendegkonyv marhaságot..agrhh..és pont azzal bíbelődök:( Na mind1..így legalább elmerülhetek ilyen izgalmas debbugging kérdésekben is..legalább tanulok tőletek..

Kriszitán
18

ok...

TeeCee · 2008. Jan. 31. (Cs), 17.39
... azért hittem, hogy a dizájnt kaptad, mert abban rossz volt az ékezet, a mintaadatokban meg jó :D

NEM! a header()-t csak egyetlen egyszer adod ki, a legelső PHP-fájl legelején. (a doctype előtt). a többit töröld ki, ha jól saccolom, akkor pont azért lehet a négyzet... Ha megnézed, minden fájl elején ott van a header + egy soremelés. A header()-t egyetlen egyszer kell kiadni az egész oldal legenerálása ELŐTT
Magának a fájlnak a karakterkódolását nem a kiadott fejléc adja meg, hanem a szerkesztőben, mit állítasz be. A header()-rel és a META-ban mit adsz meg, az csak a böngészőnek mondja meg.

Na, próbáld ki ezt:
- vendegkonyv.php legelső sora a header();
- style.php-ból töröld ki a header()-t
- var.php-ból töröld ki a header()-t.

Nos, erre mit lép? :)
19

ez se nyert:(

Vrt · 2008. Jan. 31. (Cs), 18.17
TeeCee!

Kipróbáltam de nem nyert...

Fönöktől megszabadultam 1 órára így volt erre időm...

Feltoltottem ide:

http://justfortest.atw.hu/index.html (A vendegkonyv link alul mukodik, tobbi meg uw ra van allitva...de itt se jo, itt is csinal soremelest.....sot a kodolast is elcseszi..de ez most nem erdekel hogy miert... A lényeg hogy soremeles adott...

Feltoltottem ide is:

http://justfortest.extra.hu/ (szintén csak a vendekonyv link mukodik alul..soremelés itt is van...)..

Még egyszer leellenőriztem saját gépen...nem csinál soremelést..

Na hogy most ilyenkor mivan..már nem tudom...nem értem mi az a xar amit odavág..meg hogy minek..Egyeltalán atw szerverén miért nem jó a karakter kódólás? Nem utf-8 mikor megnézem a böngészőben...goin' to crazy...

na de most megyek haza...aztán este folytatom a kínlódást.

Kriszitán
20

Victory - avagy megint a user a luzer

Vrt · 2008. Feb. 1. (P), 12.10
Gex, TeeCee, Max Logan!

Végül is megoldódott a probléma..a megoldás pedig az orrom előtt volt...szerintem annyit kavartam h. már nem tudtam hogy, mi van a serveren...elkezdtem az a tyúk és a tojástól, print parancsokkal kiderült hogy honnan jön a hiba..var.php...hogy vágná bele..nem a style.php...be volt kapcsolva a byte order mark...(tudom most csuklok..mert erről is beszéltünk..)

De nem baj..tanulópénz...

Köszönöm a rám és a problémára fordított időtöket...igyekszem felnőni a feladatokhoz és egyszer segíteni nektek ha kell:)))

Szép napot.

Kriszitán