pagina bewerken met variable
Ik heb de volgende pagina, waar je pagina's kunt 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
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
<html>
<head>
<?php
$url = './choosepage.php';
$file = $_GET['variable'];
// checks if form has been submitted
if (isset($_POST['text']))
{ // saves the text contents
file_put_contents($file, $_POST['text']);
// reloads page
header(sprintf('Location: %s', $url));
printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
exit();}
// reads the textfile
$text = file_get_contents($file); ?>
<title>Bewerk pagina</title>
</head>
<body>
<a href="./choosepage.php?variable=../pages/page1.php">page1</a>
<a href="./choosepage.php?variable=../pages/page2.php">page2</a>
<div id="container">
<form action="" method="post">
<textarea name="text" style="width:100%;" rows="20"><?php echo htmlspecialchars($text) ?></textarea>
<input type="submit" value="Opslaan" /></form>
</div>
</body>
</html>
<head>
<?php
$url = './choosepage.php';
$file = $_GET['variable'];
// checks if form has been submitted
if (isset($_POST['text']))
{ // saves the text contents
file_put_contents($file, $_POST['text']);
// reloads page
header(sprintf('Location: %s', $url));
printf('<a href="%s">Moved</a>.', htmlspecialchars($url));
exit();}
// reads the textfile
$text = file_get_contents($file); ?>
<title>Bewerk pagina</title>
</head>
<body>
<a href="./choosepage.php?variable=../pages/page1.php">page1</a>
<a href="./choosepage.php?variable=../pages/page2.php">page2</a>
<div id="container">
<form action="" method="post">
<textarea name="text" style="width:100%;" rows="20"><?php echo htmlspecialchars($text) ?></textarea>
<input type="submit" value="Opslaan" /></form>
</div>
</body>
</html>
Als ik nu de eerste pagina (page1.php) bewerk en op opslaan klikt werkt alles perfect, maar als ik de 2e pagina (page2.php) bewerk en op opslaan klik worden de wijzigingen niet opgeslagen.
Weet iemand waar dit aan ligt of hoe ik dit op een andere manier kan doen?
Alvast bedankt,
David
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 09/02/2015 12:20:27 door - Ariën -
Verder raad ik aan om te controleren of je formulier is verstuurd via deze constructie:
De oplossing voor dit probleem is heel simpel:
a) Hak je PHP pagina's in twee delen.
b) Het eerste deel bevat je PHP programma maar niet je output
c) Het tweede deel bevat je output
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
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
<?php
$url = './choosepage.php';
$file = $_GET['variable'];
// checks if form has been submitted
if($_SERVER['REQUEST_METHOD']=="POST")
{ // saves the text contents
file_put_contents($file, $_POST['text']);
// reloads page
header('Location: ' . $url);
/* printf('<a href="%s">Moved</a>.', htmlspecialchars($url)); NIET MEER NODIG */
exit();
}
// reads the textfile
$text = htmlspecialchars(file_get_contents($file));
?>
<DOCTYPE!>
<html>
<head>
<title>Bewerk pagina</title>
</head>
<body>
<a href="./choosepage.php?variable=../pages/page1.php">page1</a>
<a href="./choosepage.php?variable=../pages/page2.php">page2</a>
<div id="container">
<form action="" method="post">
<textarea name="text" style="width:100%;" rows="20"><?php echo $text; ?></textarea>
<input type="submit" value="Opslaan" /></form>
</div>
</body>
</html>
$url = './choosepage.php';
$file = $_GET['variable'];
// checks if form has been submitted
if($_SERVER['REQUEST_METHOD']=="POST")
{ // saves the text contents
file_put_contents($file, $_POST['text']);
// reloads page
header('Location: ' . $url);
/* printf('<a href="%s">Moved</a>.', htmlspecialchars($url)); NIET MEER NODIG */
exit();
}
// reads the textfile
$text = htmlspecialchars(file_get_contents($file));
?>
<DOCTYPE!>
<html>
<head>
<title>Bewerk pagina</title>
</head>
<body>
<a href="./choosepage.php?variable=../pages/page1.php">page1</a>
<a href="./choosepage.php?variable=../pages/page2.php">page2</a>
<div id="container">
<form action="" method="post">
<textarea name="text" style="width:100%;" rows="20"><?php echo $text; ?></textarea>
<input type="submit" value="Opslaan" /></form>
</div>
</body>
</html>
Gewijzigd op 09/02/2015 12:41:29 door Frank Nietbelangrijk
- Aar - op 09/02/2015 12:25:11:
Om meteen met de deur in huis te vallen zie ik meteen een groot veiligheidslek waarbij iemand elke pagina van je website kan aanpassen, omdat er geen filtering van de pagina's plaatsvindt (met een array bijvoorbeeld).
Op de rest van mijn site doe ik het zo:
Code (php)
Frank Nietbelangrijk op 09/02/2015 12:34:26:
Verder mag een header() functie niet gebruikt worden wanneer er reeds output gegenereerd is.
De oplossing voor dit probleem is heel simpel:
a) Hak je PHP pagina's in twee delen.
b) Het eerste deel bevat je PHP programma maar niet je output
c) Het tweede deel bevat je output
[..]
De oplossing voor dit probleem is heel simpel:
a) Hak je PHP pagina's in twee delen.
b) Het eerste deel bevat je PHP programma maar niet je output
c) Het tweede deel bevat je output
[..]
Werkt ook niet...
David
Wat heb je nu al aan code geprobeerd?
Waar ik benieuwd naar ben is wat precies de reden is dat je voor dit soort zaken geen database gebruikt?
Ik kwam erachter dat de rechten van het bestand op alleen-lezen stonden...
Mijn fout..
Iedereen bedankt voor de hulp!
David
PS is er nog een optie om dit topic op opgelost te zetten?
Gewijzigd op 13/02/2015 15:49:21 door D V
Gewijzigd op 13/02/2015 18:30:27 door - Ariën -