webForumDet fria alternativet

cookie-fel

ASP

21 svar · 423 visningar · startad av magnusfeldth

Medlem sedan jan. 20034 480 inlägg
Frågan#1

jag skall ha en cookie som skickar ett värde till en bild. Man skall även kunna skriva in en egen länk till en bild och använda denna bild, koden ser ut så här:

<form method="GET" action="skapa.asp">
<input type="radio" name="assist1" value="www.vitatubsockor.nu/images/assistenter/nallen.gif"> Nallen<br>
<input type="radio" name="assist1" value="www.vitatubsockor.nu/images/assistenter/nicknolte.gif"> Nick Nolte<br>
<input type="radio" name="assist1" value="www.vitatubsockor.nu/images/assistenter/tyson.gif"> Mike Tyson<br>
<input type="radio" name="assist1" value="www.vitatubsockor.nu/images/assistenter/janokarlsson.gif"> Jan O Karlsson<br>
<input type="radio" name="assist1" value="1"> Egen bild<br>
<input type="text" name="egenassist" size="30">

processkoden ser sedan ut så här:

<% Response.Buffer = True %>

<html>
<% DIM Assistenten 
if Request.QueryString("assist1") = 1 then
Assistenten = Request.QueryString("egenassist")
else
Assistenten = Request.QueryString("assist1")
end if

   Response.Cookies("Sockan")("assistent") = Assistenten
   Response.Cookies("Sockan").Expires = "December 10, 2003"
%>

Följande värden har bakats in i Kakan:<p>

Assistent: <img border="0" src="<% = Request.Cookies("Sockan")("Assistent")%>">

då får jag felmesset:

Microsoft VBScript runtime error '800a000d' 

Type mismatch: '[string: "www.vitatubsockor.nu"]' 

/skapa.asp, line 5

vad gör jag för fel? Kan jag inte skriva value som exempelvis https://www.vitatubsockor.nu/images/hejsan.gif?

Medlem sedan nov. 20017 144 inlägg
#2
  1. Du kan inte skriva "ReQuest.QueryString" på sidan där du tar emot ditt värde. Du måste skriva "ReQuest.Form", eftersom att det hela kommer ifrån ett formulär.

  2. Du kan inte både skriva och läsa samma kaka på en och samma sida.

  3. Jag vet inte hur pass skifteslägeskänsligt det hela är, men det ser bättre ut om du är konsekvent.
    ex. ("sockan")("assistent")

  4. Du kan förkorta det hela lite:

<input type="radio" name="assist1" value="janokarlsson"> Jan O Karlsson<br>
...

Assistent: <img border="0" src="http://www.vitatubsockor.nu/images/assistenter/<% = Request.Cookies("Sockan")("Assistent")%>.gif">
Medlem sedan jan. 20034 480 inlägg
#3

2, de är inte på samma sida, den första är på en sida jag kallar testar3.asp, och den processkoden på skapa.asp.
3, ska kolla
4, nix, eftersom meningen med den här koden är att man även skall kunna skriva in och använda egna bilder och då måste jag ha hela länken till en bild, inte endast den relativa...

-- hela koden fungerade när jag bara hade ex nallen.gif som värde och all annan kod samma... nu när jag lagt till det längre samt ett fält för att skriva in egen länk så funkar det inte...

Medlem sedan juni 200032 967 inlägg
#4

JesperT: Använder man GET som metod i formuläret skickas värdena med querystring, därför ska man använda request.querystring. Använder man metoden POST skalll dock request.form användas.

mvh

Medlem sedan nov. 20017 144 inlägg
#5

@nders skrev:

JesperT: Använder man GET som metod i formuläret skickas värdena med querystring, därför ska man använda request.querystring. Använder man metoden POST skalll dock request.form användas.

mvh

Man kan göra så... men det är inte rätt. ;)

Medlem sedan mars 20015 287 inlägg
#6

Har du inte fel där JesperT?

Om man nu har GET i formuläret kan man väl inte använda sig av request.form?

Däremot kan man ju diskutera användandet av GET från första början. :)

