Avatar billede mikmakmuk Nybegynder
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.
Avatar billede arne_v Ekspert
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")) {
%>
...
<%
}
%>
Avatar billede mikmakmuk Nybegynder
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>
Avatar billede arne_v Ekspert
23. januar 2004 - 13:20 #3
Så fylder du det ind i min kode der hvor ... er !
Avatar billede arne_v Ekspert
23. januar 2004 - 13:21 #4
Og retter user agent til den browser der accepteres.
Avatar billede mikmakmuk Nybegynder
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>
<%
}
%>
Avatar billede mikmakmuk Nybegynder
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 :-)
Avatar billede mikmakmuk Nybegynder
23. januar 2004 - 13:38 #7
Er der noget jeg har misforstået ?
Avatar billede mikmakmuk Nybegynder
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")) {
Avatar billede simonvalter Praktikant
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..
Avatar billede mikmakmuk Nybegynder
23. januar 2004 - 13:44 #10
Okay :-)
Avatar billede arne_v Ekspert
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 !
Avatar billede arne_v Ekspert
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å.
Avatar billede arne_v Ekspert
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.
Avatar billede simonvalter Praktikant
23. januar 2004 - 15:13 #14
jeg har fundet en lille liste med lidt forskellige headers hvis det var noget ;)

http://www.pgts.com.au/download/data/browser_list.txt
Avatar billede mikmakmuk Nybegynder
23. januar 2004 - 16:50 #15
Det ville være fedt hvis det virkede
Avatar billede mikmakmuk Nybegynder
23. januar 2004 - 16:52 #16
if(request.getHeader("User-Agent").equals(Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)) {
Avatar billede arne_v Ekspert
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.
Avatar billede arne_v Ekspert
23. januar 2004 - 16:58 #18
Har du undersøgt hvad din ipaq browser returnerer i user agent ?
Avatar billede mikmakmuk Nybegynder
23. januar 2004 - 16:58 #19
Aner det ikke. Hvordan finder jeg ud af det?
Avatar billede arne_v Ekspert
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.
Avatar billede arne_v Ekspert
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 !
Avatar billede mikmakmuk Nybegynder
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
Avatar billede mikmakmuk Nybegynder
23. januar 2004 - 17:02 #23
Jeg er åbenbart ikke for klog :-)
Avatar billede mikmakmuk Nybegynder
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
Avatar billede arne_v Ekspert
23. januar 2004 - 17:05 #25
if(request.getHeader("User-Agent").indexOf("MSIE 6.") >= 0) {

ville være mit gæt.
Avatar billede arne_v Ekspert
23. januar 2004 - 17:13 #26
Virker ovenstående test så ikke ?
Avatar billede mikmakmuk Nybegynder
23. januar 2004 - 17:27 #27
Jo nu syntes det at virke.
Avatar billede mikmakmuk Nybegynder
23. januar 2004 - 17:29 #28
Mozilla/4.0 (compatible; MSIE 4.01; Windows CE; PPC; 240*320) er hvad jeg får
Avatar billede mikmakmuk Nybegynder
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) {
Avatar billede mikmakmuk Nybegynder
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)
Avatar billede mikmakmuk Nybegynder
23. januar 2004 - 21:04 #31
Avatar billede mikmakmuk Nybegynder
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>
Avatar billede mikmakmuk Nybegynder
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)
Avatar billede arne_v Ekspert
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.
Avatar billede mikmakmuk Nybegynder
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?
Avatar billede arne_v Ekspert
23. januar 2004 - 21:29 #36
Koden mellem { og } vil så kun blive udført for folk som kører MSIE 4.01
Avatar billede arne_v Ekspert
23. januar 2004 - 21:45 #37
OK ?
Avatar billede mikmakmuk Nybegynder
24. januar 2004 - 00:40 #38
Det er okay
Avatar billede mikmakmuk Nybegynder
24. januar 2004 - 00:40 #39
Det er jo det som kører på Ipaq'en
Avatar billede mikmakmuk Nybegynder
24. januar 2004 - 00:41 #40
Jeg ville jo også gerne teste for opløsning
Avatar billede mikmakmuk Nybegynder
24. januar 2004 - 00:41 #41
Hvordan gør jeg det?
Avatar billede arne_v Ekspert
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.
Avatar billede mikmakmuk Nybegynder
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){
Avatar billede arne_v Ekspert
24. januar 2004 - 11:04 #44
Jep.

(der mangler vist en slut parentes men ...)
Avatar billede mikmakmuk Nybegynder
24. januar 2004 - 11:06 #45
Det gjorde der ja :-) (de er heller ikke lette at holde styr på)
Avatar billede arne_v Ekspert
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.
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