Diskuze: Práce s INI soubory

PHP PHP Práce s INI soubory American English version English version

Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Daniel Vítek:

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
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

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
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:

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
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:

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
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

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
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

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
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:

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
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

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
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:

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
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

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
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:

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
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

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
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:

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.