23. januar 2004 - 13:04
Der er
45 kommentarer og 1 løsning
Vil gerne bestemme hvem som kan se kode
Jeg vil gerne lave en jsp side som på baggrund af hvilken browser man bruger enten viser eller skjuler kode. Helt konkret drejer det sig om at koden kun skal vises hvis man ikke kommer fra en PC baseret platform :-) Med andre ord. Det skal kun kunne ses fra en Ipaq.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
23. januar 2004 - 13:10
#1
JSP koden kan aldrig ses fra klient da den køres på server. Hvis du vil undlade at outputte noget HTML kode ved bestemte browsere, så skal du nok teste på HTTP headeren. <% if(request.getHeader("User-Agent").equals("miks special browser")) { %> ... <% } %>
23. januar 2004 - 13:15
#2
Det jeg gerne vil er kun at vise denne side hvis mine betingelser er opfyldt :-) <html><!-- .JSP --> <head> <title>Test</title> <link rel="stylesheet" type="text/css" href="./style/styles.css"/> </head> <body> <div class="menuheader">Coloplast<br/>Hovedmenu</div> <br/> <div style="text-align:center;"> <input type="button" class="button" onclick="location.href='./Ordre'" value="Ordre"></button> <br/><br/> <input type="button" class="button" onclick="location.href='./Vaelglagerstatus'" value="Lagerstatus"></button> </div> </body> </html>
23. januar 2004 - 13:20
#3
Så fylder du det ind i min kode der hvor ... er !
23. januar 2004 - 13:21
#4
Og retter user agent til den browser der accepteres.
23. januar 2004 - 13:25
#5
Sådan her? Hvor kan jeg se hvilke værdier jeg kan udskifte miks special browser med? <% if(request.getHeader("User-Agent").equals("miks special browser")) { %> <div class="menuheader">Test<br/>Hovedmenu</div> <br/> <div style="text-align:center;"> <input type="button" class="button" onclick="location.href='./Ordre'" value="Ordre"></button> <br/><br/> <input type="button" class="button" onclick="location.href='./Vaelglagerstatus'" value="Lagerstatus"></button> </div> <% } %>
23. januar 2004 - 13:33
#6
Jeg tænker på hvad jeg skal skrive i denne linie if(request.getHeader("User-Agent").equals("MSIE 6.0")) { Hvis jeg kun vil accepterer mobile enheder :-) Det er jo lidt smartere at accepterer nogle uden at skulle udelukke nogle andre :-)
23. januar 2004 - 13:38
#7
Er der noget jeg har misforstået ?
23. januar 2004 - 13:41
#8
Jeg tror at MSIE 6.0 er argumentet hvis man ellers kun vil accepterer IE 6.0 Jeg vil Jo som sagt kun accepterer mobile IE if(request.getHeader("User-Agent").equals("MSIE 6.0")) {
23. januar 2004 - 13:43
#9
svjv er det ikke muligt at teste på hvilken maskine der bliver brugt og vist heller ikke meningen med user-agent. så medmindre at mobile enheder bruger en meget bestemt browser og deres user-agent er meget speciel så kan du ikke. test op imod out.print(request.getHeader("User-Agent")); med en, så kan du se om den/de adskiller sig fra ie/mozilla etc..
23. januar 2004 - 13:44
#10
Okay :-)
23. januar 2004 - 14:49
#11
Jeps. Test på hvad der står i user agent. Normalt står der operativ system i user agent !
23. januar 2004 - 14:51
#12
Eksempel: "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" for en Windows 2000 med MSIE 5.0 på.
23. januar 2004 - 14:51
#13
Formentlig vil det være mere praktisk med noget indexOf >= 0 end equals hvis du skal understøtte flere versioner af samme browser på samme platform.
23. januar 2004 - 16:50
#15
Det ville være fedt hvis det virkede
23. januar 2004 - 16:52
#16
if(request.getHeader("User-Agent").equals(Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)) {
23. januar 2004 - 16:57
#17
if(request.getHeader("User-Agent").equals("Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0")) { med "" omkring browser navn. Skal virke med lige præcis MSIE 5.01 på Windows 2000 i formentligt US versioner.
23. januar 2004 - 16:58
#18
Har du undersøgt hvad din ipaq browser returnerer i user agent ?
23. januar 2004 - 16:58
#19
Aner det ikke. Hvordan finder jeg ud af det?
23. januar 2004 - 16:59
#20
Som sagt tror jeg mere at du skal satse på noget a la: if(request.getHeader("User-Agent").indexOf("ipaq") >= 0) { fordi så kan du håndtere mange flere strenge.
23. januar 2004 - 17:00
#21
Du sætter bare en: <%=request.getHeader("User-Agent")%> ind i en side og viser den på din ipaq !
23. januar 2004 - 17:01
#22
det lyder rimmeligt, men jeg vil gerne vide hvad jeg f.x skal skrive hvis klienter med f.x IE 6 skal have adgang
23. januar 2004 - 17:02
#23
Jeg er åbenbart ikke for klog :-)
23. januar 2004 - 17:05
#24
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322) er hvad min almindelige browser siger
23. januar 2004 - 17:05
#25
if(request.getHeader("User-Agent").indexOf("MSIE 6.") >= 0) { ville være mit gæt.
23. januar 2004 - 17:13
#26
Virker ovenstående test så ikke ?
23. januar 2004 - 17:27
#27
Jo nu syntes det at virke.
23. januar 2004 - 17:29
#28
Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240*320) er hvad jeg får
23. januar 2004 - 17:31
#29
Men jeg har så stadig ikke forstået hvad jeg skal skrive i if(request.getHeader("User-Agent").indexOf("MSIE 6.") >= 0) {
23. januar 2004 - 21:00
#30
Jeg kan ikke bare skrive så ledes ? if(request.getHeader("User-Agent").equals("MSIE 4.01; Windows CE; PPC; 240x320") >= 0)
23. januar 2004 - 21:04
#31
23. januar 2004 - 21:05
#32
<html> <head> <title>Test</title> <link rel="stylesheet" type="text/css" href="./style/styles.css"/> </head> <body> <%=request.getHeader("User-Agent")%> <% if(request.getHeader("User-Agent").equals("MSIE 4.01; Windows CE; PPC; 240x320")) { %> <div class="menuheader">Test<br/>Hovedmenu</div> <br/> <div style="text-align:center;"> <input type="button" class="button" onclick="location.href='./Ordre'" value="Ordre"></button> <br/><br/> <input type="button" class="button" onclick="location.href='./Vaelglagerstatus'" value="Lagerstatus"></button> </div> <% } %> </body> </html>
23. januar 2004 - 21:08
#33
Det er jo det her jeg skal opfylde, men hvordan :-) MSIE 4.01 Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240x320)
23. januar 2004 - 21:13
#34
.equals("browser streng") bruger du hvis du vil have et eksakt match. .indexOf("del af browser streng") >= 0 bruger du hvis du vil matche noget der indeholder if(request.getHeader("User-Agent").equals("MSIE 4.01; Windows CE; PPC; 240x320")) { matcher lige præcis den. if(request.getHeader("User-Agent").indexOf("Windows CE; PPC;") >= 0) { matcher operativ systemet. if(request.getHeader("User-Agent").indexOf("MSIE 4.01;") >= 0) { matcher browseren.
23. januar 2004 - 21:20
#35
Så siger jeg bare if(request.getHeader("User-Agent").indexOf("MSIE 4.01") >= 0) { Er det godt nok for at holde alle andre ude? eller skal jeg sætte en && på eller hvad?
23. januar 2004 - 21:29
#36
Koden mellem { og } vil så kun blive udført for folk som kører MSIE 4.01
23. januar 2004 - 21:45
#37
OK ?
24. januar 2004 - 00:40
#38
Det er okay
24. januar 2004 - 00:40
#39
Det er jo det som kører på Ipaq'en
24. januar 2004 - 00:41
#40
Jeg ville jo også gerne teste for opløsning
24. januar 2004 - 00:41
#41
Hvordan gør jeg det?
24. januar 2004 - 09:31
#42
Det kan du næppe gøre generelt. Men hvis vi stadig snakker ipaq, så måske: .indexOf("240x320") >= 0 da jeg formoder at det er opløsningen.
24. januar 2004 - 11:01
#43
Så må det vel være noget i den her retning :-) if((request.getHeader("User-Agent").indexOf("MSIE 4.01") >= 0) && (request.getHeader("User-Agent").indexOf("240x320") >= 0){
24. januar 2004 - 11:04
#44
Jep. (der mangler vist en slut parentes men ...)
24. januar 2004 - 11:06
#45
Det gjorde der ja :-) (de er heller ikke lette at holde styr på)
24. januar 2004 - 11:06
#46
Det er lige værd at bemærke til andre som læser denne tråd senere: det er usædvaneligt at oplsøning sendes med.
Kurser inden for grundlæggende programmering