IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Práce s INI soubory

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Neaktivní uživatel:5.1.2014 13:49

Ahoj,
mám menší dotaz, Kit ve svých článcích ukazuje, jak INI soubory číst. Zajímalo by mě, jak do nich zapisovat (UPDATE). Myslím jak je v SQL - UPDATE něco WHERE.

Díky, Dan.

Odpovědět
5.1.2014 13:49
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:5.1.2014 14:03

Jednoduchý příklad:

<?php
$dbh = dba_open(".htdata.ini", "c", "inifile");
dba_replace("key", "value", $dbh);
dba_close($dbh);

Malé varování: Nevhodnými daty se dá struktura takového souboru snadno rozbít. Proto by do něj návštěvníci neměli zapisovat.

Editováno 5.1.2014 14:06
Nahoru Odpovědět
5.1.2014 14:03
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:5.1.2014 14:07

Díky :)

EDIT: Používám to pro zapsání konfigurace redakčního systému (název šablony, údaje do DB atd.)

Editováno 5.1.2014 14:08
Nahoru Odpovědět
5.1.2014 14:07
Neaktivní uživatelský účet
Avatar
Odpovídá na Kit
Neaktivní uživatel:5.1.2014 14:09

Ještě malý dotaz mimo - pro přečtení normálního souboru můžu použít file_get_contents, že ?

Nahoru Odpovědět
5.1.2014 14:09
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:5.1.2014 14:14

INIFILE je obyčejný textový soubor. Nedoporučuji ho moc často modifikovat, ale pokud do něj bude zapisovat jen admin a vstup bude náležitě ošetřen, je to OK. Je určen k zápisu konfigurace, např. přístupových údajů k MySQL.

Nahoru Odpovědět
5.1.2014 14:14
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:5.1.2014 14:17

Pro přečtení celého souboru se obvykle používá funkce parse_ini_file(), která z toho udělá hezké asociativní pole, se kterým si pak můžeš dělat co chceš.

Nahoru Odpovědět
5.1.2014 14:17
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:5.1.2014 14:19

Jj, to vím (to píšeš ve svým článku), já myslel úplně obyčejný texťák :)

Nahoru Odpovědět
5.1.2014 14:19
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:5.1.2014 14:21

To je obyčejný texťák, ale proč bys ho tak měl číst? Není k tomu důvod. Co s ním pak chceš po načtení dělat?

Nahoru Odpovědět
5.1.2014 14:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:5.1.2014 14:22

Warning: dba_open(/var/www­/projekt1/.htda­ta.ini): failed to open stream: Permission denied

public static function update($key,$newvalue)
        {
                $ini = dba_open($_SERVER['DOCUMENT_ROOT'] . "/.htdata.ini", "c", "inifile");
                dba_replace($key, $newvalue, $ini);
                dba_close($ini);
        }
Nahoru Odpovědět
5.1.2014 14:22
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:5.1.2014 14:24

Nemáš právo vytvářet soubory v adresáři. Na to jsem kdysi také narazil a poradil jsem si. Zkus se nad tím trochu zamyslet a přijdeš na to.

Oprava: Apache nemá právo zápisu do toho adresáře.

Editováno 5.1.2014 14:26
Nahoru Odpovědět
5.1.2014 14:24
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:5.1.2014 14:30

Přepsal jsem složce práva a už to jede :`

Btw. když mám INI soubor rozdělený na víc sekcí, jak to tam nastavit ?

Nahoru Odpovědět
5.1.2014 14:30
Neaktivní uživatelský účet
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:5.1.2014 14:34

Datibáze INIFILE neumí sekce.

Nahoru Odpovědět
5.1.2014 14:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Neaktivní uživatel
Kit:5.1.2014 14:47

Nedělej to jako statickou funkci, ale jako třídu. Ušetříš si bolení hlavy.

Nahoru Odpovědět
5.1.2014 14:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 13 zpráv z 13.