Settings.php is leeg na verzenden instellingen
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)
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
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!");
}
}
{
// 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
- 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.
Je opent de file en je sluit de file. Ik zie je er niks in schrijven.
- SanThe -: Ik had het met str replace geprobeerd en daarvoor moest ik em openen. Maar dat werkte niet. :(
str_replace() heeft niets te maken met het schrijven naar een bestand. Daar heb je de functie fwrite() voor nodig...
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. :(
- SanThe -: Ik had het met str replace geprobeerd en daarvoor moest ik em openen. Maar dat werkte niet. :(
Zie ook str_replace.
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.
Maar nee, zoals al eerder is gezegd, fwrite
Kijk anders even naar de Tizag tutorial over in bestanden schrijven.
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.
Karl Karl op 19/12/2010 13:03:02:
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 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...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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!");
}
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. :)
Dalando De Zuil op 19/12/2010 13:04:19:
Echt? Ik ben verder niet bekend met andere server-side talen behalve php...
Karl Karl op 19/12/2010 13:03:02:
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 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.