Ariën
03-12-2016 12:41
gewijzigd op 03-12-2016 12:45
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);
}
}
?>
Link gekopieerd
-
- Rob -
03-12-2016 13:01
gewijzigd op 03-12-2016 13:06
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?
Link gekopieerd
Nee?
ini is gewoon een speciaal format in een .ini file.
Lees anders mijn post nog eens.
Link gekopieerd
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!
Link gekopieerd
Je moet met PHP je formulier opslaan in een array, en dan kan je met de genoemde functie deze opslaan in een .ini file.
Link gekopieerd
-
- Rob -
03-12-2016 13:55
gewijzigd op 03-12-2016 13:56
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>
Link gekopieerd
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.
Link gekopieerd
-
- Rob -
03-12-2016 14:29
gewijzigd op 03-12-2016 14:29
$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?
Link gekopieerd
Gebruik de functie van StackOverflow waar ik heen linkte.
Link gekopieerd