Config instellen als wordpress

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

- Rob -

- Rob -

03/12/2016 15:42:56
Quote Anchor link
- Ariën - op 03/12/2016 15:34:34:
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.


Maar de bestandnaam van welke file? Waar de function enz in staat of een andere file?
 
PHP hulp

PHP hulp

28/03/2024 22:36:12
 
- Ariën  -
Beheerder

- Ariën -

03/12/2016 16:10:11
Quote Anchor link
Je ini-file...
 
- Rob -

- Rob -

03/12/2016 16:15:47
Quote Anchor link
- Ariën - op 03/12/2016 16:10:11:
Je ini-file...


Maar die staat er al, maar dan staat het er dubbel bij de 2e function want daar is fileName dus config.ini en daarachter staat dat er nog een keer? EN bij de 1e functie ook?
 
- Ariën  -
Beheerder

- Ariën -

03/12/2016 18:29:48
Quote Anchor link
Het is echt niet zo moeilijk als het lijkt. :-)

Je hoeft alleen maar die write_php_ini_() functie aan te roepen met je zelfgemaakte array, en de locatie van je .ini-file.

Die functie zelf hoef je echt niet aan te passen.

Wat heb je nu dan? Als het niet lukt bouw ik wel wat als ik thuis ben.
Gewijzigd op 03/12/2016 18:32:30 door - Ariën -
 
- Rob -

- Rob -

03/12/2016 19:23:58
Quote Anchor link
- Ariën - op 03/12/2016 18:29:48:
Het is echt niet zo moeilijk als het lijkt. :-)

Je hoeft alleen maar die write_php_ini_() functie aan te roepen met je zelfgemaakte array, en de locatie van je .ini-file.

Die functie zelf hoef je echt niet aan te passen.

Wat heb je nu dan? Als het niet lukt bouw ik wel wat als ik thuis ben.



Wat ik hierboven heb, heb ik maar verder niks..
Quote:
Als het niet lukt bouw ik wel wat als ik thuis ben.

Dat zou wel nice zijn, en aardig! :D
 
- Ariën  -
Beheerder

- Ariën -

03/12/2016 20:47:05
Quote Anchor link
Gewoon de twee functies opnieuw overnemen van Stackoverflow. Dan je array en bestandsnaam meegeven aan de aanroep van write_php_ini() meegeven, en je hebt na uitvoer als alles goed is een verse nieuwe php.ini.

Probeer maar, laat maar even zien.
Als het echt niet lukt, open ik mijn code editor wel.
Gewijzigd op 03/12/2016 20:47:50 door - Ariën -
 
Jamie Trip

Jamie Trip

03/12/2016 23:05:28
Quote Anchor link
- Ariën - op 03/12/2016 12:41:52:
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.


Kun je een .ini file dan niet beveiligen met een.htaccess 'je ?
 
- Ariën  -
Beheerder

- Ariën -

03/12/2016 23:11:15
Quote Anchor link
Dat kan, maar als die beveiliging 'breekt' dan heb je een probleem. Een niveau hoger plaatsen is defintiever en veiliger. Ik zie een bestand buiten de webroot niet opeens naar de webroot verhuizen.
Gewijzigd op 03/12/2016 23:11:43 door - Ariën -
 
Jamie Trip

Jamie Trip

03/12/2016 23:22:08
Quote Anchor link
-verwijderd-
Gewijzigd op 04/12/2016 19:18:34 door Jamie Trip
 
Ben van Velzen

Ben van Velzen

03/12/2016 23:55:03
Quote Anchor link
Jamie, niet lullig bedoeld, en ook niet persoonlijk, maar misschien wil je je post herzien als je weer nuchter bent? Ik mis een beetje het constructieve deel van je antwoord.
 
- Rob -

- Rob -

04/12/2016 09:03:11
Quote Anchor link
Verwijderd

Toevoeging op 04/12/2016 11:02:34:

Ariën? Zou je dan voor mij nog die script willen maken? :D
Gewijzigd op 04/12/2016 11:04:14 door - Rob -
 
- Ariën  -
Beheerder

- Ariën -

04/12/2016 11:11:29
Quote Anchor link
Ik heb het script uitgetest, en het draait prima. En zo moeilijk was het ook niet eens ;-).

Het enige nadeel is dat de hoofdstukken ([database]) niet worden opgeslagen. PHP vindt die blijkbaar niet zo belangrijk. Maar met het gebruik van prefixes (db_host) kan je zelf toch voldoende groeperen.
readini.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$setting
= parse_ini_file('datafile.ini');
echo "<pre>".print_r($setting,true)."</pre>";
?>


makeini.php
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
<?php
/* NIEUWE SETTINGS! Je kan hier je POST variabelen gebruiken in de values. Verder gewoon fictieve waardes en keys */
$array = array(
    'db_host' => 'localhost',
    'db_name' => 'a',
    'db_user' => 'a',
    'db_password' => 'c',
    'sitestatus' => 1,
    'encoding' => 'ANSI'
);

write_php_ini($array, "datafile.ini");


/*DO NOT EDIT UNDER THIS LINE! */
/* ==============================================================*/

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

}

?>


datafile.ini
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
db_host     = localhost
db_name     = mijn_website
db_user     = pietje
db_password = T0P_53CR3T
sitestatus = 1
encoding = UTF8
Gewijzigd op 04/12/2016 11:15:21 door - Ariën -
 
- Rob -

- Rob -

04/12/2016 11:51:47
Quote Anchor link
- Ariën - op 04/12/2016 11:11:29:
Ik heb het script uitgetest, en het draait prima. En zo moeilijk was het ook niet eens ;-).

