Tekst lukt niet om weer te geven ?
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$plaatsnaam = $data['plaatsnaam'];
echo "
<table>
<tr> <td>Plaatsnaam:</td>
<td> <input type='text' size=35 maxlength=35 name='plaatsnaam' value='$plaatsnaam'>
<font color=red> *</font></td>
</tr>
</table> ";
?>
$plaatsnaam = $data['plaatsnaam'];
echo "
<table>
<tr> <td>Plaatsnaam:</td>
<td> <input type='text' size=35 maxlength=35 name='plaatsnaam' value='$plaatsnaam'>
<font color=red> *</font></td>
</tr>
</table> ";
?>
Omdat daar die vervelende quote aanwezig is, zie ik in de tabel een leeg veld.
Hoe los ik dit op ?
Gewijzigd op 09/05/2015 20:06:20 door Paco de Wulp
- je HTML kloppend maken, de waarden van attributen dienen te allen tijde tussen "dubbele quotes" te staan
- je output escapen* met htmlentities() - dit is in zijn algemeenheid een goede gewoonte want deze kan namelijk user input bevatten; wat nu als iemand javascript of HTML heeft ingevoerd? beide dingen kunnen je formulier / je webpagina breken
* hierbij is het uit oogpunt van de veiligheid van je applicatie zéér belangrijk dat je rekening houdt met character encoderingen, anders werkt je escaping niet goed
Gewijzigd op 09/05/2015 20:13:54 door Thomas van den Heuvel
Nog even een kleine aanvulling, variabelen buiten de single quotes halen.
Helemaal correct, en volgt ook min of meer uit het eerste puntje :].
Hoe moet de code er dan uit zien ?
Er vanuitgaande dat je overal UTF-8 gebruikt, maak een hulpfunctie. Dit is enkel een shorthand.
Escape je code en echo alleen het meest noodzakelijke:
Toevoeging op 10/05/2015 20:35:41:
Thomas van den Heuvel op 09/05/2015 20:10:59:
- geen lappen statische HTML echo'en met PHP, dit heeft geen enkel nut en belemmert de leesbaarheid
Waarom is dit niet handig ? Alleen de leesbaarheid of ook nog andere consequenties ?
Toevoeging op 10/05/2015 20:37:50:
Thomas van den Heuvel op 09/05/2015 20:10:59:
- je HTML kloppend maken, de waarden van attributen dienen te allen tijde tussen "dubbele quotes" te staan
Tsja, ik las net de tut op deze website over correct quoten. Ik ga al mijn scripts aanpassen. Nogmaals bedankt voor de tip !
Paco de Wulp op 09/05/2015 22:38:43:
Waarom is dit niet handig ? Alleen de leesbaarheid of ook nog andere consequenties ?
Thomas van den Heuvel op 09/05/2015 20:10:59:
- geen lappen statische HTML echo'en met PHP, dit heeft geen enkel nut en belemmert de leesbaarheid
Waarom is dit niet handig ? Alleen de leesbaarheid of ook nog andere consequenties ?
Ja, dat heeft zeker consequenties. In je eerste scriptfragment moet een hele lange string wordt geïnterpreteerd enkel en alleen om daarin $plaatsnaam te vervangen door een waarde:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
$plaatsnaam = $data['plaatsnaam'];
echo "
<table>
<tr> <td>Plaatsnaam:</td>
<td> <input type='text' size=35 maxlength=35 name='plaatsnaam' value='$plaatsnaam'>
<font color=red> *</font></td>
</tr>
</table> ";
?>
$plaatsnaam = $data['plaatsnaam'];
echo "
<table>
<tr> <td>Plaatsnaam:</td>
<td> <input type='text' size=35 maxlength=35 name='plaatsnaam' value='$plaatsnaam'>
<font color=red> *</font></td>
</tr>
</table> ";
?>
Je kunt dan beter alle HTML buiten de PHP-tags zetten, zodat de HTML wordt genegeerd door de PHP-parser en de PHP-engine. De PHP-code beperk je dan tot waar je echt PHP nodig hebt; niet meer, niet minder.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<table>
<tr>
<td>Plaatsnaam:</td>
<td>
<input type=text size=35 maxlength=35 name=plaatsnaam value="<?php echo $data['plaatsnaam']; ?>">
<span style="color:#f00">*</span>
</td>
</tr>
</table>
<tr>
<td>Plaatsnaam:</td>
<td>
<input type=text size=35 maxlength=35 name=plaatsnaam value="<?php echo $data['plaatsnaam']; ?>">
<span style="color:#f00">*</span>
</td>
</tr>
</table>
Het nodeloos kopiëren van een waarde met $plaatsnaam = $data['plaatsnaam'] is er daarbij ook uitgehaald.
Gewijzigd op 10/05/2015 21:06:30 door Ward van der Put
--> ik ga al mijn scripts hierop nalopen !
P.S. Ik heb je boek aangeschaft "WebDesign met PHP 5". Nice! :-)
Gewijzigd op 10/05/2015 21:12:26 door Paco de Wulp