Avatar billede advancedweb Nybegynder
20. november 2004 - 16:35 Der er 19 kommentarer

-value når felt indeholder < eller >

Jeg har en form på en side, hvor man skal skrive noget tekst og alle mulige tegn bla. < > osv. Altså i HTML laves de tegn om til &lt; og &gt; ... Min value i feltet står som 255. Når man så tryker submit bliver inputtet behandlet med et PHP script, og skal derefter ligges ind i en mysql-db hvor max. antal tegn er 255.
PHP-scriptet laver automatisk tegn som <, >, & osv (http://dk2.php.net/manual/da/function.htmlspecialchars.php), om til 
&lt; osv.

Hvis en bruger i feltet skriver > 100 gange eller sådan noget, så laver php det om til &lt; .. det er jo 4 tegn hver gang og bliver til 400 tegn i alt, og selvom man kun har skrevet 100 tegn

Kun man ikke lave et Javascript der hvor formen var, som hver gang man skrev en af de tegn (<, > & osv.) trak f.eks 4 fra valuen (eller 3 da tegnet jo tæller for 1), så brugeren ikke blev forvirret af at der lev sagt at han havde brugt for mange tegn selvom han kun havde skrevet 100 <'er

På forhånd tak
Avatar billede fixxxer Nybegynder
20. november 2004 - 16:44 #1
Put dog <> med ned i databasen og konverter dem til &lt; og &gt; når du skal vise dem igen.. Jeg ville altid putte det rå tekst i min database og behandle det på hjemmesiden..

Eller er det fuldstændig umuligt?
Avatar billede fixxxer Nybegynder
20. november 2004 - 16:45 #2
så når jeg echo'er :

<? echo ereg_replace(">", "&gt;", ereg_replace("<", "&lt;", tabel_query[feltet])); ?>
Avatar billede advancedweb Nybegynder
20. november 2004 - 16:55 #3
okay... jeg havde bare fået anbefalet at konvetere FØR det kom i databasen af sikkerhedsmæssige årsager. :D
Avatar billede advancedweb Nybegynder
20. november 2004 - 16:56 #4
Men... hvis den man har glemt at udfylde et felt eller noget, så kommer formen frem igen, og har sat de værdier man indtastede før ind i flterne. og hvis man f.eks har skrevet "> i et felt... så tror html al inputfeltet stopper her?
Avatar billede fixxxer Nybegynder
20. november 2004 - 17:05 #5
nej.. for sålænge du bare sørger for at din input overholder nogle regler går det nok..

<input type="text" name="ettekstfelt" value="jeg kan sagtens indholde < og >">
Avatar billede fixxxer Nybegynder
20. november 2004 - 17:06 #6
du må da meget gerne finde ud af hvem der har sagt til dig at det er en sikkerhedsbrist at have < og > liggende i en database?

Så længe du blot husker at konvertere dem fra databasen og på din side, så skulle det ikke kunne skade spor..
Avatar billede advancedweb Nybegynder
20. november 2004 - 17:08 #7
Men hvis jeg i feltet skriver "> , så stopper den inputet og skriver alt det der class="form" style="width:150px;"> bagefter som tekst og behandler det ikke som html
Avatar billede fixxxer Nybegynder
20. november 2004 - 17:12 #8
Jeg forstår slet ikke hvad dit problem er..

Hvis en bruger skriver < eller > i dit input-felt eller textarea og du poster til samme side hvor resultatet af post bliver gentaget igen i samme input/textarea, så skulle den ikke stoppe html outputtet for resten af siden..
Avatar billede advancedweb Nybegynder
20. november 2004 - 17:14 #9
ikke for resten af siden... men for resten af inputfeltet.. fordi value="brugeren som skriver: ">" class="form">

Der stopper den så input-feltet!!
Avatar billede fixxxer Nybegynder
20. november 2004 - 17:15 #10
ik hos mig...

<form method="POST" action="">
<input type="text" name="felt1" value="<? echo $_POST[felt1]; ?>"><br>
<textarea name="felt2"><? echo $_POST[felt2]; ?></textarea><br>
<input type="submit">
</form>
Avatar billede fixxxer Nybegynder
20. november 2004 - 17:19 #11
ok fair nok, hvis dine bruger skal side og skriver vilde html-elementer:

<form method="POST" action="">
<input type="text" name="felt1" value="<? echo htmlentities($_POST[felt1]); ?>" style="width: 400px;"><br>
<textarea name="felt2" style="width: 400px; height: 200px;"><? echo htmlentities($_POST[felt2]); ?></textarea><br>
<input type="submit">
</form>
Avatar billede advancedweb Nybegynder
20. november 2004 - 17:20 #12
Også i din kode.. hvis brugeren skriver de TO tegn. Både tegnet: " (&quote) og tegnet: > (&gt;)...
Avatar billede fixxxer Nybegynder
20. november 2004 - 17:20 #13
men når du skal gemme til din database skal du IKKE bruge htmlentities() for så bliver de netop laqt ned som &gt; og &lt;
Avatar billede fixxxer Nybegynder
20. november 2004 - 17:21 #14
det kun når du skal hente skidtet frem igen at du skal behandle det med htmlentities()
Avatar billede advancedweb Nybegynder
20. november 2004 - 17:22 #15
ja... det er forstået... men jeg skal bare have lavet det sådan at selv om brugeren skriver "> i feltet og så kommer tilbage fordi der er en fejl i en af felterne så skal den ikke tro at "> i valuen betyder at inuptfeltet stoppes
Avatar billede fixxxer Nybegynder
20. november 2004 - 18:01 #16
det sker heller ikke hvis du bruger mit sidste eksempel.
Avatar billede advancedweb Nybegynder
20. november 2004 - 18:17 #17
Men den skal jo ikke skrive det der &quot.... den skal skrive " og ikke &qoute
Avatar billede fixxxer Nybegynder
20. november 2004 - 19:25 #18
det er vel ligegyligt hvad den skrive nede i HTML, det er bare vigtigt at de data der bliver postet som er de rigtige..
Avatar billede advancedweb Nybegynder
20. november 2004 - 19:28 #19
jeg har udtænkt noget med at hver at php undersøger strenegn den får ind, og hver gang den finde en af de tegn der laves om, hæver den en variabel indeholdene maxlengt af formen, med det antal der nu er i den html-erstatning...

Men ellers tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester