/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Post formdata til valideringsside (post me~
Fra : Thomas Møller Nexø


Dato : 23-07-03 17:03

Hej NG.

Jeg er løbet ind i lidt af et problem efter at have "optimeret"
det nyhedsystem jeg bruger på min hjemmeside.

Kort om hvordan det virkede før:

Nyhederne oprettedes på én og samme side - altså med
querystring("action") = opret eller velider osv. Og alle data
sendtes derfor med metoden "get".

Nu har jeg imidlertid fundet ud af at jeg gerne vil adskille de
forskellige trin da dette giver mig nogle andre muligheder (ingen
begrænsning på længden af nyheden bl.a.)

Nu får jeg så tilgengæld problemet, at jeg ikke kan bruge " i
mine nyheder. Jeg ved at det kan være et problem at bruge '
(singlequote), men har dog aldrig været bevidst om at gåseøjne
kan skabe problemer.

Problemet består helt konkret i, at det, der kommer efter " et
hvilket som helst sted i nyheden, slet ikke kommer med.
Det kan ses på valideringssiden kaldet nyheder_valider.asp, men
det kommer ikke med i selve databasen når der postes.

Hvis man fek,s. laver " fra start fremkommer valideringssiden med
følgende fejlmeddelelse:

-------------------------------------------------------
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] Field 'nyheder.Nyhed'
cannot be a zero-length string.

/admin/nyheder/nyheder_valider.asp, line 68
-------------------------------------------------------

Altså, at der slet ikke er indtastet noget i formfeltet.

Kort fortalt fungerer det på den måde at der postes til
nyheder_valider.asp fra siden nyheder.asp?action=opret og alle
formdata kommer tilsyneladende med over.

På nyheder_valider.asp har jeg så skjulte formfelter - altså med
input type=hidden + response.Write sætninger så jeg kan se det
indtastede som på en almindelig side.
Jeg kunne sikkert godt vise indholdet i en normal form og få det
til at fungere, men det skal altså helst vises som ren tekst på
siden.

Pyyha, langt indlæg. Nogen der har oplevet noget lignende og vil
dele deres erfaringer?

Det skal siges at det har virket fint med get metoden og at dette
også virker fint uden "" i teksten.
Jeg går derfor ud fra at selve formen på begge sider er sat
korrekt op.

Med venlig hilsen

Thomas Møller Nexø
--------------------------------
thomas@havensupport.dk
http://www.havensupport.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Thomas Møller Nexø (23-07-2003)
Kommentar
Fra : Thomas Møller Nexø


Dato : 23-07-03 17:07

Glemte lige at skrive hvad der sker på linie 68:

<%
   
   Header = Request.Form( "Header" )
   
      If Request.Form("Billede_Valg") = "1" Then
         Billede = Request.Form("Billede_1")
      ElseIf Request.Form("Billede_Valg") = "2" Then
         Billede = Request.Form("Billede_2")
      Else
         Billede = Request.Form("Billede_3")
      End If
   
   Nyhed = Request.Form( "Nyhed" )
   Kilde = Request.Form( "Kilde" )
   Forfatter = Request.Form( "Forfatter" )
   NyhedBrake = Replace( Nyhed, vbcrlf, "<BR>" & vbcrlf )

   If Request.Form("Opret") = "Opret nyhed" Then
   
      Set Rs = Server.CreateObject("ADODB.Recordset")
         Rs.Open "nyheder", Conn, 2, 2
         
         Rs.AddNew
         
         Rs("Dato") = Now
         Rs("Nyhed") = Replace( Nyhedbrake, "'", "''" )
         Rs("Header") = Header
         Rs("Kilde") = Kilde
         Rs("Forfatter") = Forfatter
         Rs("Billede") = Request.Form("Billede")
         
         Rs.Update

