Functies voor speciale tekens toepassen
Ik dacht te weten welke functies ik daar voor nodig had, maar ik zie nu steeds meer ook andere functies die je daar voor zou kunnen gebruiken. Oftewel: Ik zie door de bomen het bos niet meer.
Ik heb het dus over dit soort functies:
htmlentities
htmlspecialchars
nl2br
ED -> Zijn er nog meer?
Mijn vraag is dus:
Welke functies en op welke plek moet ik ze gebruiken?
Hier even de structuur van mijn pagina's: (zodat je evt. kan vertellen welke functie(s) bij welke pagina)
Code (php)
1
2
3
4
5
2
3
4
5
+ add.php //Voert data in de db
+ view.php //Geeft een overzocht van alle data
+ details.php //Geeft een overzicht van een specifiek ID
+ delete.php //Verwidjerd de data uit de db
+ edit.php //wijzigd de data uit de db
+ view.php //Geeft een overzocht van alle data
+ details.php //Geeft een overzicht van een specifiek ID
+ delete.php //Verwidjerd de data uit de db
+ edit.php //wijzigd de data uit de db
Gewijzigd op 01/01/1970 01:00:00 door Raymond ---
Oftewel als je een textarea met een enter erin geeft zet hij daar vanzelf een <br> in...
De rest weet ik zo ook niet :P
Maar daarvoor php.net:
http://nl2.php.net/manual/nl/function.htmlentities.php
http://nl2.php.net/manual/nl/function.htmlspecialchars.php
http://nl2.php.net/manual/nl/function.nl2br.php
Bierens schreef op 27.12.2006 11:52:
nl2br: Zet nl(New Line) om naar <br>
Oftewel als je een textarea met een enter erin geeft zet hij daar vanzelf een <br> in...
De rest weet ik zo ook niet :P
Maar daarvoor php.net:
http://nl2.php.net/manual/nl/function.htmlentities.php
http://nl2.php.net/manual/nl/function.htmlspecialchars.php
http://nl2.php.net/manual/nl/function.nl2br.php
Oftewel als je een textarea met een enter erin geeft zet hij daar vanzelf een <br> in...
De rest weet ik zo ook niet :P
Maar daarvoor php.net:
http://nl2.php.net/manual/nl/function.htmlentities.php
http://nl2.php.net/manual/nl/function.htmlspecialchars.php
http://nl2.php.net/manual/nl/function.nl2br.php
Ik denk dat je mij niet helemaal begrijpt. Ik had die 3 als voorbeeld gegeven.
mijn vraag was dus: of er nog meer zijn, en waar ik die 3 + evt. andere moet toepassen.
Gewijzigd op 01/01/1970 01:00:00 door Raymond ---
Bij het opslaan moeten bepaalde tekens natuurlijk wel geëscapet worden. Gebruik daarvoor mysql_real_escape_string.
Bij het tonen van gegevens kan het zijn dat je sommige tekens even om moet zetten. Dan gebruik je htmlentities.
Verwacht je regeleindes te zien, maar zie je die niet, gebruik dan nl2br.
nl2br moet dus bij het tonen, niet bij de invoer?
Gewijzigd op 01/01/1970 01:00:00 door Raymond ---
Ik heb dus:
mysql_real_escape_string($_POST['naam']);
Werkt prima, maar als ik in het veld naam "> invoer dat gaat het helemaal mis. Hoe kan ik dat dus oplossen?
Het zo dan worden:
Daarom moet je op een aantal zaken letten:
Bij queries: Escapen van waarden; de single quotes en slashes. Kan m.b.v. de functie mysql_real_escape_string().
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
// Use this function to ensure user input is save to use in SQL statements.
function escapeSql($string)
{
$string = str_replace("\\", "\\\\", $string);
$string = str_replace("'", "\'", $string);
return $string;
}
function escapeSql($string)
{
$string = str_replace("\\", "\\\\", $string);
$string = str_replace("'", "\'", $string);
return $string;
}
Bij html: Als het veld niet mag mengen met je HTML, moet je i.i.g. de html-chars escapen (quote, kleiner-dan, groter-dan en ampersand).
Kan met htmlentities(), maar die parsed ook andere karakters. Dat laatste kan op sommige browsers problemen geven als je bijv. data laad als waarde van een textarea, textfield, select e.d.
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
// Escape HTML characters from a string
function escapeHtml($string, $ascii_save = false)
{
if($ascii_save)
{
$string = htmlentities($string);
// Catch not converted characters.
$string = str_replace(chr(128), "€", $string);
$string = str_replace(chr(153), "™", $string);
// Catch all other not converted characters.
for($i = 128; $i < 160; $i++)
{
$string = str_replace(chr($i), "&#" . $i . ";", $string);
}
}
else
{
$string = str_replace("&", "&", $string);
$string = str_replace("<", "<", $string);
$string = str_replace(">", ">", $string);
$string = str_replace("\"", """, $string);
}
return $string;
}
function escapeHtml($string, $ascii_save = false)
{
if($ascii_save)
{
$string = htmlentities($string);
// Catch not converted characters.
$string = str_replace(chr(128), "€", $string);
$string = str_replace(chr(153), "™", $string);
// Catch all other not converted characters.
for($i = 128; $i < 160; $i++)
{
$string = str_replace(chr($i), "&#" . $i . ";", $string);
}
}
else
{
$string = str_replace("&", "&", $string);
$string = str_replace("<", "<", $string);
$string = str_replace(">", ">", $string);
$string = str_replace("\"", """, $string);
}
return $string;
}
Wil je bij teksten dat wél enters zichtbaar worden, kun je ná het escapen de enter vervangen voor de html-equavalent <br> met bijv. de functies htmlentities() en nl2br().
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
// Change plain string to HTML code.
function stringToHtml($string)
{
// HTML syntax
$string = escapeHtml($string, true);
// Fix new lines
$string = str_replace("\r\n", "<br />", $string);
$string = str_replace("\n", "<br />", $string);
$string = str_replace("\r", "<br />", $string);
// Fix Tabs
$string = str_replace("\t", " ", $string);
return $string;
}
function stringToHtml($string)
{
// HTML syntax
$string = escapeHtml($string, true);
// Fix new lines
$string = str_replace("\r\n", "<br />", $string);
$string = str_replace("\n", "<br />", $string);
$string = str_replace("\r", "<br />", $string);
// Fix Tabs
$string = str_replace("\t", " ", $string);
return $string;
}
Bij Email (headers):
In de headers moeten quotjes, de enter en de carriage return worden escaped.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
/*
voorkom dat de tekst een header kan bevatten, door enters te verwijderen,
en quotes en slashes te escapen.
*/
function escapeMailHeaders($string)
{
$string = str_replace("\n", "", $string); // Verwijder \n
$string = str_replace("\r", "", $string); // Verwijder \r
$string = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $string)); // Slashes van quotes
return $string;
}
voorkom dat de tekst een header kan bevatten, door enters te verwijderen,
en quotes en slashes te escapen.
*/
function escapeMailHeaders($string)
{
$string = str_replace("\n", "", $string); // Verwijder \n
$string = str_replace("\r", "", $string); // Verwijder \r
$string = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $string)); // Slashes van quotes
return $string;
}
Bij URLs:
Waarden in de parameters van de URL escapen, zoals de & en = teken. Kun je eenvoudig doen met urlencode()
Bij Javascript:
Genereerd je dynamish javascript, dan slashes, quotes, enters, carriage return.
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
// Slashes special characters in a javascript lines; used for dynamic 'onclick, onload, onmouseover, onmouseout' events.
function escapeJavascript($string)
{
// Slash syntax
$string = str_replace("\\", "\\\\", $string);
$string = str_replace("'", "\'", $string);
// Slash newline/return
$string = str_replace("\r\n", "\\n", $string);
$string = str_replace("\n", "\\n", $string);
$string = str_replace("\r", "\\n", $string);
return $string;
}
function escapeJavascript($string)
{
// Slash syntax
$string = str_replace("\\", "\\\\", $string);
$string = str_replace("'", "\'", $string);
// Slash newline/return
$string = str_replace("\r\n", "\\n", $string);
$string = str_replace("\n", "\\n", $string);
$string = str_replace("\r", "\\n", $string);
return $string;
}
Gewijzigd op 01/01/1970 01:00:00 door Martijn Wieringa
$string = str_replace("\"", """, $string);
werkt...
Code (php)
1
2
3
4
2
3
4
$string = str_replace("&", "&", $string);
$string = str_replace("<", "<", $string);
$string = str_replace(">", ">", $string);
$string = str_replace("\"", """, $string);
$string = str_replace("<", "<", $string);
$string = str_replace(">", ">", $string);
$string = str_replace("\"", """, $string);
ofwel
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
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
<?php
$input = 'Mijn input met <br> html code en <p> veel meer <b>andere</b> onzin.';
echo escapeHtml($input, FALSE);
// Escape HTML characters from a string
function escapeHtml($string, $ascii_save = false)
{
if($ascii_save)
{
$string = htmlentities($string);
// Catch not converted characters.
$string = str_replace(chr(128), "€", $string);
$string = str_replace(chr(153), "™", $string);
// Catch all other not converted characters.
for($i = 128; $i < 160; $i++)
{
$string = str_replace(chr($i), "&#" . $i . ";", $string);
}
}
else
{
$string = str_replace("&", "&", $string);
$string = str_replace("<", "<", $string);
$string = str_replace(">", ">", $string);
$string = str_replace("\"", """, $string);
}
return $string;
}
?>
$input = 'Mijn input met <br> html code en <p> veel meer <b>andere</b> onzin.';
echo escapeHtml($input, FALSE);
// Escape HTML characters from a string
function escapeHtml($string, $ascii_save = false)
{
if($ascii_save)
{
$string = htmlentities($string);
// Catch not converted characters.
$string = str_replace(chr(128), "€", $string);
$string = str_replace(chr(153), "™", $string);
// Catch all other not converted characters.
for($i = 128; $i < 160; $i++)
{
$string = str_replace(chr($i), "&#" . $i . ";", $string);
}
}
else
{
$string = str_replace("&", "&", $string);
$string = str_replace("<", "<", $string);
$string = str_replace(">", ">", $string);
$string = str_replace("\"", """, $string);
}
return $string;
}
?>
:O So seg, jij bent op dreef Pholeron...
lol :P