Avatar billede Thomas Knudsen Nybegynder
02. oktober 2003 - 17:18 Der er 15 kommentarer og
2 løsninger

Validering af Querystring som sender undefined retur

Jeg har to variabler som sendes med i linket. fx
filnavn.asp?gender=Mand&order=Age

Gender (køn) skal være "Mand" eller "Kvinde". Intet andet skal accepteres. Og skal være med stort begyndelsesbogstav pga MySql tabellen

Order skal være "Profilename" eller "Age" eller "Location"
Intet andet accepteres. Og skal være med stort begyndelsesbogstav pga MySql tabellen


Hvis nogle så piller i URL skal scriptet fange det og erstatte evt. vrøvl med "Kvinde" og "Profilename"

Hvis jeg lader være med at lave nogle variabler i linket, melder Request.Querystring tilbage med en værdi som hedder undefined.

Den har jeg godt nok svært ved at styre :(

Så point gives til et komplet script som sikrer at kun de henholdsvis 2 og 3 værdier tillades og kommer der andet, så skal de sættes til "Kvinde" og "Profilename"
Avatar billede Thomas Knudsen Nybegynder
02. oktober 2003 - 17:21 #1
Rettelse:
Mand og kvinde er ikke felter i tabel, så det vel ligemeget om de har stort begyndelsesbogstav.
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 18:03 #2
hmm.. skal selve kontrollen laves i JavaScript som så sender siden over til serveren for at hente information med ASP?

Eller har du bare oprettet spm'et i den forkerte kategori?
asp ligger her: http://www.eksperten.dk/kat/3/
Avatar billede Thomas Knudsen Nybegynder
02. oktober 2003 - 18:26 #3
Linket sendes til en ASP-siden som er lavet med JavaScript.
Der undersøges URL for variabler og dernæste sættes de ind i en SQL sætning.
For at undgå grimme fejl vil jeg derfor teste for om brugerne piller i URL og dermed danner en ugyldig Sql-sætning. Så jeg vil mene det er den rette gruppe jeg har oprettet i.
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 18:29 #4
og dog.. hvis brugeren downloader siden kan han bypass/forbigå din validering.. så skal på asp siden check hvilken side han kommer fra..
alt det der er på clientsiden (html, javascript osv) kan manipuleres med af brugeren..
Avatar billede Thomas Knudsen Nybegynder
02. oktober 2003 - 18:38 #5
okay..for at fjerne enhver tvivl ;)
Jeg validerer på serversiden og dit eksempel har jeg ikke overvejet at sikre imod, men du har da ret.
Filen kalder sig selv med nogle parametre, som bestemmer hverdan SQL skal sammensættes...Så det som driller allemest er altså JavaScript og så noget stringcompare.
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 18:44 #6
hvad med (asp):

select case lcase(request.querystring("gender"))
case "mand"
' valgt: mand
case "kvinde"
' valgt: mand
case else
'intet eller forkert valg.. set default
end select

select case lcase(request.querystring("order"))
case "age"
' valgt: age
case "profilename"
' valgt: "profilename"
case "location"
' valgt: "location"
case else
'intet eller forkert valg.. set default
end select
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 18:45 #7
inden vi går for vidt med det her, vil jeg bare sige at en asp løsning hører hjemme i asp kategorien.
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 18:53 #8
hmm... copy and paste error:

case "kvinde"
' valgt: mand

:)
Avatar billede Thomas Knudsen Nybegynder
02. oktober 2003 - 19:19 #9
Nu var det ikke blot pseudokode, men reel kode jeg var efter ;)
Jeg prøver lige i morgen at teste det.
Case eller IF er ikke problemet. Det som driller er at "intet eller forkert valg" jo er "tomrum" og det viser en QueryString ved at returnere "undefined". Det er ikke et NULL objekt eller en streng man kan teste på.
Tror det jeg har problemer med er alle de måder man kan sammenligne på. Har ikke helt styr på dem
1. ==
2. !==
3. !=
4. ===

Om man koder ASP med VB eller JS er frit og derfor mente jeg det hørte til her og så slut på den diskussion. ;O)
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 19:36 #10
jeg har lavet et eksempel i java script:

<SCRIPT LANGUAGE="JavaScript">
<!--
function checkgender(gender, order)
{
var strGender = '';
var strOrder = '';

if (gender == 'mand') {
    strGender = 'Gender: mand';
} else if (gender == 'kvinde') {
        strGender = 'Gender: kvinde';
} else {
    strGender = 'Gender: set default gender';
}

if (order == 'age') {
    strOrder = 'Order: age';
} else if (order == 'location') {
        strOrder = 'Order: location';
} else if (order == 'profilename') {
        strOrder = 'Order: profilename';
} else {
    strOrder = 'Order: set default ordre';
}

alert(strGender + '\n' + strOrder);

}
//-->
</SCRIPT>
<form name="frgender" method="post" onSubmit="checkgender(document.forms['frgender'].gender.value, document.forms['frgender'].order.value);">
<input type="text" name="gender">
<input type="text" name="order">
<input type="submit" value="check">
</form>
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 19:43 #11
det skal lige siges at det selvfølgelig skal rettes til.. jeg har jo ikke set nogen kode fra dig, så jeg ved ikke hvordan det skal være..
det her er et eksempel på en opbygning til din kontrol..
Avatar billede roenving Novice
02. oktober 2003 - 19:44 #12
Request.Querystring er vel VB-Script ?-)

-- nu kender jeg ikke de forskelligheder serverside JScript har fra clientside javascript, men hvis logikken ikke har taget skade af at være rent M$-styret, må det blive noget med:

g = 'Kvinde';
o = 'Profilename';
q = dinQueryString.substring(1);//clientside: document.search.substring(1)
q = q.split('&');
for(i=0;q.length>i;i++){
  if(q[i].indexOf('gender')>-1){
    if(q[i].toLowerCase().indexOf('mand')>-1){
      g = 'Mand';
    }
  }else{
    if(q[i].indexOf('order')>-1){
      if(q[i].toLowerCase().indexOf('age')>-1){
        o = 'Age';
      }else{
        if(q[i].toLowerCase().indexOf('location')>-1){
        o = 'Location';
      }
  }
}
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 19:55 #13
hey roenving.. du bruger jo substring til dit site, ik? :)
Avatar billede roenving Novice
02. oktober 2003 - 20:15 #14
Jeps, men når der er flere værdier, må vi jo lige splitte først !-)
Avatar billede thesurfer Nybegynder
02. oktober 2003 - 20:17 #15
jamen, så er du jo manden til jobbet :)
god arbejdslyst :)
Avatar billede Thomas Knudsen Nybegynder
03. oktober 2003 - 17:44 #16
Jeg har måske ikke udtrykt mig klart, men I tager slet ikke højde for det som jeg spurgte om. Hvis der slet ikke bliver skrevet nogle parametre i URL, hvad så?
Så melder QueryString tilbage med 'undefined' på alle forespørgsler.
DET var mit problem og skal løses på denne måde:

var undefined; // Udefineret variabel, ergo er den undefined
qryOrder = Request.QueryString("Order");
if (qryOrder===undefined)qryOrder = "Profilname";

Beklager hvis I er uenige ;)


Dermed lukker jeg spørgsmålet.
Avatar billede roenving Novice
03. oktober 2003 - 20:45 #17
-- præcis det tog min løsning højde for ,-(

-- den arbejdede nemlig kun hvis der var en querystring, som indeholdt nogle af de 'reserverede' ord ellers returnerede den default-settings ...
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