Medlem sedan nov. 20017 144 inlägg
#7

Skojjselojsade bara. :e
Ja, GET skall man akta sig för. :)

Medlem sedan jan. 20034 480 inlägg
#8

har nu bytt till "post" och request.form... men det fungerar icke ändå när jag väljer en av förvalen... dock fungerar det utmärkt att välja att skriva in egen adress... för onlinetest kolla

https://www.vitatubsockor.nu/testar3.asp

Medlem sedan dec. 20025 871 inlägg
#9

Gör säkert ingen skillnad, men för att det ska se lite proffsigt ut; lägg till "http://" framför WWW :p

Medlem sedan dec. 20025 871 inlägg
#10

Kollade felmeddelandet...

if Request.QueryString("assist1") = 1 then

Du försöker kolla om en sträng (adressen) är lika med 1, det verkar haka upp sig där... kan man inte göra det omvänt på något sätt?

Medlem sedan jan. 20034 480 inlägg
#11

will do... men kommer det att funka då?

Medlem sedan dec. 20025 871 inlägg
#12

Du kan testa med att ändra INPUT-taggen för EGEN BILD till assistegen
Låt de andra alternativen vara assist1 If-satsen kan då se ut så här:

if Request.QueryString("assistegen") = 1 then
Assistenten = Request.QueryString("egenassist")
else
Assistenten = Request.QueryString("assist1")
end if
Medlem sedan juni 200032 967 inlägg
#13

hmm. Vill du inte kontrollera om fältet var tomt eller inte?

if detena <> "" then
     'wee, någon hade fyllt i någe
else
     'nähäa :-/
end if
Medlem sedan jan. 20034 480 inlägg
#14

skall testa det. felet måste ligga i if-satsen för jag testade att ha de andra sakerna fristående och då fungerade det.

Medlem sedan jan. 20034 480 inlägg
#15

som jag hade tänkt det så ska man kunna välja bild genom att trycka på en radioknapp. Vill man ha en egen bild klickar man på en radioknapp för det och fyller sedan i en textrad nedan. IF-satsen skall kolla om värdet på radioknappen är = 1 för och om den är det skall den skriva cookievärdet till värdet i textfältet. Om värdet inte är = 1 i radioknappen skall istället värdet som raadioknappen skickat med användas som cookievärde...

krångligt? sí... men det är vad jag vill att if-satsen skall göra... tydligen gör den inte det...

Medlem sedan juni 200032 967 inlägg
#16

Du ska hur som helst inte jämföra med 1, utan "1", det som kommer från formulär är strängar, inte heltal. Det är inte konstigt att man får felmeddelanden om man försöker konvertera en webbaddress/ ett namn till ett heltal...

Medlem sedan jan. 20034 480 inlägg
#17

nu funkar det! det var "1" sin spökade... jag hade skrivit utan "" eftersom jag tidigare i veckan lärt mig att man inte skulle använda "" i SQL-uttryck när det gällde siffror...

Medlem sedan nov. 20017 144 inlägg
#18

Fel: man skall inte använda enkelfnuttar vad gäller siffror.
Du skulle säkert även kunna skriva:

if [red]cInt[/red](Request.QueryString("assistegen")) = 1 then
...

Och få samma resultat. Eftersom att du då har rätt typ för att kunna jämföra din querystring med en siffra.

Medlem sedan juni 200032 967 inlägg
#19

Jesper T skrev:

Du skulle säkert även kunna skriva:

if [red]cInt[/red](Request.QueryString("assistegen")) = 1 then
...

Och få samma resultat. Eftersom att du då har rätt typ för att kunna jämföra din querystring med en siffra.

Nej, eftersom det kommer strängar med webbadresser eller namn, så kommer man få ett felmeddelande "Type mismatch" om man försöker sig på det.

Medlem sedan mars 2003970 inlägg
#20

JesperT, gällande GET vs. POST så använde jag mig av POST, men eftersom det inte funkade så bytte jag helt enkelt. Det funkar finfint, och jag tror inte att GET är nåt att akta sig för ;)

270 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)