Her får du hjelp til å lage hjemmeside med video. Alle verktøy og programmer vi bruker til å lage webside er gratis.
Sikring av input fra form og karaktersett UTF-8
Driver å prøver meg på et enkelt CMS sak her...
I filen som registreringskjemaet henviser til så har jeg denne koden:
<?php
$firstname = $_GET['firstname'];
$lastname = $_GET['lastname'];
echo 'Welcome to our web site, ' .
htmlspecialchars($firstname) . ' ' .
htmlspecialchars($lastname, ENT_QUOTES, 'UTF-8') . '!';
?>dersom jeg endrer htmlspecialchars($firstnam2) . ' ' . til htmlspecialchars($firstname, ENT_QUOTES, 'UTF-8') . ' ' . så vil ikke resultatet bli vist dersom jeg skriver noe med æ, ø eller å. Er dette fordi jeg har med ENT_QUOTES, 'UTF-8'? og er det noen som vet hvilket tegnsett jeg må referere til dersom jeg skal ha med ikke bare æ, ø og å men også andre bokstaver som er spesielle i andre språk?
Hmmm, dette var merkelig. UTF-8 er det beste tegnsettet. Hvis du ser på tegnsettet på Hjemmeside.org, så ser du at dette er UTF-8. Dette gjøres fra webserveren, samt. at informasjon i databasen er lagret som UTF-8.
Når du bruker charset-argumentet (UTF-8) i htmlentities() eller, slik du gjør, i htmlspecialchars(), så sier du i prinsippet at data du putter inn i funksjonen for formatering er UTF-8.
Hvis data ikke er UTF-8, så vil funksjonen gi deg en tom string. Dette er altså problemet. For at skriptet ditt skal fungere kan du velge å fjerne UTF-8-formateringen, eller du må være konsistent på valg av karaktersett.
Dette fungerer, dog uten UTF-8.
<?php
$firstname = $_GET['firstname'];
$lastname = $_GET['lastname'];
echo 'Welcome to our web site, ' .
htmlspecialchars($firstname) . ' ' .
htmlspecialchars($lastname, ENT_QUOTES) . '!';
?>Hvis vi vil nytte UTF-8, så kan det gjøres slik:
<?php
// Sender data som UTF-8
header('Content-type: text/html; charset=utf-8');
// Konverterer GET til UTF-8
$firstname = utf8_encode($_GET['firstname']);
$lastname = utf8_encode($_GET['lastname']);
// Sender output
echo 'Welcome to our web site, ' .
htmlspecialchars($firstname, ENT_QUOTES, 'UTF-8') . ' ' .
htmlspecialchars($lastname, ENT_QUOTES, 'UTF-8') . '!';
?>Man trenger forøvrig ikke å ha linjen
<?php
header('Content-type: text/html; charset=utf-8');
?>i alle script, da man kan stille inn dette i webserveren (som oftest ved hjelp av .htaccess).
Til slutt: Er det noen spesiell grunn til at du bruker htmlspecialchars() fremfor htmlentities()?
Ser den, men htmlentities() har samme funksjonalitet, og faktisk bedre t.o.m. Du bør også sjekke ut funksjonen strip_tags() - veldig hendig til dette formålet, da den ikke bare konverterer til insprøytet kode til <b>dette skulle vært tykk tekst</b>, men faktisk fjerner taggene.
F.eks;
<?php
$var = '<b>Tykk skrift</b>';
// Gjør om spesialtegn
print htmlentities($var);
# <b>Tykk skrift</b>
// Fjerner HTML
print strip_tags($var);
# Tykk skrift
?>Som du ser fjerner strip_tags() (PHP-manualen) også markup. Du kan også bestemme hvilke tagger som skal være lov med denne funksjonen, for eksempel hvis du vil at folk skal kunne skrive tykk skrift og sånt. Da vil den tillate de taggene, mens andre fjernes.
Hvilken bok leser du, og er du fornøyd så langt?
Kjempemessig, og takk for tipset. Blir stadig spurt om god litteratur, så dette skal jeg bringe videre når neste anledning byr seg.
Kjenner til hopping, ja. Gjorde det i matematikk en gang og jeg måtte også rykke tilbake til start, haha.
Sorry for tregt svar, men jeg jobber med saken. Dette er nemlig lettere sagt enn gjort. Har planlagt å få impementert dette i WYSIWYG-editoren lenge, men ikke funnet tiden til det.
Grunnen til at jeg får det til, er fordi jeg legger det inn manuelt. Denne muligheten er det kun meg som har nå, men jeg skal få ordnet syntax highlighting av kode i WYSIWYG-editoren så snart som mulig. Prøver meg frem as we speak.
Inntil da kan du godt paste koden direkte inn, så kan jeg gå inn og redigere posten din slik at den blir stylet som kode etterpå. Jeg kommer til å skrive en ny post i denne tråden når funksjonaliteten er i orden, samt. en kort guide i hvordan man bruker den under foraet for tilbakemeldinger og kunngjøringer.


takker og bukker for svar :)
grunnen til at jeg burker htmlspecialchars er ganske enkelt fordi den boka jeg driver å leser samtidig som jeg koder eksemplene som blir brukt i boka, så er formålet her i denne delen å hindre at noen kan trikse med addressefeltet i nettleseren med å putte inn andre koder. Altså dette som går på sikkerhet og hva skal jeg kalle det på norsk.... innsprøyting...
uansett formålet her her bare dersom noen finner på å skrive inn f.eks <b> og </b> så skal den bare putte dette ut på siden uten at tekst eller script endrer seg og/eller i oppførsel.