Hoe dit te plaatsen in php
Dit is een stukje van een php forum.
Het moet zo worden:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
include("connect.php");
include("functions.php");
echo "<a href=\"topics.php\">Topic overzicht</a><p>";
$sql = "SELECT id,titel,bericht,datum,naam FROM topics WHERE id = '" . $_GET['id'] . "'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$row['bericht'] = nl2br($row['bericht']);
echo "<tr class="forumkop">
<td width="1%" height="21"></td>
<td width="47%">" . $row['titel'] . "</td>
<td width="27%">Door " . $row['naam'] . "</td>
<td width="15%">" . $row['datum'] . "</td>
<td width="10%"> </td>
</tr>";
?>
include("connect.php");
include("functions.php");
echo "<a href=\"topics.php\">Topic overzicht</a><p>";
$sql = "SELECT id,titel,bericht,datum,naam FROM topics WHERE id = '" . $_GET['id'] . "'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$row['bericht'] = nl2br($row['bericht']);
echo "<tr class="forumkop">
<td width="1%" height="21"></td>
<td width="47%">" . $row['titel'] . "</td>
<td width="27%">Door " . $row['naam'] . "</td>
<td width="15%">" . $row['datum'] . "</td>
<td width="10%"> </td>
</tr>";
?>
Alleen op dit:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<tr class="forumkop">
<td width="1%" height="21"></td>
<td width="47%">" . $row['titel'] . "</td>
<td width="27%">Door " . $row['naam'] . "</td>
<td width="15%">" . $row['datum'] . "</td>
<td width="10%"> </td>
</tr>
<td width="1%" height="21"></td>
<td width="47%">" . $row['titel'] . "</td>
<td width="27%">Door " . $row['naam'] . "</td>
<td width="15%">" . $row['datum'] . "</td>
<td width="10%"> </td>
</tr>
Geeft hij een error.
Hoe moet ik dit anders maken?
Mvg, Marvin
Gewijzigd op 04/02/2011 21:31:11 door Marvin Radioo
- Aar - op 04/02/2011 21:31:40:
Is je error dan zo geheim dat je die niet wilt posten?
hint: escaping, " in een "-echo gaat niet werken.
hint: escaping, " in een "-echo gaat niet werken.
Ehm.. Daarom vraag ik. hoe doe ik dit anders?
Nou, je escaped je width paramaters in je HTML. Dus daar gaat PHP sowieso een notice voor geven. Om karakters in PHP te escapen moet je een slash ( / ) gebruiken. Daarnaast gebruik je de Modulo (%) dus ook dat is niet gunstig. Dat zijn sowieso 2 problemen.
Hoe bedoel je dat met die / ?
mysql_real_escape_string voor mysqlinjection toegevoegd
en enkele quotes binnen de echo gebruikt dit voorkomt problemen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
include "connect.php";
include "functions.php";
echo "<a href='topics.php'>Topic overzicht</a><p>";
$sql = "SELECT id, titel,bericht,datum,naam FROM topics WHERE id = '". mysql_real_escape_string($_GET['id']). "'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$row['bericht'] = nl2br($row['bericht']);
echo "<tr class='forumkop'>
<td width='1%' height='21'></td>
<td width='47%'>" . $row['titel'] . "</td>
<td width='27%'>Door " . $row['naam'] . "</td>
<td width='15%'>" . $row['datum'] . "</td>
<td width='10%'> </td>
</tr>";
?>
include "connect.php";
include "functions.php";
echo "<a href='topics.php'>Topic overzicht</a><p>";
$sql = "SELECT id, titel,bericht,datum,naam FROM topics WHERE id = '". mysql_real_escape_string($_GET['id']). "'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$row['bericht'] = nl2br($row['bericht']);
echo "<tr class='forumkop'>
<td width='1%' height='21'></td>
<td width='47%'>" . $row['titel'] . "</td>
<td width='27%'>Door " . $row['naam'] . "</td>
<td width='15%'>" . $row['datum'] . "</td>
<td width='10%'> </td>
</tr>";
?>
Gewijzigd op 04/02/2011 22:08:09 door Jordi Kroon
Merijn Venema op 04/02/2011 21:35:16:
Nou, je escaped je width paramaters in je HTML. Dus daar gaat PHP sowieso een notice voor geven. Om karakters in PHP te escapen moet je een slash ( / ) gebruiken. Daarnaast gebruik je de Modulo (%) dus ook dat is niet gunstig. Dat zijn sowieso 2 problemen.
Escapen gaat met de andere slash: \
en je opent <p> maar die word nooit afgesloten
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
include 'connect.php';
include 'functions.php';
echo '<a href="topics.php">Topic overzicht</a><p>';
$sql = "SELECT id, titel,bericht,datum,naam FROM topics WHERE id = '". mysql_real_escape_string($_GET['id']). "'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$row['bericht'] = nl2br($row['bericht']);
echo '<tr class="orumkop">
<td width="%"height="1"/td>
<td width="7%">'. $row['titel'] . '<td>
<td width="7%">Door '. $row['naam'] . '/td>
<td width="5%">'. $row['datum'] . '<td>
<td width="10%"> </td>
</tr>';
?>
include 'connect.php';
include 'functions.php';
echo '<a href="topics.php">Topic overzicht</a><p>';
$sql = "SELECT id, titel,bericht,datum,naam FROM topics WHERE id = '". mysql_real_escape_string($_GET['id']). "'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$row['bericht'] = nl2br($row['bericht']);
echo '<tr class="orumkop">
<td width="%"height="1"/td>
<td width="7%">'. $row['titel'] . '<td>
<td width="7%">Door '. $row['naam'] . '/td>
<td width="5%">'. $row['datum'] . '<td>
<td width="10%"> </td>
</tr>';
?>
Want alles wat tussen '........' wordt niet geevalueerd en alles tussen de "..." wel. En op deze manier hoef je uiteraard ook niet te escapen.
http://php.net/manual/en/language.types.string.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
include "connect.php";
include "functions.php";
echo "<a href='topics.php'>Topic overzicht</a><p>";
$sql = "SELECT id, titel,bericht,datum,naam FROM topics WHERE id = '". mysql_real_escape_string($_GET['id']). "'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$row['bericht'] = nl2br($row['bericht']);
echo "<tr class='forumkop'>
<td width='1%'height='1'/td>
<td width='47%'>". $row['titel'] . "<td>
<td width='27%'>Door ". $row['naam'] . "/td>
<td width='15%'>". $row['datum'] . "<td>
<td width='10%'> </td>
</tr>";
?>
include "connect.php";
include "functions.php";
echo "<a href='topics.php'>Topic overzicht</a><p>";
$sql = "SELECT id, titel,bericht,datum,naam FROM topics WHERE id = '". mysql_real_escape_string($_GET['id']). "'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$row['bericht'] = nl2br($row['bericht']);
echo "<tr class='forumkop'>
<td width='1%'height='1'/td>
<td width='47%'>". $row['titel'] . "<td>
<td width='27%'>Door ". $row['naam'] . "/td>
<td width='15%'>". $row['datum'] . "<td>
<td width='10%'> </td>
</tr>";
?>
Noppes Homeland op 04/02/2011 22:41:51:
Escapen is helemaal niet nodig, alleen zal het wel handiger zijn als je tegenovergesteld quote dan dat je nu gedaan hebt.
Want alles wat tussen '........' wordt niet geevalueerd en alles tussen de "..." wel. En op deze manier hoef je uiteraard ook niet te escapen.
http://php.net/manual/en/language.types.string.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
include 'connect.php';
include 'functions.php';
echo '<a href="topics.php">Topic overzicht</a><p>';
$sql = "SELECT id, titel,bericht,datum,naam FROM topics WHERE id = '". mysql_real_escape_string($_GET['id']). "'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$row['bericht'] = nl2br($row['bericht']);
echo '<tr class="orumkop">
<td width="%"height="1"/td>
<td width="7%">'. $row['titel'] . '<td>
<td width="7%">Door '. $row['naam'] . '/td>
<td width="5%">'. $row['datum'] . '<td>
<td width="10%"> </td>
</tr>';
?>
include 'connect.php';
include 'functions.php';
echo '<a href="topics.php">Topic overzicht</a><p>';
$sql = "SELECT id, titel,bericht,datum,naam FROM topics WHERE id = '". mysql_real_escape_string($_GET['id']). "'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);
$row['bericht'] = nl2br($row['bericht']);
echo '<tr class="orumkop">
<td width="%"height="1"/td>
<td width="7%">'. $row['titel'] . '<td>
<td width="7%">Door '. $row['naam'] . '/td>
<td width="5%">'. $row['datum'] . '<td>
<td width="10%"> </td>
</tr>';
?>
Want alles wat tussen '........' wordt niet geevalueerd en alles tussen de "..." wel. En op deze manier hoef je uiteraard ook niet te escapen.
http://php.net/manual/en/language.types.string.php
Parse error: parse error, expecting `','' or `';'' in C:\Abyss Web Server\htdocs\replys.php on line 31
Je moet connect.php en functions.php erbij optellen
Toevoeging op 05/02/2011 13:11:56:
Maak van
Code (php)
1
2
3
2
3
<?php
$sql = "SELECT id, titel, bericht, datum, naam FROM topics WHERE id = '". mysql_real_escape_string($_GET['id']). "'";
?>
$sql = "SELECT id, titel, bericht, datum, naam FROM topics WHERE id = '". mysql_real_escape_string($_GET['id']). "'";
?>
Dit:
Code (php)
1
2
3
2
3
<?php
$sql = "SELECT id, titel, bericht, datum, naam FROM topics WHERE id = '". mysql_real_escape_string($_GET['id'])"'";
?>
$sql = "SELECT id, titel, bericht, datum, naam FROM topics WHERE id = '". mysql_real_escape_string($_GET['id'])"'";
?>
Gewijzigd op 05/02/2011 13:10:19 door Jordi Kroon
@Jordi: Ga jij nou van een juiste regel een regel met een fout maken? In de tweede regel mist een punt.
echo $row['bericht'] . "<p>";
echo "<b>Reacties:<br></b>";
Regel 31 is de bovenste
Gr