Diskuze: Logování do souboru...
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 33 zpráv z 33.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Použij raději funkci
http://www.php.net/…contents.php
s parametrem FILE_APPEND. Bude to bezpečnější. Na konec záznamu přidej
znak "\n".
Však je to tam v příkladech.
file_put_contents($file,$string."\n",FILE_APPEND | LOCK_EX);
Nemusíš ten soubor otvírat ani zavírat. Vše se udělá automaticky. Prostě se na konec souboru přidá řetězec $string.
To je hezká fce. V tom PHP aby se prase vyznalo, musím zde sepsat nějaký rejstřík a to i pro sebe.
Na co rejstřík, když máme http://www.php.net
Ta funkce je užitečná i tím, že si ten soubor po dobu zápisu zamkne. Záznamy se tak nemohou promíchat se zápisem z jiného procesu. Zároveň je jisté, že to zamknutí je skutečně jen na dobu nezbytně nutnou a ani o chvilku déle.
Nedávno jsem si takto logoval ve formátu JSON a pracovalo se s tím pak přímo skvěle.
No v manuálu je hodně funkcí, třeba 10 co dělají tu samou věc. A hledat v tom, která z nich je nejlepší...
Zajímavé. O duplicitách moc nevím. Většinou jsou v těch funkcích alespoň drobné odchylky a některé starší jsou deprecated.
Neměl jsem na mysli přesné duplicity (i když těch tam je také dost). Hlavně ty drobné odchylky, že parametrem fce A dosáhnu lepšího výsledku, než u fce B a podobně. Pak samozřejmě ty deprecated, to je taky hrůza.
Kdyby se to strukturovalo do tříd, tak by takovéhle problémy nebyly. Pořád naivně věřím, že k tomu někdy dojde. Příjemně mě překvapilo např. toto: http://php.net/…datetime.php
Hmm, už ty konstanty vypadají dost drsně. Tuto třídu jsem neznal.
Mě se to líbí, konstanty jsou jen pro jednodušší formátování do známých formátů, funguje to stejně jako ty příšerné datetostr a podobné, jen je to zabalené ve třídě. Ve verzi 5.3 přídali např. metodu add, podívej se v příkladech, jak zrcadlí procedurální a objektový přístup, tenhle směr vývoje je docela nadějný: http://www.php.net/…time.add.php
Mně také. Ty objektové příklady mi ukázaly, že se z nich vlastně staly primitivní interpretry stringového parametru. To je velmi zajímavý přístup. Když si představím, že by každý objekt interpretoval jako příkaz nějakou podmnožinu nějakého jazyka... To už je skoro jako SQL.
Když se podíváš na příklad
http://www.php.net/…datetime.php#…
tak si možná vzpomeneš, jak jsme se bavili o tom, jak extrémně přetěžuji
objekty. Zdá se, že nejsem sám.
Jako že je tam diff místo toho, aby odečetl nějaký getter?
Takže když si budu chtít udělat třeba tu diskuzi znovu s tímhle tak to udělám takto :
<form action="pridej.php" method="post">
Jméno :<input type="text" name="jmeno"><br>
Text : <inpu type="text" name="text"><br>
pridej.php
file_put_contents($diskuze,$_POST[jmeno] . "\n" . text . "\n",FILE_APPEND | LOCK_EX);
????
ještě jsem zapoměl
$diskuze = diskuze.txt
Pochopil jsi to správně, ale realizoval špatně. Použitím syrového $_POST[jmeno] si koleduješ o malér, je nutné ho ošetřit. Nejlépe přes htmlspecialchars().
já na to nechci dávat nějké include atp. mě jde o ten výstup...
btw. v tom výstupu se to \n zobrazí ??
Asi jsi ještě neslyšel o XSS, že? A jak chceš potom zobrazit znaky ampersand, uvozovky, < apod?
pochybuji že zrovna můj web by chtěl někdo hacknout btw.dělám zálohy.. (jestli to
pomůže)
XSS je zkratka pro Cross-site scripting. Představ si, že ti tam nějaký vtipálek vloží tento text:
</body>
Jakmile vypíšeš jeho komentář, zavře ti to stránku a dále se nic nevypíše. Proto vše před vypsáním musíš ošetřit funkcí htmlspecialchars().
jenže já to nechci vypisovat na stránku,chci to použít pro zápis do .htpasswd - jednoduchá "registrace"
Tak v tom případě tam htmlspecialchars() nebude, protože to bude už ošetřeno hashovací funkcí.
Rozmysli si dobře, jestli to budeš chtít takto dělat. Není to právě spolehlivé řešení, databáze by byla lepší. .htpasswd z ní případně můžeš po změně generovat, ale většinou to není potřebné.
Já chci pouze zaheslovat jednu stránku,aby tam nemohl každý,ale abych o
něm aspoň něco věděl...
Už to mám hotový,jen nevím jak to odřádkovat...
Však odpověď jsi dostal: Přidat "\n". Pokud potřebuješ odřádkovat jako v DOSu, přidej "\r\n".
Funguje. Musíš to dát do uvozovek - ne do apostrofů.
Ahá,já to tam čet,ale nějak jsem to při psaní vypustil.... pak to zkusím...napíšu
Zobrazeno 33 zpráv z 33.