Hallo!

Ik had een vraag, hoe kan ik netzo als wordpress de config instellen met een form? Dat je gegevens invoert, zoals language, database-naam, wachtwoord, database-host en tabelprefix. Als jullie weten waar ik dit kan vinden kan je ook een link sturen, of gewoon een bericht met de info. Alvast bedankt!
Een mooie oplossing is om met een .ini file te werken die je buiten de webroot (!) zet. Het is plain tekst, en kan iedereen de inloggegevens lezen.
<?php
$setting = parse_ini_file('../config.ini');
?>


In $setting heb je alle settings dan staan.

config.ini

[database]
db_host     = localhost
db_name     = mijn_website
db_user     = pietje
db_password = T0P_53CR3T


En schrijven kan met dit op S.O. gevonden scriptje.

<?php
function write_php_ini($array, $file)
{
    $res = array();
    foreach($array as $key => $val)
    {
        if(is_array($val))
        {
            $res[] = "[$key]";
            foreach($val as $skey => $sval) $res[] = "$skey = ".(is_numeric($sval) ? $sval : '"'.$sval.'"');
        }
        else $res[] = "$key = ".(is_numeric($val) ? $val : '"'.$val.'"');
    }
    safefilerewrite($file, implode("\r\n", $res));
}

function safefilerewrite($fileName, $dataToSave)
{    if ($fp = fopen($fileName, 'w'))
    {
        $startTime = microtime(TRUE);
        do
        {            $canWrite = flock($fp, LOCK_EX);
           // If lock not obtained sleep for 0 - 100 milliseconds, to avoid collision and CPU load
           if(!$canWrite) usleep(round(rand(0, 100)*1000));
        } while ((!$canWrite)and((microtime(TRUE)-$startTime) < 5));

        //file was locked so now we can store information
        if ($canWrite)
        {            fwrite($fp, $dataToSave);
            flock($fp, LOCK_UN);
        }
        fclose($fp);
    }

}
?>
Hartstikke bedankt! Ik zal eerst even leren wat .ini allemaal doet etc. en dan pas echt hieraan werken. :D. Maar met .ini kan ik dus via een form, data posten naar daat .ini file en dan kan ik dat definen naar config.php?
Nee?
ini is gewoon een speciaal format in een .ini file.

Lees anders mijn post nog eens.
Oké, ik heb hem nog is doorgelezen, ook de link die je stuurde. Maar ik snap het nog niet echt? Hoe kan dit helpen bij mijn vraag die ik stelde? Wel bedankt dat je zo snel reageerd!
Je moet met PHP je formulier opslaan in een array, en dan kan je met de genoemde functie deze opslaan in een .ini file.
Beste Ariën,

Kan je misschien mij helpen voor het op te slaan in een .ini file? Hier is mijn code die ik heb.


<?php
$hostname = $_POST['hostname'];
$username = $_POST['username'];
$password = $_POST['password'];
$database = $_POST['database'];
$prefix   = $_POST['prefix'];

$dbArray = Array($hostname, $username, $password, $database, $prefix);
?>
<!DOCTYPE html>
<html>
	<head>
	</head>
	<body>
	</body>
</html>
<form action="" method="POST">
	<input type="text" name="hostname" placeholder="Hostname">
	<input type="text" name="username" placeholder="Username">
	<input type="text" name="password" placeholder="Password">
	<input type="text" name="database" placeholder="Database">
	<input type="text" name="prefix" placeholder="Prefix">
	<input type="submit" name="submit" value="Save">
</form>
Kijk eerst even als test met parse_ini_file() hoe je array eruit ziet.

Zo een array reconstrueer je dan, en gebruik je in de genoemde functie.


$hostname = $_POST['hostname'];
$username = $_POST['username'];
$password = $_POST['password'];
$database = $_POST['database'];
$prefix   = $_POST['prefix'];

$dbData = array(
                'dbData' => array(
                    'hostname' => $hostname,
                    'username' => $username,
                    'password' => $password,
                    'database' => $database,
                    'prefix' => $prefix,
                ));
parse_ini_file('config.ini', true);


Ik heb nu zo mijn array, config.ini staat op zelfde locatie als waar het form staat.
Zo een array reconstrueer je dan, en gebruik je in de genoemde functie.
Hoe bedoel je precies? En hoe gebruik ik dat in de genoemde functie?
Gebruik de functie van StackOverflow waar ik heen linkte.
Dus
[default_colors]
sitebg = #F8F8F8
footerbg = #F8F8F8
link = #F8F8F8
url = #F8F8F8
bg = #F8F8F8
text = #F8F8F8
border = #F8F8F8

lu_link = #F8F8F8
lu_url = #F8F8F8
lu_bg = #F8F8F8
lu_text = #f505f5
lu_border = #F8F8F8


is de array? Van S.O.

Reageren