php include = fura karakterek
Van egy md5 hash scriptem.
Először is van a motor
PHP kód:
<?php
$file_path = $_POST['file'];
$begin = microtime(true);
$hash = md5_file($file_path);
$end = microtime(true) - $begin;
echo "Hash = $hash; time = $end<br>";
?>
Ha simán lefuttatom a motort akkor tökéletesen lefut a végeredmény:
Hash = 93fd4648f1d7314f1f598276d2abb6b5; time = 0.392518043518
De amikor includeolni akarom ebbe a php-be akkor végeredmény
Hash = 93fd4648f1d7314f1f598276d2abb6b5; time = 0.408075094223
Mi az a  az elején és ,hogyan került oda ?
EBBE INCLUDEOLTAM
PHP kód:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="hu">
<head>
<link rel="stylesheet" href="http://sarkanydavid.eu/css/1.css" type="text/css">
<meta http-equiv="content-style-type" content="text/css">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2">
<title>MD5 Elenőrző</title>
</head><body>
<table id="fotable" cellspacing="0" cellpadding="0" width="91%" height="455">
<tr>
<td class="szelek"> <img src="http://sarkanydavid.eu/pic/fboldal2.png" width="12" height="12" alt="fb"></td>
<td id="foldal" class="felal" colspan="3"></td>
<td class="szelek"> <img src="http://sarkanydavid.eu/pic/fjoldal2.png" width="12" height="12" alt="fj"></td>
</tr>
<tr>
<td id="boldal" class="baljobb" rowspan="4" height="431"></td>
<td class="egyeb" colspan="3"><h1> </h1></td>
<td id="joldal" class="baljobb" rowspan="4" height="431"></td>
</tr>
<tr>
<td class="egyeb" colspan="3">
<p> </p>
</td>
</tr>
<tr>
<td class="egyeb" colspan="3">
<h1>MD5 Ellenőrző</h1>
<table style="width: 100%" align="center">
<tr>
<td> </td>
<td><form action="md5.php" method="post"></td>
<td> </td>
</tr>
<tr>
<td> </td>
<td><?php include("md5.php"); ?></td>
<td> </td>
</tr>
</table>
</form>
<p align="center"> </p>
</td>
</tr>
<tr>
<td class="egyebek" height="26"> </td>
<td class="egyebek" height="26"> </td>
<td class="egyebek" height="26"> </td>
</tr>
<tr>
<td class="szelek"><img src="http://sarkanydavid.eu/pic/lboldal2.png" width="12" height="12" alt="lb"></td>
<td id="loldal" class="felal" colspan="3"></td>
<td class="szelek"><img src="http://sarkanydavid.eu/pic/ljoldal2.png" width="12" height="12" alt="lj"></td>
</tr>
</table>
<p id="copyright">Copyright © D&J Team</p>
</body>
</html>
De ha egy sima php-be include-olom akkor megint csak rendesen lefut és a végeredmény:
Hash = 93fd4648f1d7314f1f598276d2abb6b5; time = 0.392518043518
PHP kód:
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Névtelen 1</title>
<style type="text/css">
.style1 {
text-align: center;
}
</style>
</head>
<body>
<p class="style1"><?php include("md5.php"); ?></p>
</body>
</html>
re: php include = fura karakterek
Hexa editorral érdemes lenne ránézni mindkét fájlra, valószínűleg abban látni fogod, hogy melyik elején van az a 3 karakternyi szemét.
Linkelni editort nem tudok, de gugliban első találat :) hex editor
re: php include = fura karakterek
Eléggé karakterkódolási hibának tűnik. A weboldaladban "charset=iso-8859-2" van, a php pedig több, mint valószínű, hogy úgy van beállítva, hogy utf-8-ként kezeli. Cseréld a html-ben a "charset=iso-8859-2"-t "charset=utf-8"-ra, és nézd meg, hogy mi történik.
Másik lehetőség, hogy ha pl. a md5.php-t Notepadban mentetted el UTF-8-ként (A notepad beteszi a fura karaktereket az elejére), akkor elmented úgy, hogy a mentés máskéntnél ANSI-t választasz ki UTF-8 helyett
re: php include = fura karakterek
Szerintem a karakterkódolás állításával már semmire sem megy, valószínűleg már az editorban csesződött el a dolog (pl.: UTF-8-ban mentet és iso8859-2). Hexa editorral szépen ki lehet szedi a fájl elejéről a bekerült 3 karakternyi szemetet.
re: php include = fura karakterek
Olyankor szokott, ha UTF-8-ban mentesz, de valami miatt Windows-1250-ben nyitod/jeleníted meg. (Ez nem jelenti feltétlenül, hogy nem tudja kezelni a helyzetet az alkalmazás! Csak nem jól jelenít meg.)
ez a dtz nem más mint a UTF8 -as fájl BOM része.
Nálad felesleges, úgyhogy vagy mentsd el UTF8 BOM nélkülibe vagy ANSI-ba ( ajánlott program Notepad++ - Formátum menüpont )
Inkább ANSI mert 'ISO-8859-2' -hez jobban illik.
PHP esetén küldj ki egy headert-is a kódolással, úgy már jobb lesz.
forrás
re: php include = fura karakterek
A hexa editor jelen esetben az ágyúval a verébre lövés tipikus esete.
Abban igazad van, hogy valószínűleg az editorban csesződött el a dolog, de ezt Win alatt akár Notepad-ban, akár Notepad++ -ban igen könnyen tudja korrigálni, előbbiben egy mentés másként --> ANSI-val, utóbbiban "Convert to ANSI"-val, vagy "Convert to UTF-8 without BOM"-mal.