Berichten posten vs. Magic Quotes
Ik ben helemaal de draad kwijt. Ik ben een tijdje geleden begonnen met het maken van een cms(je). Kan nu wat leuke standaard dingetjes doen, waaronder berichten posten. Hier de code, daaronder de vraag:
Form:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<form class="post" method="post" action="includes/add_msg.php">
<p>
<label for="titel">Titel:</label>
<input id="titel" name="titel" type="text" />
</p>
<p>
<label for="bericht">Bericht:</label>
<textarea name="bericht" cols="50" rows="5" wrap="virtual"></textarea>
</p>
<p>
<input type="submit" value="Publiceren" />
<input type="reset" name="Submit2" value="Wis velden" />
</p>
</form>
<p>
<label for="titel">Titel:</label>
<input id="titel" name="titel" type="text" />
</p>
<p>
<label for="bericht">Bericht:</label>
<textarea name="bericht" cols="50" rows="5" wrap="virtual"></textarea>
</p>
<p>
<input type="submit" value="Publiceren" />
<input type="reset" name="Submit2" value="Wis velden" />
</p>
</form>
PHP verwerk script:
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
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
<?php
require 'authenticatie.php';
$corefuncs = 'corefuncs.php';
if (file_exists($corefuncs) && is_readable($corefuncs)){
include($corefuncs);
}
if (function_exists('nukeMagicQuotes')){
nukeMagicQuotes();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Publiceren</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="Stylesheet" href="../style.css" type="text/css" />
</head>
<body>
<div id="dashwrapper">
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// verbinding maken met de database
include('db_config.php');
// ingevulde waardes 'opvangen' en tijdelijk opslaan
$titel=$_POST['titel'];
$bericht=$_POST['bericht'];
// datum en tijd in een variable zetten
$datumtijd=date("y-m-d H:i:s");
// gegevens wegschrijven naar de database 'forum'
$sqlcode="INSERT INTO berichten (titel, bericht, datumtijd)VALUES('$titel', '$bericht', '$datumtijd')";
$resultaat=mysql_query($sqlcode)or die(mysql_error());
if($resultaat)
{
?>
<div>
<p>Toevoegen Gelukt!!</p><br />
<a href="../dashboard.php">Terug naar Dashboard</a>
</div>
<?php
}
else
{
?>
<div>
<p>Toevoegen Mislukt!</p><br />
<a href="../dashboard.php">Terug naar Dashboard</a>
</div>
<?php
}
mysql_close();
}
?>
</div>
</body>
</html>
require 'authenticatie.php';
$corefuncs = 'corefuncs.php';
if (file_exists($corefuncs) && is_readable($corefuncs)){
include($corefuncs);
}
if (function_exists('nukeMagicQuotes')){
nukeMagicQuotes();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Publiceren</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="Stylesheet" href="../style.css" type="text/css" />
</head>
<body>
<div id="dashwrapper">
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// verbinding maken met de database
include('db_config.php');
// ingevulde waardes 'opvangen' en tijdelijk opslaan
$titel=$_POST['titel'];
$bericht=$_POST['bericht'];
// datum en tijd in een variable zetten
$datumtijd=date("y-m-d H:i:s");
// gegevens wegschrijven naar de database 'forum'
$sqlcode="INSERT INTO berichten (titel, bericht, datumtijd)VALUES('$titel', '$bericht', '$datumtijd')";
$resultaat=mysql_query($sqlcode)or die(mysql_error());
if($resultaat)
{
?>
<div>
<p>Toevoegen Gelukt!!</p><br />
<a href="../dashboard.php">Terug naar Dashboard</a>
</div>
<?php
}
else
{
?>
<div>
<p>Toevoegen Mislukt!</p><br />
<a href="../dashboard.php">Terug naar Dashboard</a>
</div>
<?php
}
mysql_close();
}
?>
</div>
</body>
</html>
Het probleem hiermee is dat de magic quotes dus weggehaald zijn, omdat ik overal lees dat dit aangeraden wordt "enzo". Ik heb ze dus weggehaald, maar als ik nu quotes invoer krijg ik natuurlijk een foutmelding. Allereerst vraag ik me af wat ik nu moet doen om dit te voorkomen? En welke manier daarvoor dus de juiste is?
Ten tweede, heb ik een functie gebruikt om de magic quotes weg te halen genaamd nukeMagicQuotes (uit mijn php leerboek). Maar kan ik dit niet beter in een php.ini aanpassen?
Bedankt!
Quote:
Posten is niet vs. Magic Quotes... Magic Quotes is een functionaliteit van PHP waar de meeste mensen niet blij mee zijn. That's it.posten vs. Magic Quotes
Quote:
Wat voor foutmeldingen?maar als ik nu quotes invoer krijg ik natuurlijk een foutmelding.
Controleer je overigens wel voordat je die magic-quotes weghaalt, of überhaupt dat systeem aan staat? ( http://nl2.php.net/get_magic_quotes_gpc )
Dit is de foutmelding die ik krijg:
Code (php)
1
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'sdf'sdf'sdf"dfsdf', '09-09-23 13:11:56')' at line 1
Ik heb gecontroleerd of de magic-quotes aanstaan ja, en die staat aan. In mijn boek staat overigens dat je de functie nukeMagicQuotes altijd kunt gebruiken, of de magic quotes nou aan of uit staan op de server. Om te voorkomen dat je problemen krijgt als de server administrator dit verandert.
Zet er mysql_real_escape_string() omheen.
Code (php)
1
2
3
4
2
3
4
<?php
$titel=mysql_real_escape_string($_POST['titel']);
$bericht=mysql_real_escape_string($_POST['bericht']);
?>
$titel=mysql_real_escape_string($_POST['titel']);
$bericht=mysql_real_escape_string($_POST['bericht']);
?>
Zo dus. Het werkt nu inderdaad, bedankt! Alleen snap ik het dubbele werk nog niet hélemaal, misschien dat iemand dat nog kan uitleggen.
Overigens, moet ik bij al mijn SQL queries nu de mysql_real_escape_string() functie gebruiken? Dus DELETE, INSERT, UPDATE, datsoort dingen? En moet ik overal de functie nukeMagicQuotes uitzetten of zijn er momenten waarop je het best kunt gebruiken?
Gewijzigd op 01/01/1970 01:00:00 door Julien