UTF8 alebo ANSI v PHP

Programovacie jazyky, rady, poradňa...
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

UTF8 alebo ANSI v PHP

Príspevok od používateľa weroro »

Zdravim,

snažím sa v PHPčku poksladať jednu funkciu a zaujímalo by ma niekoľko vecí.
Prvá:
Možem mať php súbor kódovaný v ANSI alebo to musí byť iba v UTF8?
Druhá:
Na začiatku scriptu mám použiť <?PHP alebo stačí <? ? Aký je v tom prosím rozdiel.
Tretia:
Na konci scriptu za ?>, možem nechávať prázdny riadok alebo ho treba mazať?

Zatiaľ mám niečo takéto:

Kód: Vybrať všetko

<?
$Odoslane = $HTTP_POST_VARS["Odoslane"];
$Nick = $HTTP_POST_VARS["Nick"];
$Sprava = $HTTP_POST_VARS["sprava"];
$Odoslane = stripslashes($Odoslane);
$Nick = stripslashes($Nick);
$Sprava = stripslashes($Sprava);
$NazovSuboru = "databaza.txt";
if ($Odoslane == "ano") {
    $fp = fopen( $NazovSuboru,"r"); 
    $PovodneSpravy = fread($fp, 80000); 
    fclose( $fp ); 
    $NovaSprava = "Nick: <b>$Nick</b><br>Správa: <b>$Sprava</b><br><i><br><br>:::";
    $NoveSpravy = "$NovaSprava$PovodneSpravy";
    $fp = fopen( $NazovSuboru,"w"); 
    if(!$fp) die("&texts=nedá sa zapisovať do súboru: $NazovSuboru &");
    fwrite($fp, $NoveSpravy, 800000); 
    fclose( $fp ); 
}
$fp = fopen( $NazovSuboru,"r"); 
$Data = fread($fp, 800000); 
fclose( $fp );
$PoleSpravy = split (":::", $Data);
echo "&texts=";
for ($n = 0; $n < count($PoleSpravy); $n++) {
    echo $PoleSpravy[$n];
        if (!$PoleSpravy[$n]) {
            echo "<br><br><b>Koniec</b>";
            exit;
        }
    }
?>
a Štvrtá vec:
Ako prosím dosiahnem to, že ak ten súbor databaza.txt neexistuje, že by mi ho ten script vytvoril, aby do neho mohol zapisovať? Dáko sa k tomu neviem dopátrať.

Ďakujem. (Viem, asi blbo pomenovaná téma ale nič lepšie ma nenapadlo)
Grim
Darca
Darca
Používateľov profilový obrázok
Príspevky: 8702
Registrovaný: 25 jún 2008, 0:54
Bydlisko: pod železničným mostom
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa Grim »

...som rád, že ti môžem pomôcť ako prvý. Na otázku ohľadne kódavania ti neviem odpovedať, ale na ostatné áno...<?PHP je lepšie, jednoznačnejšie, hneď na začiatku je jasné že ide o PHP...píš radšej to. Ak tam necháš iba <? tak to prehliadače tiež prečítajú, ale stále sa môžeš stretnúť s niektorými predpotopnými verziami z doby Márie Terézie, ktoré to nemusia vedieť rozlúšťiť. Na konci scriptu môžeš nechávať prázdny riadok, a dokonca tam môže pokračovať nejaký iný kód, napr. javascript, alebo obyčajné HTML. Súbor na čítanie vytvoríš tak, že namiesto toho "r" čo máš za tým $NazovSuboru napíšeš "a+". Keď je tam "r", tak súbor je otvorený iba na čítanie. Do súboru sa zapisuje pomocou

Kód: Vybrať všetko

fwrite($fp, $text);
...mimochodom, to číslo 800000 tak pri zapisovaní nemá byť, vymaž ho...a pri čítaní ak chceš prečítať celý súbor, nemusíš tam písať horibilné číslo ako v tvojom prípade 800000, ale môžeš použiť funkciu

Kód: Vybrať všetko

$size = filesize("$NazovSuboru");

$Data = fread($NazovSuboru, $NoveSpravy);
Mmartin
Guru
Guru
Používateľov profilový obrázok
Príspevky: 2786
Registrovaný: 07 feb 2009, 12:49
Bydlisko: Bratislava

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa Mmartin »

