Avatar billede sneakraid Nybegynder
01. maj 2006 - 22:05 Der er 17 kommentarer og
1 løsning

Brug af querystring i form action

Hej nørder :)

Hvordan kan det være at jeg ikke kan sætte action til at være en querystring, i et form tag? For når jeg submitter, så siger den at siden ikke kunne vises, men hvis jeg skriver nedenstående querystring manuelt op i adresselinien, så virker det fint.

<form action="?page=order_now&action=get_logininfo" method="post">

Kan det overhovedet lade sig gøre, eller skal det være en fysisk fil, hvis man kan sige det sådan? Og i så fald, hvis det kan lade sig gøre, hvordan? :)
Avatar billede miknil Nybegynder
01. maj 2006 - 22:07 #1
Du mangler URL'en, det er ikke nok med querystringen.

<form action="?page=order_now&action=get_logininfo" method="post">

skal være noget i stil med:

<form action="minside.asp?page=order_now&action=get_logininfo" method="post">
Avatar billede eagleeye Praktikant
01. maj 2006 - 22:08 #2
hvis den er tom skulle den reloade samme fil, men det kan godt være at IE kan drille lidt eller den server man bruger kan drille lidt da default side navnet ikke er det samme som fil navnet..

du kan indsætte script files navn sådan

<form action="<%=Request.Servervariables("SCRIPT_NAME")%>?page=order_now&action=get_logininfo" method="post">
Avatar billede sneakraid Nybegynder
01. maj 2006 - 22:18 #3
Det er jeg klar over :)

Men jeg ville godt kunne undvære at skrive den fysisk fil med, altså "minside.asp". Ville bare vide om det kan lade sig gøre, på en eller anden måde. Det er bare en lille detalje med at jeg ikke vil have vist min fysiske fil (default.asp) i adresselinien, men KUN querystrings osv.

Men du kan f.eks. tage en kig på nedenstående side.

http://www.i-beauty.dk

Hvis du hurtigt prøver at købe et produkt, smutter ind i indkøbskurven og trykker "Bestil varer", og her trykker du bare "Hent" for at hente login oplysninger, du behøver ik skrive noget i felterne. Men lig her mærke til adresselinien, der får du ikke filnavnet at se, men derimod bare at der bliver tilføjet en ekstra parameter til querystringen, som jeg forsøger i mit eks. Det kunne jeg godt tænke mig at vide hvordan de er sluppet omkring med :)
Avatar billede sneakraid Nybegynder
01. maj 2006 - 22:27 #4
Dog var der en måde som jeg havde forstillet mig at det kunne gøres. Evt. ved at sende til en ny side, f.eks. tjecklogin.asp. Her ville jeg tjecke for oplysninger, smide dem i et par sessions og så redirect'e tilbage, sådan man ikke når at se adresselinien ændre sig. :)

Ved ikke om det lyder som en brugbar metode?

Men nu indrømmer jeg godt nok at jeg er mest til at lave mine scripts i så få filer som muligt. Helst i én stor fil, med en masse funktioner, som jeg så kan kalde hist og her.

Men hvis det mit spørgsmål går ud på, ikke kan komme til at virke på nogen måde, uden at skulle skrive den "fysiske fil", så må jeg jo lære at leve med det :)
Avatar billede eagleeye Praktikant
01. maj 2006 - 22:33 #5
Ja det vil måske være muligt, men jeg kender ikke så meget at hvordan man får skjult filnavnet. Problemet er at man jo er nød til at skrive dfilnanvet også selvom man redirecter så måske det skal laves med noget javascript.
Avatar billede sneakraid Nybegynder
01. maj 2006 - 22:42 #6
Okay, Så konklusionen er at man SKAL sende til en fysisk fil fra en form! Det irriterer mig lidt at jeg ikke kan gemme filnavnet, og javascript er jeg ikke så skarp i, at lige ved hvordan det skulle kunne løses.

Men kan man evt. skrive dette i action i stedet:

<form action="http://www.minside.dk/?page=order_now&action=get_logininfo" method="post">

Eller vil det give fuldstændig samme resultat? Og hvis det evt. virker, er det så hensigtsmæssigt/sikkert?
Avatar billede eagleeye Praktikant
01. maj 2006 - 22:59 #7
Ja det tror jeg godt du kan skrive på den måde.
Så står der noget foran ? og om det er filnavnet eller http adressen skulle vel være lige så godt.
Avatar billede sneakraid Nybegynder
01. maj 2006 - 23:16 #8
Er der en smart måde/asp funktion, hvor på jeg kan snuppe det der står i adresselinien?

