Configuration Manipulation With PHP Config - Changing Things Around (Page 7 of 9 )
Just as you can getContent(), you can also setContent() - and this next example demonstrates how, by using this method to change a configuration variable read from a file.
<?php
// include class
include("Config.php");
// instantiate object
$c = new Config();
// read configuration data and get reference to root
$root =& $c->parseConfig("mail.ini", "IniFile");
// get reference to [Settings] section of file
$settingsSection =& $root->getItem("section", "Settings");
// get POP account
$popAccountDirective =& $settingsSection->getItem("directive",
"POPAccount"); $popAccountDirective->setContent("my.new.email.address");
// write configuration back to file
$c->writeConfig();
?>
In this case, the setContent() method is used to change the value of a configuration variable, and then the writeConfig() method is used to write the entire set of variables back to the file.
This is one of the more common applications of the Config class - displaying the current configuration to the user, and saving modifications back - so pay attention to this next example, which builds on what you've just learned to create a script accepting user input for application configuration. This script is divided into two parts: a form which displays the current configuration (if available) and allows the user to edit it, and a form processor, which accepts the new configuration and saves it to a file.
<html>
<head>
</head>
<body>
<?php
if (!file_exists("ppp.conf"))
{
echo "Configuration not found!";
}
else
{
// include class
include("Config.php");
// instantiate object
$c = new Config();
// read config file
// get root
$root =& $c->parseConfig("ppp.conf", "IniFile");
// get sections
$pppSection =& $root->getItem("section", "ppp");
$userSection =& $root->getItem("section", "account");
// get directives
$numberDirective =& $pppSection->getItem("directive", "number");
$retriesDirective =& $pppSection->getItem("directive", "retries");
$deviceDirective =& $pppSection->getItem("directive", "device");
$connect_scriptDirective =& $pppSection->getItem("directive",
"connect_script");
$ppp_userDirective =& $userSection->getItem("directive", "ppp_user");
$ppp_passDirective =& $userSection->getItem("directive", "ppp_pass");
// form not yet submitted
if (!$_POST['submit'])
{
// prefill form with values from file
?>
<h2>Configuration</h2>
<table border="0" cellspacing="5" cellpadding="5">
<form action="<?=$_SERVER['PHP_SELF']?>" method="post">
<tr>
<td>ISP user name</td>
<td>
<input type="text" name="user"
value="<?=$ppp_userDirective->getContent();?>">
</td>
</tr>
<tr>
<td>ISP user password</td>
<td>
<input type="text" name="pass"
value="<?=$ppp_passDirective->getContent();?>">
</td>
</tr>
<tr>
<td>ISP dial-up number</td>
<td>
<input type="text" name="number"
value="<?=$numberDirective->getContent();?>">
</td>
</tr>
<tr>
<td>Number of retries</td>
<td><input type="text" name="retries"
value="<?=$retriesDirective->getContent();?>"
size="4"></td> </tr>
<tr>
<td>Connection device</td>
<td>
<input type="text" name="device"
value="<?=$deviceDirective->getContent();?>">&
lt;/td>
</tr>
<tr>
<td>Connection script</td>
<td>
<input type="text" name="script"
value="<?=$connect_scriptDirective->getContent();?>">
</td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit"
name="submit" value="Save Configuration"></td>
</tr>
</form>
</table>
<?
}
else
{
// form submitted
// set new values from form input
$numberDirective->setContent($_POST['number']);
$retriesDirective->setContent($_POST['retries']);
$deviceDirective->setContent($_POST['device']);
$connect_scriptDirective->setContent($_POST['script']);
$ppp_userDirective->setContent($_POST['user']);
$ppp_passDirective->setContent($_POST['pass']);
// write configuration back
$c->writeConfig();
// print message
echo "Configuration saved!";
}
}
?>
</body>
</html>
Next: Giving Birth >>
More PHP Articles
More By icarus, (c) Melonfire