Grim - Rad by som ta opravil s tym <?php.
Prehliadac s tym nema NIC spolocne, a rozlustil by to aj amatersky prehliadac nakodeny napr v delphi.
PHP je server-side jazyk, takze prehliadacu vracia uz HTML verziu dokumentu, nie PHP dokument. To by sa teda kradlo :)
Grim
Darca
Darca
Používateľov profilový obrázok
Príspevky: 8702
Registrovaný: 25 jún 2008, 0:54
Bydlisko: pod železničným mostom
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa Grim »

...jasné...bože áno, máš pravdu... :oops:
Mek
Addict
Addict
Používateľov profilový obrázok
Príspevky: 4661
Registrovaný: 23 mar 2005, 23:00
Bydlisko: ZA <-> TN
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa Mek »

Co sa tyka kodovania, tak je uplne fuk, ake kodovanie pouzijes. Ale rozhodne odporucam UTF-8. V tom pripade si vsak daj pozor na to, aby to bolo UTF-8 without BOM (byte order mark), lebo inak budes mat na zaciatku suboru znaky navyse, co moze sposobit gulas.
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa weroro »

Ďakujem všetkým, tak to zhrniem či som správne pochopil:
Mek: vďaka aj som si to myslel, proste všetko robiť v UTF8. Na to som aj zvyknutý, opýtal som sa pre istotu.
Spoteny programator: Ja viem, že PHP je server side, tak som si tú chybu nejak ani neuvedomil, proste som to chápal tak, že sa môže nájsť ešte server, ktorý by s tým mal problém.
Grim: S tým voľným miestom si to myslel tak, že mám napríklad súbor PHP a do neho napíšem niečo takto?

Kód: Vybrať všetko

<?php
kod
?>
<html>
<head>
<title>
</title>
</head>
<body>
</body>
</html>
alebo to php môžem dať aj niekde medzi html, head alebo body?

Ohľadne toho filesize to vyskúšam vyzerá to zaujímavo

Hlavné je ale to, čo som pýtal na konci:

Takže ak dám atribút „r“ tak je súbor otvorený iba na čítanie to mi je jasne a čo sa stane ak tam dám „a+“?
Urobí to napr to, že mám $fp = fopen( $NazovSuboru,"a+"); a teraz ak súbor, ktorého cesta je v premennej $NazovSuboru neexistuje, tak ho script vytvorí (ten súbor) a otvorí ho na čítanie? Ak áno tak mne to nič nerobí :(
caesar1987
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3001
Registrovaný: 02 okt 2005, 0:57
Bydlisko: Nové Zámky
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa caesar1987 »

trosku sme sa pobavili a teraz vazne

na zaciatku mozes mat aj <? alebo <?php
pokial ma server povolene <? tak ti to pojde, ak nie tak budes musiet prepisat vsetko na <?php

co sa tyka kodovania tak je to na tebe ake pouzijes, ale pre buducu kompatibilitu s databazami atd pouzivaj kodovanie utf-8 aj suborov a aj stranky. A UTF-8 without BOM? Preco? BOM ti nic nezmeni, nic nepokazi ak ide o php subory.

a a subor neexistuje tak pri citani otestuj if file_exists() a pri zapise ak subor neexistuje tak sa sam vytvori.
Grim
Darca
Darca
Používateľov profilový obrázok
Príspevky: 8702
Registrovaný: 25 jún 2008, 0:54
Bydlisko: pod železničným mostom
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa Grim »

...ale to a+ neznamená, že ti to automaticky vypíše obsah toho súboru. Musíš to tam mať potom definované kódom, aby ho prečítal, čo vidím, že máš. Lenže keď ti prečíta prázdny súbor tak potom sa nečuduj že ti to nič nerobí. Ono to robí, ale ty to nevidíš, len si vyskúšaj do url napísať cestu k tomu súboru databaza.txt a uvidíš že ti to otvorí, budeš mať ale prázdnu stránku...

//a ten PHP kód môže byť hocikde na stránke, ale logicky nebude za tagom </body>...čo by tam robil?... :P, vlastne ho máš umiestnený podľa mňa dosť nešťastne, daj ho medzi tagy <body><?php kod ?></body>
caesar1987
Addict
Addict
Používateľov profilový obrázok
Príspevky: 3001
Registrovaný: 02 okt 2005, 0:57
Bydlisko: Nové Zámky
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa caesar1987 »

php mozes dat kamkolvek.

klude aj takto

Kód: Vybrať všetko

<div id="<?php echo "asdf"; ?>">
alebo
<div><?php echo "asdf"; ?></div>
alebo
<img src="<?php echo $adresa_obrazka; ?>" alt="" />
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa weroro »

No ja som ale testoval či ten súbor existuje.. to PHP je totiž prídavný script k flashu. Robím chat (nie guestbook ale chat) ale neviem prečo to ten blb, ktorému to robím chce aby to bolo naprogramované cez ActionScript 2 (asi chce aby mu to čo najľahšie nabúrali) tak sa teraz musím trápiť z PHPčkom.. v AS3 by som to spravil priamo cez AS. Ja totiž testujem existenciu súboru databaza.txt a bez toho, že by existoval sa mi aplikácia ani nespusti.. normálne to testovanie funguje (keď vytvorím súbor ručne).. ale to PHP mi nič nevytvorí.. a keby som tam skúsil dať r+? (to som neskúšal iba nápad) ..

Ja to php nemiešam s html.. pýtal som sa len do budúcnosti. je to čistý PHP súbor tak ako je v prvom poste. ja mu odosielam z flashu premenné normálne cez metódu POST. a všetko funguje krásne, akurát sa chcem poistiť, keby ten moták, ktorému to robím (nieže by som ja nebol moták :D) tu databázu zmazal. Tak nech sa mu automaticky vytvorí nová prázdna, nech sa majú kam zapisovať príspevky. Ale vďaka máš K
;)
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa audiotrack »

caesar1987 napísal:... A UTF-8 without BOM? Preco? BOM ti nic nezmeni, nic nepokazi ak ide o php subory...
ak budeš používať session alebo narábať s headermi, tak ti bude hádzať chybu že si už poslal na výstup dáta
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa weroro »

Grim: Ak ťa môžem ešte poprosiť. Prečo je tu $size = filesize("$NazovSuboru");, tá premenná $NazovSuboru v úvodzovkách? Nie je náhodov takto braná ako text? Funguje to, len ma to zaujíma (googliť viem, ale sú veci čo som nenašiel).
Grim
Darca
Darca
Používateľov profilový obrázok
Príspevky: 8702
Registrovaný: 25 jún 2008, 0:54
Bydlisko: pod železničným mostom
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa Grim »

...jj, môže byť, písal som totiž tak že som si skopíroval vlastný kód a len som to upravil a ja som tam mal už napísaný konkrétny súbor, takže bez uvodzoviek...
weroro
Flash coder
Flash coder
Používateľov profilový obrázok
Príspevky: 3206
Registrovaný: 14 feb 2009, 22:34
Bydlisko: Bratislava
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa weroro »

Zaujímavé ale je, že mi to funguje aj s úvodzovkami :D (PHP sa mi začína páčiť) Ale proste som sa len opýtal, lebo mi to tam nesedelo.
Grim
Darca
Darca
Používateľov profilový obrázok
Príspevky: 8702
Registrovaný: 25 jún 2008, 0:54
Bydlisko: pod železničným mostom
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa Grim »

...ja niesom taký odborníkm do PHP ako to môže vyzerať, takže si ma poplietol, a ja aj sám o sebe som dosť popletený... :-D
audiotrack
VIP
VIP
Používateľov profilový obrázok
Príspevky: 25958
Registrovaný: 09 sep 2005, 18:39
Kontaktovať používateľa:

Re: UTF8 alebo ANSI v PHP

Príspevok od používateľa audiotrack »

premenné v úvodzovkách sa prekladajú, takže ak $var = "premenna";

Kód: Vybrať všetko

echo "toto je text s premennou $var"; //toto je text s premennou premenna
ale:

Kód: Vybrať všetko

echo 'toto je text s premennou $var'; //toto je text s premennou $var
Takisto sa v úvodzovkách prekladajú špeciálne znaky, ako \n kým v apostrofoch nie. nie je to žiadna chyba ani anomália. V tom filesize teda nemajú zmysel. Môžu, ale nemusia tam byť keď tam nemáš žiaden iný reťazec
Napísať odpoveď