[PHP] Encoden van input text, zoals & *

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik heb een probleem met het invoer veld text.

tijdens invoeren worden er titels getikt die beginnen en eindigen met ". Dit is echter niet altijd het geval dus ik kan niet standaard replace doen.

Soms gebeurt het echter dus wel. Wanneer met nu dus zo'n titel wil gaan wijzigen laat hij de textbox leeg.

Deze vul ik op de onderstaande manier

PHP:
1
 value="<?= $voorstelling[titel] ?>"


wat er dus in een paar gevallen kan komen te staan is value =""titel"" maar dan lijkt hij al gesloten dus hij laat de titel niet zien.

Ik wil dat hij dan gewoon "titel" laat zien in de textbox. Ik heb al met addslashes geprobeerd maar dat werkt niet.
Wel kan je omzetten naar html code maar dat snappen de mensen daar niet. Ik moet dus echt de " hebben in die textbox.

  • Mac_Cain13
  • Registratie: Juni 2003
  • Laatst online: 17-09 15:48
Kijk eens naar de functies htmlentities en htmlspecialchars.
Deze PHP functies vervangen (gevaarlijke) HTML tekens door de onschuldige &#X; variant. De een wat grondiger dan de ander, maar dat staat netjes beschreven in de PHP manual.

Als je deze functies gebruikt kan een gebruiker je HTML code niet overhoop halen door het gebruik van bijvoorbeeld een aanhalingsteken of ander HTML karakter. Dit is overgens een beveiliging die je eigenlijk altijd moet toepassen, omdat met het opgeven van een complexe titel met HTML je hele site overhoop kan worden gehaald. Dus ook een stuk minder onschuldige dingen dan het niet verschijnen van een titel.

[ Voor 48% gewijzigd door Mac_Cain13 op 26-08-2004 13:55 ]


Verwijderd

Topicstarter
maar wat zie ik dan in de textox?

wel gewoon " of die quote

de functies ken ik wel, en ik gebruik ze ook weleens maar het gaat er nu om dat ik die tekens gewoon zie in de textbox

[ Voor 52% gewijzigd door Verwijderd op 26-08-2004 13:58 ]


  • Mac_Cain13
  • Registratie: Juni 2003
  • Laatst online: 17-09 15:48
Verwijderd schreef op 26 augustus 2004 @ 13:51:
maar wat zie ik dan in de textox?

wel gewoon " of die quote
Je zou dat natuurlijk gewoon uit kunnen proberen, maar ik ben in een goede bui dus vooruit. ;)

Je browser zal die vertaalde HTML weer terug vertalen naar gewone karakters, maar de karakters niet interpreteren als HTML code. Zo zie je dus gewoon een extra aanhalingsteken in je titel staan. Deze niet gezien als HTML code, maar als een aanhalingsteken die in de titel moet. :)
offtopic:
Hmm, hier maakte volgens mij iemand misbruik van zijn modrechten omdat ie spuit11 was. ;)

[ Voor 12% gewijzigd door Mac_Cain13 op 26-08-2004 14:06 ]


  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-09 21:03

Sosabowski

nerd

PHP:
1
 value="<?php echo $voorstelling['titel']; ?>"

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


  • UltimateB
  • Registratie: April 2003
  • Niet online

UltimateB

Pomdiedom

IorGie schreef op 26 augustus 2004 @ 14:00:
PHP:
1
 value="<?php echo $voorstelling['titel']; ?>"
Iets correcter misschien maar het maakt niks uit voor zijn probleem. <?= $var ?> is een shotcut voor een echo :)

Ik zou inderdaad eens kijken naar die HTMLentities, functies als addSlashes() zullen al je problemen verhelpen.

"True skill is when luck becomes a habit"
SWIS


  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-09 21:03

Sosabowski

nerd

voordat je het in de db knalt:
PHP:
1
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";


werkt prima hier!

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


  • Mac_Cain13
  • Registratie: Juni 2003
  • Laatst online: 17-09 15:48
Ultimateb schreef op 26 augustus 2004 @ 14:02:
[...]
Ik zou inderdaad eens kijken naar die HTMLentities, functies als addSlashes() zullen al je problemen verhelpen.
Al werkt addSlashes in HTML code volgens mij niet helemaal zoals hier gevraagt word. Die is meer voor SQL queries en dergelijke, maar uiteraard is addSlashes wel van hetzelfde kaliber. :)

