cms-je
De pagina's voor de site zijn er, en de $titel en $content staan in een database. De gebruiker kan vervolgens het content gedeelte zelf invullen. Dit gaat middels een wijzig-pagina met fckeditor in het form.
Mijn idee is als volgt:
admin-pagina / met inlog
op die pagina een lijst met links naar de te wijzigen pagina's
wijzigen kan op de pagina wijzig.php_1, 2, etc.
op die opagina wordt middels onderstaand script de $titel en $content opgehaald en door de gruiker aangepast en opgeslagen.
Ik heb middels onderstaand script het basis idee werkend.
Ik heb met mijn beperkte php kennis enkele scripts aan elkaar geknoopt (onder andere een stukje uit simpel cms van phphulp en een topic van webmastercity een oude tuttorial voor een gastenboek) Tevens heb ik de tuto van phphulp beterffende php & mysql gelezen.
Ik heb echter het idee dat er an de invoerkant nog wel iets verbetert kan worden kwa veiligheid? Ook denk ik dat de gebruikt scriptdelen wellicht niet helemaal goed in elkaar zaten / zitten.
Mijn vraag: is dit systeempje veilig genoeg? Er is maar een gebruiker.
Kan het admindeel nog wat beter opgezet worden (niet te ingewikkeld)
dit is wijzig.php
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
<?php
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>
<?php
// hier de eenvoudige pagina beveiliging
session_start();
if($_SESSION['login'] == 1 && $_SESSION['sid'] == session_id()){
?>
<?php // verbinden met de database
require_once("connect.php");?>
<?php
// hier de fckeditor invoegen
include_once("fckeditor/fckeditor.php") ;
?>
<html>
<head>
<title>Content pagina 1 wijzigen</title>
</head>
<body>
<h1>Kop en Inhoud van de pagina wijzigen</h1>
<?php // de aangepaste gegevens weer in de database zetten - updaten
if($_POST['submit']){
if ($_POST['titel'] == ""){
print("U hebt geen naam ingevuld, wat vereist is. Klik <a href=\"javascript:history.go(-1)\">hier</a> om terug te keren en uw naam in te vullen.<br>");
}
else if ($_POST['content'] == ""){
print("U heeft geen bericht ingevuld, wat vereist is. Klik <a href=\"javascript:history.go(-1)\">hier</a> om terug te keren en uw bericht in te vullen.<br>");
}
else{
$query="UPDATE content SET titel='".($_POST['titel'])."', content='".($_POST['content'])."' WHERE paginaid=1";
$wijzig=mysql_query($query) or die(mysql_error());
print("Pagina-inhoud gewijzigd<br>Klik <a href=\"admin_page.php\">hier</a> om terug te keren naar de admin_page.<br/> Of <a href=\"loguit.php\">hier</a> om uit te loggen");
}
}
// de gegevens uit de database ophalen om in het formulier te tonen
else{
$select = mysql_query("SELECT * FROM content WHERE paginaid=1");
$data = mysql_fetch_array($select);
?>
<form name="data" method="POST" enctype="multipart/form-data" action="wijzig.php?id=1">
<table class="main" cellspacing="0" width="800" hight="300" align="center">
<tr class="light">
<td class="main" width="200">Koptekst*:</td>
<td class="main" width="800"><input type="text" size="30" name="titel" value="<?php print($data['titel']);?>"></td>
</tr>
<tr class="dark">
<td class="main" width="100" valign="top">Pagina inhoud*:</td>
<td class="main" width="800" height="300">
<?php
$oFCKeditor = new FCKeditor('content') ;
$oFCKeditor->BasePath = '/fckeditor/' ;
//$oFCKeditor->CustomConfigurationsPath = '/pad naar mijn eigen_fckconfig.js' ; werkt nog niet nog uitzoeken.
$oFCKeditor->Value = $data['content']; // Hier komt dus de tekst in die geupdate kan worden.
$oFCKeditor->Width = "100%";
$oFCKeditor->Height = 500;
$oFCKeditor->Create() ;?>
</td>
</tr>
<tr class="title">
<td class="main" colspan="2">
<font size="3">* Hier moet altijd een tekst staan.</font>
<input type="submit" value="Voeg toe">
</td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>
<?php
}
else{
?>
<html>
<head>
<title>Verboden Toegang eerst inloggen</title>
<link rel="stylesheet" href="/tg.css">
</head>
<body>
<h1>Toegang gewijgerd</h1>
U bent niet gemachtigd om deze pagina te bekijken.</br>
Klik <a href="login.php">hier</a> om in te loggen.
</body>
</html>
<?php
}
?>
ini_set ('display_errors', 1);
error_reporting (E_ALL);
?>
<?php
// hier de eenvoudige pagina beveiliging
session_start();
if($_SESSION['login'] == 1 && $_SESSION['sid'] == session_id()){
?>
<?php // verbinden met de database
require_once("connect.php");?>
<?php
// hier de fckeditor invoegen
include_once("fckeditor/fckeditor.php") ;
?>
<html>
<head>
<title>Content pagina 1 wijzigen</title>
</head>
<body>
<h1>Kop en Inhoud van de pagina wijzigen</h1>
<?php // de aangepaste gegevens weer in de database zetten - updaten
if($_POST['submit']){
if ($_POST['titel'] == ""){
print("U hebt geen naam ingevuld, wat vereist is. Klik <a href=\"javascript:history.go(-1)\">hier</a> om terug te keren en uw naam in te vullen.<br>");
}
else if ($_POST['content'] == ""){
print("U heeft geen bericht ingevuld, wat vereist is. Klik <a href=\"javascript:history.go(-1)\">hier</a> om terug te keren en uw bericht in te vullen.<br>");
}
else{
$query="UPDATE content SET titel='".($_POST['titel'])."', content='".($_POST['content'])."' WHERE paginaid=1";
$wijzig=mysql_query($query) or die(mysql_error());
print("Pagina-inhoud gewijzigd<br>Klik <a href=\"admin_page.php\">hier</a> om terug te keren naar de admin_page.<br/> Of <a href=\"loguit.php\">hier</a> om uit te loggen");
}
}
// de gegevens uit de database ophalen om in het formulier te tonen
else{
$select = mysql_query("SELECT * FROM content WHERE paginaid=1");
$data = mysql_fetch_array($select);
?>
<form name="data" method="POST" enctype="multipart/form-data" action="wijzig.php?id=1">
<table class="main" cellspacing="0" width="800" hight="300" align="center">
<tr class="light">
<td class="main" width="200">Koptekst*:</td>
<td class="main" width="800"><input type="text" size="30" name="titel" value="<?php print($data['titel']);?>"></td>
</tr>
<tr class="dark">
<td class="main" width="100" valign="top">Pagina inhoud*:</td>
<td class="main" width="800" height="300">
<?php
$oFCKeditor = new FCKeditor('content') ;
$oFCKeditor->BasePath = '/fckeditor/' ;
//$oFCKeditor->CustomConfigurationsPath = '/pad naar mijn eigen_fckconfig.js' ; werkt nog niet nog uitzoeken.
$oFCKeditor->Value = $data['content']; // Hier komt dus de tekst in die geupdate kan worden.
$oFCKeditor->Width = "100%";
$oFCKeditor->Height = 500;
$oFCKeditor->Create() ;?>
</td>
</tr>
<tr class="title">
<td class="main" colspan="2">
<font size="3">* Hier moet altijd een tekst staan.</font>
<input type="submit" value="Voeg toe">
</td>
</tr>
</table>
</form>
<?php
}
?>
</body>
</html>
<?php
}
else{
?>
<html>
<head>
<title>Verboden Toegang eerst inloggen</title>
<link rel="stylesheet" href="/tg.css">
</head>
<body>
<h1>Toegang gewijgerd</h1>
U bent niet gemachtigd om deze pagina te bekijken.</br>
Klik <a href="login.php">hier</a> om in te loggen.
</body>
</html>
<?php
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Mrhocoma
Notice: Undefined index: submit in wijzig.php on line 24
Hoe los ik die op?
Tamara schreef op 28.11.2008 14:13:
if(isset($_POST['submit'])){
ipv
if($_POST['submit']){
ipv
if($_POST['submit']){
Nog beter:
if($_SERVER['request_method'] == 'POST')
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
Iemand nog wat verbeter tips of tips m.b.t. de veiligheid?
Dat gebeurd overigens ook op de webpagina waar de bewerkte tekst / afbeeldingen te zien zijn.
Waar gaat het fout?
het script (zonder opmaak)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
<?php // verbinden met de database
require_once("connect.php");?>
<?php
// hier de fckeditor invoegen
include_once("fckeditor/fckeditor.php") ;
?>
<?php
//wat vliegt de tijd?
if($_SERVER['REQUEST_METHOD'] == 'POST' )
{
$sql = "
UPDATE
content
SET
box_1_titel='".mysql_real_escape_string($_POST['box_1_titel'])."', box_1_inhoud='".mysql_real_escape_string($_POST['box_1_inhoud'])."',box_2_titel='".mysql_real_escape_string($_POST['box_2_titel'])."', box_2_inhoud='".mysql_real_escape_string($_POST['box_2_inhoud'])."'
WHERE
paginaid=2
";
}
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0)
{
echo 'Geen records gewijzigd. <br />Query: '.$sql;
}
else
//alleen dit stukje tonen als het updaten is gelukt
{
echo 'Update was succesvol!';
}
// de (gewijzigde) gegevens uit de database ophalen om in het formulier te tonen
$sql = "
SELECT *
FROM
content
WHERE
paginaid = 2
";
//de gegevens in een array zetten
$resultaat = mysql_query($sql);
$rij = mysql_fetch_array($resultaat);
$page_name = stripslashes($rij['page_name']);
$box_1_titel = stripslashes($rij['box_1_titel']);
$box_1_inhoud = stripslashes($rij['box_1_inhoud']);
$box_2_titel = stripslashes($rij['box_2_titel']);
$box_2_inhoud = stripslashes($rij['box_2_inhoud']);
//kijken of het gelukt is?
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
};
?>
<form name="data" method="POST" enctype="multipart/form-data" action="?actie=wijzig1_boxes_nl&id=2">
<input type="hidden" name="submit" value="1">
Koptekst* / Hier de box_1 titel:</br>
<input type="text" size="30" name="box_1_titel" value="<?php print($box_1_titel);?>"></br>
Inhoud* / Hier de box_1 inhoud typen:
</br>
<?php
$oFCKeditor = new FCKeditor('box_1_inhoud') ;
$oFCKeditor->BasePath = '/fckeditor/' ;
//$oFCKeditor->CustomConfigurationsPath = '/pad naar mijn eigen_fckconfig.js' ; werkt nog niet nog uitzoeken.
$oFCKeditor->Value = $box_1_inhoud; // Hier komt dus de tekst in die geupdate kan worden.
$oFCKeditor->Width = "100%";
$oFCKeditor->Height = 500;
$oFCKeditor->Create() ;?>
</br>
Koptekst* / Hier de box_2 titel:</br>
<input type="text" size="30" name="box_2_titel" value="<?php print($box_2_titel);?>"></br>
Inhoud* / Hier de box_2 inhoud typen:
</br>
<?php
$oFCKeditor = new FCKeditor('box_2_inhoud') ;
$oFCKeditor->BasePath = '/fckeditor/' ;
//$oFCKeditor->CustomConfigurationsPath = '/pad naar mijn eigen_fckconfig.js' ; werkt nog niet nog uitzoeken.
$oFCKeditor->Value = $box_2_inhoud; // Hier komt dus de tekst in die geupdate kan worden.
$oFCKeditor->Width = "100%";
$oFCKeditor->Height = 500;
$oFCKeditor->Create() ;?>
</br>
Klaar? Klick dan hieronder op: <b>voeg toe</b> om de pagina op te slaan!</br></br>
<input title="klick hier om de pagina op te slaan!" type="submit" value="Voeg toe">
</form>
<?php
[/code]
require_once("connect.php");?>
<?php
// hier de fckeditor invoegen
include_once("fckeditor/fckeditor.php") ;
?>
<?php
//wat vliegt de tijd?
if($_SERVER['REQUEST_METHOD'] == 'POST' )
{
$sql = "
UPDATE
content
SET
box_1_titel='".mysql_real_escape_string($_POST['box_1_titel'])."', box_1_inhoud='".mysql_real_escape_string($_POST['box_1_inhoud'])."',box_2_titel='".mysql_real_escape_string($_POST['box_2_titel'])."', box_2_inhoud='".mysql_real_escape_string($_POST['box_2_inhoud'])."'
WHERE
paginaid=2
";
}
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0)
{
echo 'Geen records gewijzigd. <br />Query: '.$sql;
}
else
//alleen dit stukje tonen als het updaten is gelukt
{
echo 'Update was succesvol!';
}
// de (gewijzigde) gegevens uit de database ophalen om in het formulier te tonen
$sql = "
SELECT *
FROM
content
WHERE
paginaid = 2
";
//de gegevens in een array zetten
$resultaat = mysql_query($sql);
$rij = mysql_fetch_array($resultaat);
$page_name = stripslashes($rij['page_name']);
$box_1_titel = stripslashes($rij['box_1_titel']);
$box_1_inhoud = stripslashes($rij['box_1_inhoud']);
$box_2_titel = stripslashes($rij['box_2_titel']);
$box_2_inhoud = stripslashes($rij['box_2_inhoud']);
//kijken of het gelukt is?
if(!$res = mysql_query($sql))
{
trigger_error(mysql_error().'<br />In query: '.$sql);
};
?>
<form name="data" method="POST" enctype="multipart/form-data" action="?actie=wijzig1_boxes_nl&id=2">
<input type="hidden" name="submit" value="1">
Koptekst* / Hier de box_1 titel:</br>
<input type="text" size="30" name="box_1_titel" value="<?php print($box_1_titel);?>"></br>
Inhoud* / Hier de box_1 inhoud typen:
</br>
<?php
$oFCKeditor = new FCKeditor('box_1_inhoud') ;
$oFCKeditor->BasePath = '/fckeditor/' ;
//$oFCKeditor->CustomConfigurationsPath = '/pad naar mijn eigen_fckconfig.js' ; werkt nog niet nog uitzoeken.
$oFCKeditor->Value = $box_1_inhoud; // Hier komt dus de tekst in die geupdate kan worden.
$oFCKeditor->Width = "100%";
$oFCKeditor->Height = 500;
$oFCKeditor->Create() ;?>
</br>
Koptekst* / Hier de box_2 titel:</br>
<input type="text" size="30" name="box_2_titel" value="<?php print($box_2_titel);?>"></br>
Inhoud* / Hier de box_2 inhoud typen:
</br>
<?php
$oFCKeditor = new FCKeditor('box_2_inhoud') ;
$oFCKeditor->BasePath = '/fckeditor/' ;
//$oFCKeditor->CustomConfigurationsPath = '/pad naar mijn eigen_fckconfig.js' ; werkt nog niet nog uitzoeken.
$oFCKeditor->Value = $box_2_inhoud; // Hier komt dus de tekst in die geupdate kan worden.
$oFCKeditor->Width = "100%";
$oFCKeditor->Height = 500;
$oFCKeditor->Create() ;?>
</br>
Klaar? Klick dan hieronder op: <b>voeg toe</b> om de pagina op te slaan!</br></br>
<input title="klick hier om de pagina op te slaan!" type="submit" value="Voeg toe">
</form>
<?php
[/code]
Gewijzigd op 01/01/1970 01:00:00 door mrhocoma
Daar mag je van maken:
if($_SERVER['REQUEST_METHOD'] == 'POST')
En dat is een paar weken geleden ook al gezegd... Jammer dat je niets doet met de hulp die je wordt aangeboden.
is er dan een voordeel bij ?
Het voordeel is dat je dan de enige juiste methode gebruikt om te kijken of er gepost is.
Ik kan in een pagina best $_POST['waarde'] = 'inhoud'; doen, maar dat wil niet zeggen dat er ook echt gepost is. -> Controleren of er een post actie is gedaan doe je op de manier zoals Frank het je voor deed.
maar wie werkt daar nou mee ?
dit heeft niks met 3th party scripts dit heeft temaken maar met je input controleren.
Gewijzigd op 01/01/1970 01:00:00 door RvW Of toch niet
Flip schreef op 17.12.2008 14:49:
Ok dus het is nuttig in de situatie dat je samenwerkt met iemand of 3th party scripts die zich totaal niet aan conventies houden en onlogische dingen doen :)
maar wie werkt daar nou mee ?
maar wie werkt daar nou mee ?
@Flip: Is er een voordeel aan het checken van onjuiste data dan?
Als je wilt weten of je autobanden lek zijn kijk je toch ook naar de band? Niet naar de sporen?
Verder blijft het probleem nog hetzelfde, na een submit van de form worden de gegevens wel in de database gezet en kom ik weer op de zelfde pagina terug, die "zo lijkt het", niet aangepast is maar nog steeds de oude inhoud laat zien. Laad ik de pagina dan vervolgens nogmaals dan staat de juiste (lees aangepaste) inhoud er wel.. Bij het aanroepen van de pagina staat er al zonder dat er iets verzonden is: Update was succesvol! (da's best snel...:)
hoe verder...
Flip schreef op 17.12.2008 13:05:
Dat je script ook werkt met verschillende browsers en verschillende manieren voor het verzenden van een formulier. Er zijn browsers die een enter anders verwerken dan een muisklik op de submit-button. Met een enter wordt de submit-button (waar in bovenstaande code op wordt gecontroleerd) niet meegestuurd. Je kunt dan controleren tot je een ons weegt, het formulier zal nooit worden verwerkt. Rara hoe kan dat...@pgFrank
is er dan een voordeel bij ?
is er dan een voordeel bij ?
of als je $data['content'] vult met $_POST['juiste_index']
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt
Geen records gewijzigd.
Query: SET SESSION sql_mode = 'ANSI,ONLY_FULL_GROUP_BY'
Als ik dan iets wijzig en submit krig ik te zien de update was ok en zie ik dat de gegevens in het formulier ook zijn aangepast.
Ik heb geprobeerd met de editor later te laten of er verschil is maar dat maakt niet uit. Je tweede optie snapte ik niet.
Overigens krijg ik bovenstaande melding niet in het formulier dat ik zelf aan het testen ben. Wellicht door de HTML die er om heen staat?