« 1 2 3 4 5 6 »
Autor Zpráva
Davex
Profil
Alphard:
Ještě bych byl rád, kdyby někdo ověřil funkčnost ve více kombinacích na Windows - s Apache + mod_php/FastCGI a IIS + FastCGI.
Alphard
Profil
Testu Windows - s Apache + mod_php/FastCGI.
IIS nemám.
Mastodont
Profil
Možná by ve FAQ mohlo být něco jako "PHP mýty a skutečnost" .. ? Třeba předevčírem vyšel pěkný článeček o ' a " u řetězců ...
http://nikic.github.com/2012/01/09/Disproving-the-Single-Quotes-Performance-Myth
Alphard
Profil
[#3] Mastodont
Může být, jen jsem sekci nazval trochu jinak Nejčastější potíže s PHP (FAQ) » Výkonnost aplikace. Když bude podobných článků víc, není problém je vyčlenit a dát jim víc prostoru. Jen se obávám že těm, kteří se na to nejčastěji ptají, anglické vysvětlení moc nepomůže.
Davex
Profil
Ve funkci na posílání e-mailu by se asi měl na výstup base64_encode() aplikovat wordwrap(). Nevím, zda to tam je takto od začátku, ale teď s tím měl někdo potíže.

Už všude používám Content-Transfer-Encoding: 8bit, který v případě potřeby převede poštovní server sám, ale někde by s tím mohly být problémy, takže bych to ve FAQ nechal s base64.
Alphard
Profil
[#5] Davex
Ano, to vlákno jsem viděl, v rychlosti jsem to chtěl upravit, ale odeslalo mi to rozsypaný čaj. Teď jsem našel chybu, gmail je ok (posílám cca 90 kB zprávu). Večer to pro jistotu pošlu ještě na pár dalších serverů a pak aktualizuji.
base64_endode() je zastaralé, ale co si tak vzpomínám, tak na některých serverech býval problém s vhodnými funkcemi pro escapování. Já sám už dlouho využívám třídu Nette\Mail\Message, takže mi chybí osobní zkušenosti. Jestli někdo máte vyzkoušenou funkci, napište.
Alphard
Profil
[#5] Davex
Dokončeno. Děkuji i Thalii.
abc
Profil
Alphard:
Je teda ješte potřeba nějaká fce? Já mam skvělou fci, která umí posílat maily až se 3 přílohama a úplně bez chyby... Je to jeden z mých prvních skriptů, ale je celkem vychytanej. Pokud má někdo zájem, upravím do normální podoby a poskytnu
Alphard
Profil
abc:
Já jsem reagoval spíš na jiné kódování, jak zmiňoval Davex, protože base64 je mírně zastaralá. Cokoliv, co posílá i přílohy bych tam radši netahal. Ten script má být maximálně jednoduchý a srozumitelný. Nejde mi o to najít funkci, která toho umí co nejvíc :-)
Majkl578
Profil
Dal bych do FAQ jednoduchý kus kódu na dynamické načítání podstránek webu (tj. /index.php?page=foo). Například něco takového, možná případně něco benevolentnějšího (ten regulár je celkem striktní). Co myslíte?
Alphard
Profil
Majkl578:
Já se poslední dva týdny snažím popsat jednoduše MVC a šablony. Jednoduchá ukázka routeru by se tam hodila.
Hned bych k tomu ale přidal pravidla pro mod rewrite a pár řádek o tom, jak na pěkné url. Také častý dotaz.
Tori
Profil
Jen maličkost k příspěvku odkázanému z FAQ (nadpis skupiny): ten SQL dotaz by mohl být spíše select pismeno, slovo from tabulka order by pismeno, slovo, vzhledem k požadovanému výstupu.
Alphard
Profil
Upravil jsem a doplnil jsem i výpis toho slova do php části kódu.
peta
Profil
A pokud to bude stare php4, tak tam ta konstanta PHP_EOL je tez? Rikam to proto, ze jeste do nedavna nam tu umiral server, kde dokonce bezelo php3 :) Ale uz je tak pul roku na onom svete.

K reg. vyrazum mam tyhle linky http://peter-mlich.wz.cz/web/links.htm#regularni_vyrazy, ten prvni www.visibone.com je sice pro javascript, ale ty slajdy jsou dobre delane, priklady a tak. Mohlo by to nekomu pomoci.

while ($line = mysql_fetch_assoc($result)) // radek tabulky se oznacuje obvykle row.

"select den from dny" // select je dobre psat jako "SELECT den FROM dny", abys odlisil SQL syntaxi od promennych. Ono to mozna vypada divne, ale az budes mit slozitejsi dotaz, tak to pochopis. Pro obarveni SQL dotazu je sikovny link http://www.dpriver.com/pp/sqlformat.htm
Tady to dokonce mas INSERT INTO `dny` VALUES, tak by bylo dobre, drzet se jednotneho zapisu.

$zprava = "Jméno: {$_POST['jmeno']}".PHP_EOL;
Tady realescape, ti lide jsou schopni to takto napsat do kodu i jinde, pak.
Tori
Profil
peta:
A pokud to bude stare php4, tak tam ta konstanta PHP_EOL je tez?
Od PHP 4.3.10 a PHP 5.0.2. (manuál)

$zprava = "Jméno: {$_POST['jmeno']}".PHP_EOL;
Tady realescape
"realescape" = mysql_real_escape_string? Do mailu?
peta
Profil
$result = mysql_query($sql);
if(!$result){ /* Kód pro zalogování chyby a zobrazení nějaké chybové stránky uživateli. */ }
Tu hlasku bych tam urcite napsal, komentar neni dostacujici. Pak ti napisi, ze to zadnou chybu nenapsalo. Pochopitelne, v kodu neni vypis chyby.

Na funci autoutf si nekdo tusim stezoval v php, ze mu to nedelalo, co melo. Ale ted si nevzpomenu, zda byl problem ve funkcni nebo jinde.

Nevidim tam nikde problem s error_reporting. Obvykle mi na beznem serveru projde toto:
define("PHP_DEBUGMODE",false); //config.php
//define("SQL_DEBUGMODE",false);
if (PHP_DEBUGMODE)
    {
    @ini_set('error_reporting', E_ALL);
    @ini_set("display_errors", "on");
    error_reporting(E_ALL);
    }
else    {
    @ini_set('error_reporting', NONE);
    @ini_set("display_errors", "off");
    error_reporting(NONE);
    }
Kombinace se muze jevit silena, ale treba na nasel je error_reporting zakazane a bez tehle silene konstrukce se mi nic nezobrazi :) A pro zmenu na localhostu se mi chyby zobrazuji normalne, proto je tam else.

