Settings.php is leeg na verzenden instellingen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Robert van der Leest

Robert van der Leest

19/12/2010 12:00:37
Quote Anchor link
Hoi :)
Geen idee hoe ik het moet zeggen, dus ik doe het maar gewoon zo. :P Ik heb een settings.php bestand en een bestand die settings.php bewerkt. Dit is het stukje wat ik heb bij het bewerken.
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
if (isset($_GET['act']) and $_GET['act'] == 'settings')
{
    // Search for paths.php
    require 'paths.php';
    // And settings.php
    require ($catdir . '/settings.php');
    // Please welcome them
    print '<h3>Catalyst Settings</h3>';
    print 'Wannna change something? You can do it manually, but you can do it here too.<hr />';
    // Print a form ;)
    print '<form method="post" action="admin.php?act=settings">';
        // What kind of frontpage do we want to show?
            // Show a description
            print 'Frontpage type: ';
            // And show the form
            print '<select name="settings_frontpage">
                    <option value="settings_frontpage_project">Project Page</option>
                    <option value="settings_frontage_catalyst">Welcome text</option>
                    <option value="settings_frontpage_custom">Custom</option></select><br />';
    // Show a save button
    print '<input type="submit" value="Submit" name="settings">';
    // And close the form
    print '</form>';
    // Only go further if we submitted
    if (isset($_POST['settings']))
    {
        // First: fopen
        $fp = fopen($catdir . '/settings.php', "w+") or die ("Failed write the settings");
        // Again, search for settings.php
        require ($catdir . '/settings.php');
        // Some form information. We need to convert it...
        $frontpage_settings = $_POST["settings_frontpage"];        
        // And submit it to settings.php
        str_replace($frontpage, $frontpage_settings, "");
        // Close the file
        fclose($fp) or die ("Error closing file!");
    }
}

Maar nu is het probleem: hij leegt alleen het bestand en ik heb geen idee wat ik moet doen om het goed te krijgen. Als iemand me zou kunnen helpen zou ik dat echt geweldig vinden.

~Robert
 
PHP hulp

PHP hulp

28/01/2023 14:49:07
 

19/12/2010 12:10:16
Quote Anchor link
- Controleren of een post is gedaan doe je met if($_SERVER['REQUEST_METHOD'] == 'POST')
- Or die is geen foutafhandeling. Bouw nette foutafhandeling in. Kan gewoon met if.
- Kijk eens wat require doet.
- Is het niet slimmer om die act variabele in een hidden input te zetten in het formulier?
- Vertrouw de gebruiker NOOIT. Laat ze dus nooit een php bestand zomaar kunnen aanpassen.
- Je veranderd nu alleen de variabele in dit script terwijl die uitgevoerd wordt. Zie ref.filesystem.
 
- SanThe -

- SanThe -

19/12/2010 12:22:55
Quote Anchor link
Je opent de file en je sluit de file. Ik zie je er niks in schrijven.
 
Robert van der Leest

Robert van der Leest

19/12/2010 12:25:59
Quote Anchor link
Karl Karl: gedaan, maar werkt helaas niet. :(
- SanThe -: Ik had het met str replace geprobeerd en daarvoor moest ik em openen. Maar dat werkte niet. :(
 
Joren de Wit

Joren de Wit

19/12/2010 12:32:36
Quote Anchor link
str_replace() heeft niets te maken met het schrijven naar een bestand. Daar heb je de functie fwrite() voor nodig...
 

19/12/2010 12:33:36
Quote Anchor link
Robert Monden op 19/12/2010 12:25:59:
Karl Karl: gedaan, maar werkt helaas niet. :(
- SanThe -: Ik had het met str replace geprobeerd en daarvoor moest ik em openen. Maar dat werkte niet. :(


Zie ook str_replace.
 
Dalando De Zuil

Dalando De Zuil

19/12/2010 13:00:22
Quote Anchor link
Eigenlijk wel een lachertje, str_replace om in bestanden te schrijven! :x

Maar nee, zoals al eerder is gezegd, fwrite
Kijk anders even naar de Tizag tutorial over in bestanden schrijven.
 

19/12/2010 13:03:02
Quote Anchor link
Dalando De Zuil op 19/12/2010 13:00:22:
Eigenlijk wel een lachertje, str_replace om in bestanden te schrijven! :x

(...)


Waarom dan? Op zich kan ik de gedachte wel volgen. Volgens mij is het zelfs ook zo dat je in andere talen inderdaad een methode als str_replace kan gebruiken.
 
Dalando De Zuil

Dalando De Zuil

19/12/2010 13:04:19
Quote Anchor link
Karl Karl op 19/12/2010 13:03:02:
Dalando De Zuil op 19/12/2010 13:00:22:
Eigenlijk wel een lachertje, str_replace om in bestanden te schrijven! :x

(...)


Waarom dan? Op zich kan ik de gedachte wel volgen. Volgens mij is het zelfs ook zo dat je in andere talen inderdaad een methode als str_replace kan gebruiken.


Echt? Ik ben verder niet bekend met andere server-side talen behalve php...
 
Robert van der Leest

Robert van der Leest

19/12/2010 13:06:49
Quote Anchor link
Ik ben er uit gekomen. :) Het kon wel met string replace, maar het moest anders. Ik heb nu dit:
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
    // Only go further if we submitted
    if($_SERVER['REQUEST_METHOD'] == 'POST')
    {
        // For the frontpage
            // Important stuff
            $file = $catdir . '/settings.php';
            $search = $frontpage;
            $replace = $_POST["settings_frontpage"];
            // Reading the string
            $str=implode("\n",file($file));
            $fp=fopen($file,'w');
            // And replace it
            $str=str_replace($search,$replace,$str);
            // And write it
            fwrite($fp,$str,strlen($str));
            // Close the file
            fclose($fp) or die ("Error closing file!");
    }

Ik moet het nog wel iets bijschaven maar ik ben blij dat het redelijk werkt. :) Iedereen bedankt voor de hulp. :)
 

19/12/2010 13:09:27
Quote Anchor link
Dalando De Zuil op 19/12/2010 13:04:19:
Karl Karl op 19/12/2010 13:03:02:
Dalando De Zuil op 19/12/2010 13:00:22:
Eigenlijk wel een lachertje, str_replace om in bestanden te schrijven! :x

(...)


Waarom dan? Op zich kan ik de gedachte wel volgen. Volgens mij is het zelfs ook zo dat je in andere talen inderdaad een methode als str_replace kan gebruiken.


Echt? Ik ben verder niet bekend met andere server-side talen behalve php...


Dan heb je bijvoorbeeld een file object en daarop roep je dan weer een methode aan.
 



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.