Fordi hvis jeg skriver http adressen manuelt ind i action, virker det glimrende :)
Avatar billede cpufan Juniormester
01. maj 2006 - 23:51 #9
ja den gav eagleeye tidligere

<form action="<%=Request.Servervariables("SCRIPT_NAME")%>?page=order_now&action=get_logininfo"
Avatar billede sneakraid Nybegynder
02. maj 2006 - 22:25 #10
cpufan > Det var så lige præcis denne løsning jeg IKKE ville bruge, da jeg prøver at skjule filnavnet så meget som muligt :)

Men eagleeye, smid et svar. Og tak for hjælpen/snakken. Hehe ;)
Avatar billede cpufan Juniormester
02. maj 2006 - 23:38 #11
du kan vel egentlig, lave dem som input type hidden, istedet for at lægge dem i querystrengen,
så kan du posten til samme side,
og requeste form elementer istedet for querystreng-elementer
Avatar billede sneakraid Nybegynder
03. maj 2006 - 08:40 #12
Den måde jeg gør det på, er at jeg har en side, hvor på jeg skal hente nogle kundeoplysninger (jeg er ved at lave en shop). HVIS man allerede er bruger på siden, kan man skrive sit tlf. nr. og password, og så auto udfylder den felterne i kunde oplysninger. Når man så trykker "hent kundeoplysninger", sender den til samme side, dog lige med den ændring, at den putter f.eks. "&action=get_logininfo" ind i querystringen. Og så har jeg en if sætning som tjecker på det og henter kundeoplysninger osv. bla bla. Det tror jeg snildt du forstår :)

MEN, jeg vil helst poste til samme side, UDEN at filnavnet kommer til at stå i adresselinien. Og det er så også lykkedes ved at skrive http://www.minside.dk/, i stedet for filnavnet. Men det kunne godt være der fandtes en metode til opsnappe hvad der stod i adresselinien, så man var fri for at skrive det manuelt, af hensyn til hvis shoppen f.eks. skulle flyttes osv. :)
Avatar billede cpufan Juniormester
03. maj 2006 - 17:35 #13
hvis du så laver en
<input type="hidden" name="action" value="get_logininfo">
som er i din form.

så kan du ændre din if-sætning til

if request.form("action") ="get_logininfo" then

.....

så kan din form poste til ""

og har dermed ingen querystring,
request.form er iøvrigt også mere sikker overfor
ondsindede forsøg på at omgå sidens sikkerhed.
Avatar billede sneakraid Nybegynder
03. maj 2006 - 18:40 #14
cpufan > Jeg kan se din pointe nu. Og ja, det var da en lidt anden synsvinkel jeg lige fik på det. Det tror jeg sagtens jeg kan bruge til noget.

Men så lige et spørgsmål til. Kan det lade sig gøre at manipulere en if sætning, hvis jeg tjecker på noget i querystring, og udfører noget alt efter hvad der står der?

Men i så fald, hvis du så gerne vil have del i de 15 point, så må du hellere smide et svar :) hehe. Så hvis ikke eagleeye kommer med et hurtigt svar, får du bare point. Nu er det heller ikke fordi 15 point betyder særlig meget. Hehe
Avatar billede eagleeye Praktikant
03. maj 2006 - 18:48 #15
jeg kom lige i tanke om hvis du slet ikke vil havde filnavn eller querystring i adresse feltet kan du ligge  hele siden ind i en frame.
Avatar billede eagleeye Praktikant
03. maj 2006 - 18:59 #16
Altså lave et frameset i den fil som loades først på din server typisk vil det være default.asp eller index.htm(l) det kommer an på server opsætningen og framset kan se sådan her ud med en frame:


<FRAMESET>
  <FRAME NAME="" SRC="default2.asp">
</FRAMESET>



default2.asp skal være den default fil du har nu, så kan man ikke se fil navnet eller querystrings i browseren.
Avatar billede sneakraid Nybegynder
03. maj 2006 - 19:14 #17
eagleeye > Ja, det var os en løsning. Men, jeg fortrækker så vidt muligt at undgå nogen form for frames. :)

Men tak begge 2, jeg har fået svar på det jeg spurgte om, det virker og jeg er mere end tilfreds :)
Avatar billede cpufan Juniormester
04. maj 2006 - 08:56 #18
svar
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
Kurser inden for grundlæggende programmering

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