Rs.Update er på linie 68

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (23-07-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 23-07-03 23:39

Thomas Møller Nexø skrev:

> Nu får jeg så tilgengæld problemet, at jeg ikke kan bruge " i
> mine nyheder. Jeg ved at det kan være et problem at bruge '
> (singlequote), men har dog aldrig været bevidst om at gåseøjne
> kan skabe problemer.

Gåseøjne er normalt ikke problematiske i forhold til
databasekommandoer, men de kan være det i forhold til
parameterværdier i anførselstegn i HTML.


> På nyheder_valider.asp har jeg så skjulte formfelter - altså med
> input type=hidden + response.Write sætninger så jeg kan se det
> indtastede som på en almindelig side.

Det vil formentlig sige at du har noget lignende det her stående:

<input type="hidden" name="tekst" value="Her er noget tekst">

Gæt selv hvad der sker hvis value-parameteren indeholder et
anførselstegn.

Hvis anførselstegnene skal bruges "udenfor" html-sider, skal de
escapes. Så vidt jeg ved gøres det på samme måde i html som i asp -
dvs. " skrives som "". Prøv som eksperiment at skrive teksten

   Dette er en ""test""

- ind i et af dine redigeringsfelter. Jeg vil tro at du får gemt
værdien

   Dette er en "test"

Hvis det er tilfældet kan du klare ærterne ved at benytte Replace
når du skriver de skjulte formfelter:

<input type="hidden" name="tekst"
   value=<%= Replace(tekstvar, """", """""") %>

(der skal være 4 x " som første argument og 6 x " som andet)
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jørn Andersen (24-07-2003)
Kommentar
Fra : Jørn Andersen


Dato : 24-07-03 07:04

On Thu, 24 Jul 2003 00:39:15 +0200, Jens Gyldenkærne Clausen
<jens@gyros.invalid> wrote:

>Hvis anførselstegnene skal bruges "udenfor" html-sider, skal de
>escapes. Så vidt jeg ved gøres det på samme måde i html som i asp -
>dvs. " skrives som "". Prøv som eksperiment at skrive teksten
>
>    Dette er en ""test""
>
>- ind i et af dine redigeringsfelter. Jeg vil tro at du får gemt
>værdien
>
>    Dette er en "test"

Nej, den går ikke - HTML vil stadig opfatte den første " som
afslutning af parameter-værdien.

Jeg ved ikke, om der er en "rigtig" løsning på problemet - men jeg har
fornylig løst det på den måde, at jeg har bedt (de få) brugere om,
hvis undtagelsesvis *skal* bruge " så i stedet at skrive en anden
tegnkombination, som jeg så replacer på en bekræftside og før
indsættelse i db.

Så i stedet for at folk skriver:
Dette er "fint"
skal de i stedet skrive:
Dette er Chr(34)fintChr(34)

som så bliver replace't med:
strTitelNyBek = Replace(strTitelNyBek, "Chr(34)", """")
- inden indsætning i db.

Bemærk: Det er ikke *funktionen* Chr(34), der bruges - blot en streng.

Det er ikke særligt kønt, og er nok kun forsvarligt til funktioner med
får brugere, som kan instrueres "individuelt", så om der findes en
"passende" løsning til et nyhedssite ved jeg ikke?


--
Jørn Andersen,
Brønshøj

Jens Gyldenkærne Cla~ (25-07-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-07-03 13:49

Jørn Andersen skrev:

>>Hvis anførselstegnene skal bruges "udenfor" html-sider, skal
>>de escapes. Så vidt jeg ved gøres det på samme måde i html som
>>i asp - dvs. " skrives som "".

> Nej, den går ikke - HTML vil stadig opfatte den første " som
> afslutning af parameter-værdien.

Du har ret. HTML-escapes sker ved hjælp af entiteter: &quot; i
stedet for " løser problemet (Replace(tekst, """", "&quot;")) -
hvis det bare skal vises på en side.

I asp kan man med fordel benytte funktionen Server.HTMLencode - den
vil også få anførselstegnene igennem.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Thomas Møller Nexø (24-07-2003)
Kommentar
Fra : Thomas Møller Nexø


Dato : 24-07-03 11:24

Tak til både Jørn og Jens for jeres hurtige tilbagemeldinger og
ideer til løsning af problemet.
Jeg nåede aldrig at prøve din ide Jørn, men den anden ide virkede
dog ikke.

Jeg besluttede mig imidlertid for at forsøge med en tredje ide, da
jeg helst ikke vil til at "opdrage" de andre brugere med adgang til
systemet til at skulle bruge forskellige tegn og symboler.

Jeg valgte derfor at gøre følgende.

Nyheder.asp:

Her kører jeg selvfølgelig stadig med formen, denne poster fortsat
til nyheder_valider.asp

Nyheder_valider.asp:

I stedet for at poste herfra med hidden fields i en ny form, samt at
skulle hente data ind i den nye form valgte jeg at definere data i
session variabler.
Disse kan så skrives ud på siden og brugeren kan dermed se sin nyhed
som den vil stå på den rigtige hjemmeside, samt vælge at gå tilbage
og rette i den.

På denne side linker jeg nu blot til en ny side, nyheder_opret.asp

Nyheder_opret.asp:

Her defineres variabler ud fra session variablerne og indholdet af
disse variabler lægges i databasen.
Session variabler fjernes og der sendes en mail hvis dette er valgt
samt redirectes tilbage til nyhedsoversigten.

Jeg syntes bare lige jeg ville give et alternativt løsningsforslag
til problemet med variablerne i form felterne.

Med venlig hilsen

Thomas Møller Nexø
--------------------------------
thomas@havensupport.dk
http://www.havensupport.dk

--
Vil du lære at kode HTML, XHTML, CSS, SSI eller ASP?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177551
Tips : 31968
Nyheder : 719565
Indlæg : 6408825
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste