Config instellen als wordpress

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

- Rob -

- Rob -

03/12/2016 12:32:54
Quote Anchor link
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!
Gewijzigd op 03/12/2016 12:33:34 door - Rob -
 
PHP hulp

PHP hulp

11/05/2021 15:28:54
 
- Ariën -
Beheerder

- Ariën -

03/12/2016 12:41:52
Quote Anchor link
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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$setting
= parse_ini_file('../config.ini');
?>


In $setting heb je alle settings dan staan.

config.ini
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
[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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?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);
    }

}

?>
Gewijzigd op 03/12/2016 12:45:36 door - Ariën -
 
- Rob -

- Rob -

03/12/2016 13:01:01
Quote Anchor link
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?
Gewijzigd op 03/12/2016 13:06:27 door - Rob -
 
- Ariën -
Beheerder

- Ariën -

03/12/2016 13:10:18
Quote Anchor link
Nee?
ini is gewoon een speciaal format in een .ini file.

Lees anders mijn post nog eens.
 
- Rob -

- Rob -

03/12/2016 13:14:18
Quote Anchor link
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!
 
- Ariën -
Beheerder

- Ariën -

03/12/2016 13:40:12
Quote Anchor link
Je moet met PHP je formulier opslaan in een array, en dan kan je met de genoemde functie deze opslaan in een .ini file.
 
- Rob -

- Rob -

03/12/2016 13:55:57
Quote Anchor link
Beste Ariën,

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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?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>
Gewijzigd op 03/12/2016 13:56:20 door - Rob -
 
- Ariën -
Beheerder

- Ariën -

03/12/2016 14:12:11
Quote Anchor link
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.
 
- Rob -

- Rob -

03/12/2016 14:29:12
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$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.
Quote:
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?
Gewijzigd op 03/12/2016 14:29:36 door - Rob -
 
- Ariën -
Beheerder

- Ariën -

03/12/2016 14:31:13
Quote Anchor link
Gebruik de functie van StackOverflow waar ik heen linkte.
 
- Rob -

- Rob -

03/12/2016 14:33:48
Quote Anchor link
Dus
Quote:
[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.
Gewijzigd op 03/12/2016 14:43:26 door - Ariën -
 
- Ariën -
Beheerder

- Ariën -

03/12/2016 14:39:20
Quote Anchor link
Dat is geen array, maar een ini-file format.

Met de write_php_ini() functie kan je de array met je de $dbData van jouw script naar je .ini file schrijven.
 
- Rob -

- Rob -

03/12/2016 14:50:57
Quote Anchor link
Ik snap er echt helemaal niks meer van :P. write_php_ini() is geen functie, als ik de functie pak van S.O. werkt het niet (ook als ik het aangepast). ZOu je voor mij alstublieft een voorbeeld willen maken hoe het moet?
 
Ramon van Dongen

Ramon van Dongen

03/12/2016 14:56:48
Quote Anchor link
Niet lullig bedoel Rob, maar waarom wil je dit precies zo instellen?
Als ik het topic zo lees heb je nog niet zo heel veel verstand en ervaring van/met php.

Ga je het .ini bestand wel buiten de root opslaan?
 
- Ariën -
Beheerder

- Ariën -

03/12/2016 14:57:20
Quote Anchor link
Die functie heb ik in mijn eerste post laten zien. Ik heb nu geen PC om het uit te testen, maar wat heb je nu geprobeerd? En wat gebeurt er nu op dit moment?
 
- Rob -

- Rob -

03/12/2016 14:59:22
Quote Anchor link
Ramon van Dongen op 03/12/2016 14:56:48:
Niet lullig bedoel Rob, maar waarom wil je dit precies zo instellen?
Als ik het topic zo lees heb je nog niet zo heel veel verstand en ervaring van/met php.

Ga je het .ini bestand wel buiten de root opslaan?


Nou, ik wil alles gewoon uittesten, dit is dus om te testen en misschien kan ik het later dan nog eens gebruiken..

Toevoeging op 03/12/2016 15:02:11:

- Ariën - op 03/12/2016 14:57:20:
Die functie heb ik in mijn eerste post laten zien. Ik heb nu geen PC om het uit te testen, maar wat heb je nu geprobeerd? En wat gebeurt er nu op dit moment?


Hij gaf eerst een error: "Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\installeren.php on line 21", daarvoor gaf die aan dat de functie niet gedifend was, maar dat is al opgelost.

Dit is de function code, daar geeft die de error in:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
$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,
                ));

write_php_ini('config.ini', true);

function
write_php_ini($dbData)
{

    $res = array();
    foreach($dbData as $key => $val) // Hier geeft die de error steeds
    {
        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($dbData, implode("\r\n", $res));
}


function
safefilerewrite($fileName, $dataToSave)
{
    if ($fp = fopen($fileName, 'config.ini'))
    {

        $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);
    }
}

?>
Gewijzigd op 03/12/2016 15:05:16 door - Rob -
 
- Ariën -
Beheerder

- Ariën -

03/12/2016 15:05:52
Quote Anchor link
Je roept de functie fout aan op regel 16. Gebruik de array en dan de bestandsnaam.

Update:
Je maakt er wel een potje van door alles bij elkaar te gokken. Je functie moet je NIET aanpassen, alleen juist aanroepen

Een tutorial over functies lijkt me een beter idee.
Gewijzigd op 03/12/2016 15:08:41 door - Ariën -
 
- Rob -

- Rob -

03/12/2016 15:14:10
Quote Anchor link
- Ariën - op 03/12/2016 15:05:52:
Je roept de functie fout aan op regel 16. Gebruik de array en dan de bestandsnaam.

Update:
Je maakt er wel een potje van door alles bij elkaar te gokken. Je functie moet je NIET aanpassen, alleen juist aanroepen

Een tutorial over functies lijkt me een beter idee.


In die TUT die je stuurde stond deze functie, maar niet de array dus hoe moet ik weten wat ik fout doe. EN ja ik maak er een potje van maar als ik het probeer leer ik er mee van.
 
- Ariën -
Beheerder

- Ariën -

03/12/2016 15:28:46
Quote Anchor link
Die array moet je in de aanroep meegeven. Niet op de plek waar je de functie aanmaakt.

Je weet waar je de functie aanmaakt, en waar je hem aanroept?
 
- Rob -

- Rob -

03/12/2016 15:30:22
Quote Anchor link
- Ariën - op 03/12/2016 15:28:46:
Die array moet je in de aanroep meegeven. Niet op de plek waar je de functie aanmaakt.

Je weet waar je de functie aanmaakt, en waar je hem aanroept?


Ja dat weet ik. Alleen ik snap niks van deze functie, wat doet de functie precies? Hoe werkt deze functie?
Gewijzigd op 03/12/2016 15:33:00 door - Rob -
 
- Ariën -
Beheerder

- Ariën -

03/12/2016 15:34:34
Quote Anchor link
Waarom pas je de functie zelf dan aan?
Begin anders even opnieuw.

Je moet gewoon je eigen gemaakte array en de bestandsnaam in de aanroep zetten.
Gewijzigd op 03/12/2016 15:35:39 door - Ariën -
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.