Tori: ok, mozna dobre zminit.
Alphard
Profil
peta:
komentar neni dostacujici. Pak ti napisi, ze to zadnou chybu nenapsalo. Pochopitelne, v kodu neni vypis chyby
Ještě nikdo nepsal. Já bych tam zase (když už) chtěl podmíněný výpis debug/production a to by zasahovalo do jiných logických částí aplikace a odvádělo pozornost. Je to základ, ne hotové řešení.

Na funci autoutf si nekdo tusim stezoval v php
Nevzpomínám si, ale určitě více lidem pomohla. Konkrétní problém budu řešit, ale nevím o něm.
Začátečníci často neví, jaké kódování používají a opravit diakritiku v mailu jinak bývala diskuse na 10 příspěvků.

Nevidim tam nikde problem s error_reporting.
Pravda. Už delší dobu to chci doplnit, ale pořád není nálada nebo čas. Zvýším tomu prioritu.
Tori
Profil
peta:
Na funci autoutf si nekdo tusim stezoval v php
Myslíte tohle vlákno: Cteni Content-Transfer-Encoding a Charset z php imap
Tori
Profil
Jen dvě maličkosti:
* V části ... supplied argument is not a valid MySQL result resource… by se z $result = mysql_query($q = 'select * from tabulka where id = 5'); mohlo to přiřazení dát na samostatný řádek. Přeci jen je to výslovně pro začátečníky a takto to může vypadat jako součást řetězce.

* K Nejčastější potíže s PHP (FAQ) » headers already sent… navrhuji doplnit, že koncová značka je nepovinná a zejména v includovaných souborech je spíš k užitku ji vynechat, aby se předešlo této chybě.
Majkl578
Profil
Tori:
mohlo to přiřazení dát na samostatný řádek
Upravil jsem.

