toevoeg script voegt niets toe
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Toevoegen</title>
</head>
<body>
<form method="post">
<table>
<tr>
<td>Ambtenaarnummer:</td>
<td><input type="text" name="ambtenaarnummer" /></td>
</tr>
<tr>
<td>Achternaam:</td>
<td><input type="text" name="achternaam" /></td>
</tr>
<tr>
<td>Tussenvoegsel</td>
<td><input type="text" name="tussenvoegsel" /></td>
</tr>
<tr>
<td>voorletters</td>
<td><input type="text" name="voorletters" /></td>
</tr>
<tr>
<td>Voornamen:</td>
<td><input type="text" name="voornamen" /></td>
</tr>
<tr>
<td>Groep:</td>
<td><input type="text" name="groep" /></td>
</tr>
<tr>
<td>Straat:</td>
<td><input type="text" name="straat" /></td>
</tr>
<tr>
<td>Postcode:</td>
<td><input type="text" name="postcode" /></td>
</tr>
<tr>
<td>Plaats:</td>
<td><input type="text" name="plaats" /></td>
</tr>
<tr>
<td>Telefoon:</td>
<td><input type="text" name="telefoon" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="add" /></td>
</tr>
</table>
<?php
if (isset($_POST['submit']))
{
include 'db.php';
$title=$_POST['ambtenaarnummer'] ;
$author= $_POST['achternaam'] ;
$name=$_POST['tussenvoegsel'] ;
$copy=$_POST['voorletters'] ;
$title=$_POST['voornamen'] ;
$author= $_POST['groep'] ;
$name=$_POST['staat'] ;
$copy=$_POST['postcode'] ;
$name=$_POST['plaats'] ;
$copy=$_POST['telefoon'] ;
mysql_query("INSERT INTO `controleurs`(ambtenaarnummer,achternaam,tussenvoegsel,voorletters,voornamen,groep,straat,postcode,plaats,telefoon)
VALUES ('$ambtenaarnummer','$achternaam','$tussenvoegsel',$voorletters','$voornamen','$groep',$straat','$postcode','$plaats','$telefoon')");
}
?>
</form>
<table border="1">
<?php
include("db.php");
$result=mysql_query("SELECT * FROM controleurs");
while($test = mysql_fetch_array($result))
{
$id = $test['ID'];
echo "<tr align='center'>";
echo"<td><font color='black'>" .$test['ambtenaarnummer']."</font></td>";
echo"<td><font color='black'>" .$test['achternaam']."</font></td>";
echo"<td><font color='black'>". $test['tussenvoegsel']. "</font></td>";
echo"<td><font color='black'>". $test['voorletters']. "</font></td>";
echo"<td><font color='black'>". $test['voornamen']. "</font></td>";
echo"<td><font color='black'>" .$test['groep']."</font></td>";
echo"<td><font color='black'>" .$test['straat']."</font></td>";
echo"<td><font color='black'>". $test['postcode']. "</font></td>";
echo"<td><font color='black'>". $test['plaats']. "</font></td>";
echo"<td><font color='black'>". $test['telefoon']. "</font></td>";
echo"<td> <a href ='view.php?BookID=$id'>Edit</a>";
echo"<td> <a href ='del.php?BookID=$id'><center>Delete</center></a>";
echo "</tr>";
}
mysql_close($conn);
?>
</table>
</body>
</html>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Toevoegen</title>
</head>
<body>
<form method="post">
<table>
<tr>
<td>Ambtenaarnummer:</td>
<td><input type="text" name="ambtenaarnummer" /></td>
</tr>
<tr>
<td>Achternaam:</td>
<td><input type="text" name="achternaam" /></td>
</tr>
<tr>
<td>Tussenvoegsel</td>
<td><input type="text" name="tussenvoegsel" /></td>
</tr>
<tr>
<td>voorletters</td>
<td><input type="text" name="voorletters" /></td>
</tr>
<tr>
<td>Voornamen:</td>
<td><input type="text" name="voornamen" /></td>
</tr>
<tr>
<td>Groep:</td>
<td><input type="text" name="groep" /></td>
</tr>
<tr>
<td>Straat:</td>
<td><input type="text" name="straat" /></td>
</tr>
<tr>
<td>Postcode:</td>
<td><input type="text" name="postcode" /></td>
</tr>
<tr>
<td>Plaats:</td>
<td><input type="text" name="plaats" /></td>
</tr>
<tr>
<td>Telefoon:</td>
<td><input type="text" name="telefoon" /></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="submit" value="add" /></td>
</tr>
</table>
<?php
if (isset($_POST['submit']))
{
include 'db.php';
$title=$_POST['ambtenaarnummer'] ;
$author= $_POST['achternaam'] ;
$name=$_POST['tussenvoegsel'] ;
$copy=$_POST['voorletters'] ;
$title=$_POST['voornamen'] ;
$author= $_POST['groep'] ;
$name=$_POST['staat'] ;
$copy=$_POST['postcode'] ;
$name=$_POST['plaats'] ;
$copy=$_POST['telefoon'] ;
mysql_query("INSERT INTO `controleurs`(ambtenaarnummer,achternaam,tussenvoegsel,voorletters,voornamen,groep,straat,postcode,plaats,telefoon)
VALUES ('$ambtenaarnummer','$achternaam','$tussenvoegsel',$voorletters','$voornamen','$groep',$straat','$postcode','$plaats','$telefoon')");
}
?>
</form>
<table border="1">
<?php
include("db.php");
$result=mysql_query("SELECT * FROM controleurs");
while($test = mysql_fetch_array($result))
{
$id = $test['ID'];
echo "<tr align='center'>";
echo"<td><font color='black'>" .$test['ambtenaarnummer']."</font></td>";
echo"<td><font color='black'>" .$test['achternaam']."</font></td>";
echo"<td><font color='black'>". $test['tussenvoegsel']. "</font></td>";
echo"<td><font color='black'>". $test['voorletters']. "</font></td>";
echo"<td><font color='black'>". $test['voornamen']. "</font></td>";
echo"<td><font color='black'>" .$test['groep']."</font></td>";
echo"<td><font color='black'>" .$test['straat']."</font></td>";
echo"<td><font color='black'>". $test['postcode']. "</font></td>";
echo"<td><font color='black'>". $test['plaats']. "</font></td>";
echo"<td><font color='black'>". $test['telefoon']. "</font></td>";
echo"<td> <a href ='view.php?BookID=$id'>Edit</a>";
echo"<td> <a href ='del.php?BookID=$id'><center>Delete</center></a>";
echo "</tr>";
}
mysql_close($conn);
?>
</table>
</body>
</html>
Gewijzigd op 19/09/2013 08:30:14 door Arjan van Rossen
Bij je query: kijk eens wat die teruggeeft.
Dus zoiets:
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$res = mysql_query("INSERT INTO `controleurs`(ambtenaarnummer,achternaam,tussenvoegsel,voorletters,voornamen,groep,straat,postcode,plaats,telefoon)
VALUES ('$ambtenaarnummer','$achternaam','$tussenvoegsel',$voorletters','$voornamen','$groep',$straat','$postcode','$plaats','$telefoon')");
var_dump($res);
?>
$res = mysql_query("INSERT INTO `controleurs`(ambtenaarnummer,achternaam,tussenvoegsel,voorletters,voornamen,groep,straat,postcode,plaats,telefoon)
VALUES ('$ambtenaarnummer','$achternaam','$tussenvoegsel',$voorletters','$voornamen','$groep',$straat','$postcode','$plaats','$telefoon')");
var_dump($res);
?>
Gewijzigd op 19/09/2013 15:04:59 door Eddy E
Lees dit eens: http://www.phphulp.nl/php/tutorial/data-verwerking/foutafhandeling-query-sql/735/
Als ik wat tips mag geven:
- Variabelen kopiëren (lijn 60 t/m 69) is totaal overbodig. je $_POST variabelen werken ook in je query.
- Controlleer op je formulier is verstuurd met: if($_SERVER['REQUEST_METHOD']=="POST") { i.p.v. een isset()
- Beveilig je $_POST variabelen in je query met mysql_real_escape_string() tegen SQL-injection (hacking)
- Variabelen horen buiten quotes (in je query zie ik dat)
- Backticks (` <<-- die komma-achtige tekens ) zijn onnodig als je correct SQL wilt schrijven.
Gewijzigd op 19/09/2013 09:18:37 door - Ariën -
En de fout is dat je een quote mist voor $voorletters en voor $straat in je query. Als je nu al de foutafhandeling Aar noemt had gehad dan had je je niet blind hoeven te staren, maar had je gewoon de foutmelding kunnen lezen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?PHP
$title=$_POST['ambtenaarnummer'] ;
$author= $_POST['achternaam'] ;
$name=$_POST['tussenvoegsel'] ;
$copy=$_POST['voorletters'] ;
$title=$_POST['voornamen'] ;
$author= $_POST['groep'] ;
$name=$_POST['staat'] ;
$copy=$_POST['postcode'] ;
$name=$_POST['plaats'] ;
$copy=$_POST['telefoon'] ;
?>
$title=$_POST['ambtenaarnummer'] ;
$author= $_POST['achternaam'] ;
$name=$_POST['tussenvoegsel'] ;
$copy=$_POST['voorletters'] ;
$title=$_POST['voornamen'] ;
$author= $_POST['groep'] ;
$name=$_POST['staat'] ;
$copy=$_POST['postcode'] ;
$name=$_POST['plaats'] ;
$copy=$_POST['telefoon'] ;
?>
Nu op naar edit en delete en zoeken
Toevoeging op 19/09/2013 13:27:07:
Ik ben bezig met het script te proberen om te verwijderen en ik krijg hetzelfde probleem als vorige keer dat ik een poging deed. Ik krijg een foutmelding, namelijk
Warning: Cannot modify header information - headers already sent by (output started at /home/schoolme/public_html/ret/db.php:10) in /home/schoolme/public_html/ret/del.php on line 11
Maar hij verwijderd wel de data uit de database. Ik kon toen al nergens op internet vinden hoe ik deze melding kan oplossen.. wellicht kunnen jullie dat vertellen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
include("db.php");
$id =$_REQUEST['ID'];
// sending query
mysql_query("DELETE FROM controleurs WHERE ID = '$id'")
or die(mysql_error());
header("Location: index.php");
?>
# errors weergeven
ini_set('display_errors',1); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
include("db.php");
$id =$_REQUEST['ID'];
// sending query
mysql_query("DELETE FROM controleurs WHERE ID = '$id'")
or die(mysql_error());
header("Location: index.php");
?>
Code (php)
1
Warning: Cannot modify header information - headers already sent by (output started at /home/schoolme/public_html/ret/db.php:10) in /home/schoolme/public_html/ret/del.php on line 11
komt van de functie .
Je kunt headers alleen versturen zolang er nog geen output verstuurd is naar de browser. Onder output valt onder andere alles wat je echo't en ook tekst, html of tekens die buiten de php tags staan.
Dus eerst headers sturen en daarna pas output genereren. (wat overigens bij een redirect geen zin heeft)
Gewijzigd op 19/09/2013 14:34:12 door Frank Nietbelangrijk
Arjan van Rossen op 19/09/2013 10:31:36:
Warning: Cannot modify header information - headers already sent by (output started at /home/schoolme/public_html/ret/db.php:10) in /home/schoolme/public_html/ret/del.php on line 11
Maar hij verwijderd wel de data uit de database. Ik kon toen al nergens op internet vinden hoe ik deze melding kan oplossen.. wellicht kunnen jullie dat vertellen?
Maar hij verwijderd wel de data uit de database. Ik kon toen al nergens op internet vinden hoe ik deze melding kan oplossen.. wellicht kunnen jullie dat vertellen?
Werkelijk? Je kan er niets over vinden? Dan heb je niet erg lang gezocht. Zelfs hier op het forum komt deze fout letterlijk dagelijks langs. En als je het even rechtsboven in de zoekbalk invoert krijg je al genoeg topics waarin elke keer weer hetzelfde verhaal wordt afgestoken:
http://www.phphulp.nl/zoeken/headers+already+sent/
Ik was even benieuwd, Arjan, of je mijn tips had gelezen, want ik zie zo maar weer een paar fouten opduiken, waaronder de gevreesde SQL-injection.
Erwin H op 19/09/2013 14:39:38:
Werkelijk? Je kan er niets over vinden? Dan heb je niet erg lang gezocht. Zelfs hier op het forum komt deze fout letterlijk dagelijks langs. En als je het even rechtsboven in de zoekbalk invoert krijg je al genoeg topics waarin elke keer weer hetzelfde verhaal wordt afgestoken:
http://www.phphulp.nl/zoeken/headers+already+sent/
Arjan van Rossen op 19/09/2013 10:31:36:
Warning: Cannot modify header information - headers already sent by (output started at /home/schoolme/public_html/ret/db.php:10) in /home/schoolme/public_html/ret/del.php on line 11
Maar hij verwijderd wel de data uit de database. Ik kon toen al nergens op internet vinden hoe ik deze melding kan oplossen.. wellicht kunnen jullie dat vertellen?
Maar hij verwijderd wel de data uit de database. Ik kon toen al nergens op internet vinden hoe ik deze melding kan oplossen.. wellicht kunnen jullie dat vertellen?
Werkelijk? Je kan er niets over vinden? Dan heb je niet erg lang gezocht. Zelfs hier op het forum komt deze fout letterlijk dagelijks langs. En als je het even rechtsboven in de zoekbalk invoert krijg je al genoeg topics waarin elke keer weer hetzelfde verhaal wordt afgestoken:
http://www.phphulp.nl/zoeken/headers+already+sent/
Deze heb ik inmiddels opgelost. Het ging om
db.php:10
Daar stond op regel 10 de ?> tag en daarna 2 lege regels. Die heb ik verwijderd en dat bleek voldoende.. De andere fout oplossen is nog niet gelukt
Pas gewoon goede foutafhandeling toe, en beveilig je $_POST, $_GET en $_COOKIE variabelen als je deze in je query gebruikt. $_REQUEST is een afrader, gebruik gewoon $_POST of $_GET.
- Aar - op 19/09/2013 15:19:00:
Ik was even benieuwd, Arjan, of je mijn tips had gelezen, want ik zie zo maar weer een paar fouten opduiken, waaronder de gevreesde SQL-injection.
Uiteraard wel gelezen maar nog niet allemaal begrepen. Opzich ben ik niet bang voor een SQL injection omdat het geen publiek toegankelijkj gebeuren is of zie ik dat verkeerd?
Arjan van Rossen op 19/09/2013 16:48:05:
Uiteraard wel gelezen maar nog niet allemaal begrepen. Opzich ben ik niet bang voor een SQL injection omdat het geen publiek toegankelijk gebeuren is of zie ik dat verkeerd?
- Aar - op 19/09/2013 15:19:00:
Ik was even benieuwd, Arjan, of je mijn tips had gelezen, want ik zie zo maar weer een paar fouten opduiken, waaronder de gevreesde SQL-injection.
Uiteraard wel gelezen maar nog niet allemaal begrepen. Opzich ben ik niet bang voor een SQL injection omdat het geen publiek toegankelijk gebeuren is of zie ik dat verkeerd?
En als iemand er wel toegang tot heeft om één of andere reden?
Daarom is het de oplossing om dit gewoon consequent toe te voegen en bij elke query die je schrijft er stil bij te staan.
Arjan van Rossen op 19/09/2013 16:48:05:
Opzich ben ik niet bang voor een SQL injection omdat het geen publiek toegankelijkj gebeuren is of zie ik dat verkeerd?
Je bedoelt dat dit script echt niet op het internet komt; maar enkel op jouw locale PC (bv. xampp geïnstalleerd op jouw pc) (of eventueel in een LAN)?
Wel ja, dat helpt.
-----
Maar dan nog, is dit een slechte redenering.
Je moet user data ALTIJD escapen (of casten naar een numerieke waarde).
Dat helpt niet enkel tegen hackers; het helpt ook tegen speciale karakters.
Een voorbeeld: het woord foto's. (dus een doodgewoon woord, dat mensen zouden kunnen gebruiken in een zin)
Kijk eens wat er gebeurt.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$user = 'Jef';
$message = "De foto's zijn mooi";
$sql = "INSERT INTO shoutbox (user, message) VALUES ('$user', '$message')";
echo $sql;
?>
$user = 'Jef';
$message = "De foto's zijn mooi";
$sql = "INSERT INTO shoutbox (user, message) VALUES ('$user', '$message')";
echo $sql;
?>
Je ziet dat dit een SQL syntax error geeft.
---
Je moet echt begrijpen wat SQL injection is; hoe het werkt; en wat je er tegen doet.
Anders ben je een gevaar voor je server.
Gewijzigd op 19/09/2013 17:04:11 door Kris Peeters