Het enige nadeel is dat de hoofdstukken ([database]) niet worden opgeslagen. PHP vindt die blijkbaar niet zo belangrijk. Maar met het gebruik van prefixes (db_host) kan je zelf toch voldoende groeperen.
readini.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$setting
= parse_ini_file('datafile.ini');
echo "<pre>".print_r($setting,true)."</pre>";
?>


makeini.php
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
<?php
/* NIEUWE SETTINGS! Je kan hier je POST variabelen gebruiken in de values. Verder gewoon fictieve waardes en keys */
$array = array(
    'db_host' => 'localhost',
    'db_name' => 'a',
    'db_user' => 'a',
    'db_password' => 'c',
    'sitestatus' => 1,
    'encoding' => 'ANSI'
);

write_php_ini($array, "datafile.ini");


/*DO NOT EDIT UNDER THIS LINE! */
/* ==============================================================*/

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

}

?>


datafile.ini
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
db_host     = localhost
db_name     = mijn_website
db_user     = pietje
db_password = T0P_53CR3T
sitestatus = 1
encoding = UTF8



Harstikke bedankt! Hier kan ik echt veel mee :D
Gewijzigd op 04/12/2016 11:54:16 door - Rob -
 
- Ariën  -
Beheerder

- Ariën -

04/12/2016 11:54:52
Quote Anchor link
Dat laat zien hoe je je datafile.ini kan uitlezen. Dat is gewoon een standaard PHP-functie die ik voor het gemak met print_r() (print array) laat zien. Ik zou print_r() zeker niet in productie gebruiken.

Met dit kan je bijvoorbeeld je waarde van db_user ophalen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$setting
= parse_ini_file('datafile.ini');
echo $setting['db_user'];
?>
Gewijzigd op 04/12/2016 12:00:57 door - Ariën -
 
- Rob -

- Rob -

04/12/2016 12:11:08
Quote Anchor link
Verwijderd
Gewijzigd op 04/12/2016 12:14:30 door - Rob -
 
- Rob -

- Rob -

14/01/2017 10:37:04
Quote Anchor link
Hallo! Ik wil graag dat hij dat script alleen uitvoerd als er een $_POST is gebeurd, maar als ik dit instell met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if (isset($_POST["start"]))
komt het op een wit scherm met de error: Fatal error: Uncaught Error: Call to undefined function write_php_ini() in C:\xampp\htdocs\Bedrijfspaneel\install.php:21 Stack trace: #0 {main} thrown in C:\xampp\htdocs\Bedrijfspaneel\install.php on line 21. hieronder staat de code die ik heb gebruikt.
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
if (isset($_POST["start"])) {
    $array = array(
      'db_host' => 'localhost',
      'db_name' => 'b',
      'db_user' => 'a',
      'db_password' => 'c',
      'sitestatus' => 1,
      'encoding' => 'ANSI'
  );

  write_php_ini($array, $_SERVER["DOCUMENT_ROOT"]."/../datafile.ini");


  /*DO NOT EDIT UNDER THIS LINE! */
  /* ==============================================================*/
  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);
      }
  }
}



Toevoeging op 14/01/2017 10:38:02:

Zonder te controleren of er een POST is gedaan met start geeft die deze error niet.

Toevoeging op 14/01/2017 10:43:19:

SOLVED
Functies moeten buiten de controleer functie van de POST, anders werkt het niet.
 
- Ariën  -
Beheerder

- Ariën -

14/01/2017 10:58:33
Quote Anchor link
Ik raad liever aan om dit te gebruiken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if($_SERVER['REQUEST_METHOD']== "POST") {
// er is ge-Post
}
?>

Als er meerdere knoppen zijn die je kan submitten, dan kan je daarbinnen nog een controle met isset() doen op de bewuste knoppen.
Gewijzigd op 14/01/2017 10:59:54 door - Ariën -
 
- Rob -

- Rob -

14/01/2017 11:25:24
Quote Anchor link
Wat is het verschil tussen deze twee manieren?
 
- Ariën  -
Beheerder

- Ariën -

14/01/2017 11:30:48
Quote Anchor link
Mijn manier is eigenlijk theoretisch gezien het enige juiste. Beiden zal wel werken, maar in mijn ogen is het wel foutgevoeliger als je iets met de submitknop doet. Je wilt immers een formulier 'posten' en niet kijken of er op een knop is gedrukt.
Misschien is die knop er geeneens, en dan kan je het ook niet versturen.
Gewijzigd op 14/01/2017 11:34:55 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

14/01/2017 14:49:20
Quote Anchor link
Misschien even een timeout in dit topic inlassen? Topicstarter springt van de hak op de tak. Probeer eens wat uit, en zorg ervoor dat je begrijpt wat je doet.

Iemand kan code voor je kloppen, maar op den duur moet je zelf weten van de hoed en de rand. Behandel één onderwerp per keer en werk dit af voordat je aan iets ander begint. Persoonlijk kom je nogal chaotisch over.

En als je dan toch code dumpt met print_r(), doe dit dan veilig. Zelfs in een testomgeving (die vaak in verbinding staat met het internet). Hetgeen je uitpoept op het scherm kan HTML / JavaScript bevatten.

EDIT: daarnaast doe je er verstandig aan om functies in aparte bestanden onder te brengen die je, mits je deze vaak gebruikt, altijd include. Het is niet handig / verstandig om deze "inline" of zelfs binnen conditionele statements te zetten omdat deze dan maar (heel) soms gedeclareerd zijn.
Gewijzigd op 14/01/2017 14:53:20 door Thomas van den Heuvel
 

Pagina: « vorige 1 2



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.