navrhuji doplnit, že koncová značka je nepovinná
Nevím, jestli je vhodné tím začátečníky mást. Platí to totiž pouze v případě, že soubor PHP kódem končí (což includovaný soubor nemusí).
Keeehi
Profil
Majkl578:
Pokud includovaný soubor PHP kódem nekončí tak tam ?> tak jako tak nebude. Navíc pokud bude v includovaném souboru něco jiného kromě PHP kódu, bude zase s hlavičkami problém (pomineme li ob_start).
peta
Profil
Ja bych to tam radeji uvadel. Nereknu vam uz kde a co, ale neuvedl jsem ?> a nefungovalo mi neco. Slo o neco specialniho, co se obvykle nepouziva.
Vim, ze zacatecnik, ktery se pusti do reseni chyb pres error_reporting s tim muze mit problem, ale to uz je hold osud. To uz je podobny problemu, kdyz u ifu neukoncis kulatou zavorku v podmince. Pak ti hlasi error na konci php souboru a pak se to tezko hleda.
Tori: Slo o jine vlakno, mozna i jine forum.
panther
Profil
Majkl578:
Nejčastější potíže s PHP (FAQ) » headers already sent… - poslední větu „Pokud je text v UTF-8, tím výstupem může být i tzv. BOM signatura, vizte výše zmíněný Divný znak (čtvereček).“ bych dal na konec prvního odstavce.

„Přesvědčete se, že před začátkem <?php ?> není žádný text (ani mezera) a že nebylo nic odesláno třeba funkcemi jako echo nebo print. Pokud je text v UTF-8...“.

Bude to tam více logicky pasovat. V prvním odstavci popisuješ, co může způsobovat chybu, ve druhém pak pouze doporučení (a na jěho konci opět příčinu vzniku chyby).
Jan Tvrdík
Profil
Velmi často lidé upravují špatné php.ini. Navrhuji do FAQ doplnit návod, jak najít to správné php.ini.
Tori
Profil
Do části o register_globals navrhuji doplnit informaci o funkcích session_(un)register, konkrétně že
1. jejich funkčnost je podmíněna nastavením reg.globals,
2. stejně jako reg.globals by se ani tyto funkce neměly používat,
3. od verze 5.4 už v PHP nejsou.
Alphard
Profil
Je to tak častý problém? O vlákně Administrace jak začít vím, Petrovi to připadá strašně zajímavé, ale já už tak nadšený nejsem. Radši bych tyhle funkce nezmiňoval, předpokládejme, že neexistují, brzy to bude pravda.
Tori
Profil
Alphard:
Google ukazuje jen asi 15 vláken za letošní skororok, kde se ta funkce vyskytla, což je méně, než v předchozích letech (20-35). Takže často to není. Navrhovala jsem to hlavně proto, aby bylo kam odkazovat, ale vlastně se dá odkázat i na manuál php. (= souhlasím s [#26])
Onderek
Profil *
Ono je to vsechno krasne jenze nikde neni ani jeden navod jak to rozchodit na OSx
Joker
Profil
Onderek:
Je přímo v manuálu.
Podle toho návodu je nutné najít konfigurační soubor Apache (httpd.conf) a odkomentovat ty dva řádky s načtením PHP modulu.

Dodatek:
Jinak návody i v češtině není problém najít.
Ale neoznačil bych to zrovna za často kladenou otázku.
peta
Profil
Nejčastější potíže s PHP (FAQ) » Kódování e-mailu, aneb abychom neposílali otazníky.

1. Na radku je chyba, $head neni definovane a nemuzes pricitat .= k necemu, co neexistuje.
$head .= "MIME-Version: 1.0".PHP_EOL;

2. Pouzil bych radeji array
$head = array();
$head[] = "MIME-Version: 1.0";
$head[] = "Content-Type: text/plain; charset=\"utf-8\"";
$head[] = "Content-Transfer-Encoding: base64";
$head = implode(PHP_EOL,$head);
Tim se usetri psani PHP_EOL na kazdem radku. Mensi riziko chyby.

3. A ten radek s FRom nemusi byt kazdemu jasny, k cemu patri, ze se to tyka dalsiho radku k $head.
"From: =?UTF-8?B?".base64_encode(autoUTF("Moje Jméno"))."?=<ja@email.cz>".PHP_EOL;
« 1 2 3 4 5 6 »

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: