Tekst lukt niet om weer te geven ?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Paco de Wulp

Paco de Wulp

09/05/2015 19:54:26
Quote Anchor link
Uit de database haal ik de plaatsnaam op, te weten: 's-Hertogenbosch.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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> "
;
?>


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
 
PHP hulp

PHP hulp

29/03/2024 09:14:15
 
Thomas van den Heuvel

Thomas van den Heuvel

09/05/2015 20:10:59
Quote Anchor link
- geen lappen statische HTML echo'en met PHP, dit heeft geen enkel nut en belemmert de leesbaarheid
- 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
 
Pipo Clown

Pipo Clown

09/05/2015 20:47:41
Quote Anchor link
Nog even een kleine aanvulling, variabelen buiten de single quotes halen.
 
Thomas van den Heuvel

Thomas van den Heuvel

09/05/2015 21:05:29
Quote Anchor link
Helemaal correct, en volgt ook min of meer uit het eerste puntje :].
 
Paco de Wulp

Paco de Wulp

09/05/2015 21:12:03
Quote Anchor link
Hoe moet de code er dan uit zien ?
 
Thomas van den Heuvel

Thomas van den Heuvel

09/05/2015 22:11:19
Quote Anchor link
Het moest trouwens htmlspecialchars() zijn, niet htmlentities().

Er vanuitgaande dat je overal UTF-8 gebruikt, maak een hulpfunctie. Dit is enkel een shorthand.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
function escape($in) {
    return htmlspecialchars($in, ENT_QUOTES, 'UTF-8');
}

?>

Escape je code en echo alleen het meest noodzakelijke:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" name="whatever" value="<?php echo escape($jeInput) ?>" />
 
Paco de Wulp

Paco de Wulp

09/05/2015 22:38:43
Quote Anchor link
Dank je wel .

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Morgen Moederdag !!!!!



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 !
 
Ward van der Put
Moderator

Ward van der Put

10/05/2015 21:05:31
Quote Anchor link
Paco de Wulp op 09/05/2015 22:38:43:
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)
PHP script in nieuw venster Selecteer het PHP script
1
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> "
;
?>

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)
PHP script in nieuw venster Selecteer het PHP script
1
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>

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
 
Paco de Wulp

Paco de Wulp

10/05/2015 21:08:20
Quote Anchor link
Ok, duidelijk. Thx Ward.
--> 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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.