@IorGie: Mss dat dat prima werkt om iets in een database te stoppen (hoewel ik dat zelf ook anders zou doen), maar daar word hier toch niet om gevraagt. :? De TS wil zijn PHP scriptje HTML laten uitpoepen, geen resultaten in een database stampen. Of zie ik iets over het hoofd?

[ Voor 27% gewijzigd door Mac_Cain13 op 26-08-2004 14:12 ]


  • StratoFarmer
  • Registratie: April 2000
  • Laatst online: 16-05 08:51

StratoFarmer

Anke :*

Je kunt ook gewoon zelf een functie schrijven die de inputstring controleert op "-tekens aan begin en eind en die eventueel eraf haalt.
Ik kan me voorstellen dat je nette teksten wilt overhouden.

(je kunt het zelfs recursief doen totdat het een mooie titel is geworden)

edit:
Mac_Cain13, je hebt gelijk dat het de mogelijkheden voor invoer beperkt.

[ Voor 17% gewijzigd door StratoFarmer op 27-08-2004 08:07 ]

Mijn plekkie + Sympathisant van 'GoT voor Behoud der Nederlandsche Taal' [GvBdNT]


Verwijderd

In de Faq staat een mooi stukje over escapen van de gevaarlijke tekens. Het weergeven van de ' " etc moet dan al dan niet met htmlentities en htmlspecialchars gebeuren.

  • Mac_Cain13
  • Registratie: Juni 2003
  • Laatst online: 17-09 15:48
StratoFarmer schreef op 26 augustus 2004 @ 16:32:
Je kunt ook gewoon zelf een functie schrijven die de inputstring controleert op "-tekens aan begin en eind en die eventueel eraf haalt.
Ik kan me voorstellen dat je nette teksten wilt overhouden.

(je kunt het zelfs recursief doen totdat het een mooie titel is geworden)
Je kan idd zo'n functie schrijven om je titel mooi te houden. Al vind ik sofware die mij verbied aanhalingstekens om een titel heen te zetten wel erg eigenwijs. Stel dat de titel zoiets moet zijn:
Mac_Cain13: "Aanhalingstekens moeten mogen!"

Dan gaat die functie mijn titel aanpassen door de aanhalingstekens eruit te halen. Of mss nog erger door alleen de laatste eruit te halen. Dan hou je zo'n verminkte titel over.
Ik vind dat je met zulk soort dingen erg moet uitkijken in je programma's/scripts. Het kan nog zo goed bedoeld zijn, maar je moet er wel rekening mee houden dat je dan dus sommige titels wel eens kan verminken!

Vergeet ook niet dat je na zo'n functie alsnog de htmlentities() eroverheen moet halen. Anders kan je nogsteeds alle willekeurige HTML/Javascript in je site drukken!

[ Voor 7% gewijzigd door Mac_Cain13 op 26-08-2004 16:59 ]


Acties:
  • 0 Henk 'm!

  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

Gebruik htmlentities/htmlspecialchars - het definitieve einde van problemen met <>" en '.

Maar kan iemand me uitleggen wat het security issue is met het gebruik van '&', en waarom htmlspecialchars dit ding vervangt door [b][norml]&[/][/] ? Dat het een karakter is dat in HTML speciale functionaliteit triggert, OK, maar levert het ooit ergens een security risk op?


Journalism is printing what someone else does not want printed; everything else is public relations.


Acties:
  • 0 Henk 'm!

  • Kuhlie
  • Registratie: December 2002
  • Niet online
[
Rataplan schreef op 28 augustus 2004 @ 21:03:
Gebruik htmlentities/htmlspecialchars - het definitieve einde van problemen met <>" en '.

Maar kan iemand me uitleggen wat het security issue is met het gebruik van '&', en waarom htmlspecialchars dit ding vervangt door [b][norml]&[/][/] ? Dat het een karakter is dat in HTML speciale functionaliteit triggert, OK, maar levert het ooit ergens een security risk op?
Gewoon, omdat als je:

&amp;

wilt *weergeven*, je in de html moet zetten:

&amp;amp;

;)

[ Voor 54% gewijzigd door Kuhlie op 28-08-2004 22:08 . Reden: (dit forum lijkt het ook niet goed te doen: als ik in het invoerscherm &amp; invoer, krijg ik als uitvoer slechts een & (edit-edit: ah, ik lees dat het zo hoort) ]

Pagina: 1