Yeah baby now it’s lock’n'load BEN is almost ready for going live..
So close that I can taste the soon to come very hard work, for the next couple of months.
Going to be great.
Yeah baby now it’s lock’n'load BEN is almost ready for going live..
So close that I can taste the soon to come very hard work, for the next couple of months.
Going to be great.
Then add this to your IIS’s registry..
1 2 3 4 | Add registry DWord values to HKLM\System\CurrentControlSet\Services\HTTP\Parameters MaxFieldLength 65534 MaxRequestBytes 500000 After adding these values and rebooting the server, all users stopped experiencing HTTP 400 errors. |
And you are home free.
I’m not going to take entirely credit for this minisite, but I found a couple of bugs in it though.. and added some more features with the help from some installed server components. The aspDNS object. the main difference of this minisite is that it doesn’t use the application nor the global.asa files, it purely relies on a database.. which in my opinion is the far best result you, as a webmaster can get..
So here goes -> you can download the script here which will once you unzip the file, give you 4 files.
1 accessdb
3 asp files.
The ones we’re going to change is activeusers.asp and activeusers_stats.asp, and add a couple of more files.
just for the fun of it, so you actually can see what page the user is on and so forth.. sooo let the shooow begin – yiihaa !
activeusers.asp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <% dim onlinedate onlinedate = now() OnlineUserIp = Request.ServerVariables("REMOTE_ADDR") 'Set timeout in minutes strTimeout = 5 'StrOnlineTimedout = DateDiff("n", -strtimeout*60, onlinedate) > strTimeOut'dateadd("n",-strtimeout*60,onlinedate) Set Conn = Server.CreateObject("ADODB.Connection") Conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("activeusers.mdb") Conn.Open StrSql = "Select * From Active_Users Where User_Ip='" & OnlineUserIp & "'" Set Rs1 = Conn.Execute (StrSql) 'Check if users ip exists in active users database if rs1.eof then 'Add user to database because they dont exist StrSql = "INSERT INTO Active_Users (Logon_time,User_ip,Last_Seen,Last_Page) " &_ "VALUES ('" & onlinedate & "','" & OnlineUserIp & "','" & onlinedate & "','" &_ request.servervariables("path_info") & "')" Conn.Execute (StrSql) else 'There Still active so lets update their info StrSql = "UPDATE active_users SET Last_Seen='" & onlinedate & "', Last_Page='" &_ request.servervariables("path_info") & "' WHERE User_ip='" & OnlineUserIp & "'" Conn.execute (StrSql) end if 'Remove Users Who Have Timed Out StrSql = "DELETE FROM active_users WHERE DateDiff(""n"", Last_Seen, now()) > "&strTimeOut conn.execute (StrSql) 'Get Number of Active Users (Finally) set rscount = server.createobject("ADODB.recordset") strSql = "Select * from active_users" rscount.open strSql,Conn,1,1 dim NumActiveUsers NumActiveUsers = rscount.recordcount %> |
And now the time comes to open the hoodidihut for the file activeusers_stats.asp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | <!--#INCLUDE FILE="activeusers.asp" --> <html> <head> <title>Who is online</title> </head> <body bgcolor="#ffffff"> <center> <table width="100%" cellpadding="3" cellspacing="1" bgcolor="#000000"> <tr bgcolor="#C0C0C0"> <td> <center> <font face="arial" size="2"><b>Name</b></font> </center> </td> <td> <center> <font face="arial" size="2"><b>IP-address</b></font> </center> </td> <td> <center> <font face="arial" size="2"><b>Arrival time</b></font> </center> </td> <td> <center> <font face="arial" size="2"><b>Last action</b></font> </center> </td> <td> <center> <font face="arial" size="2"><b>Last clicked URL<b></font> </center> </td> </tr> <% count=0 StrSql="Select * From active_users" Set rs = Conn.execute (StrSql) do while not rs.eof count=count+1 %> <tr bgcolor="#ffffff"> <td><center> <font face="arial" size="2"><% If RS("user_IP") = OnlineUserIp Then Response.Write("*Dig selv") Else Response.Write("Gæst "&count) End If %></font> </center></td> <td><center> <font face="arial" size="2"><% Set DNSLook = Server.CreateObject("AspDNS.Lookup") 'Hostname for en IP-adresse findes! strIPAddr = rs("User_Ip") Response.Write "The hostname for the IP-address <b>" & strIPAddr & "</b> is: " Response.Write DNSLook.ReverseDNSLookup(strIPAddr) & "<br>" 'IP-adresse for et hostname findes! 'strHostName = DNSLook.ReverseDNSLookup(strIPAddr) 'Response.Write "IP-adressen for <b>" & strHostName & "</b> er: " 'Response.Write DNSLook.DNSLookup(strHostName) & "<br>" Set DNSLook = nothing %></font> </center></td> <td><center> <font face="arial" size="2"><%=rs("last_seen")%></font> </center></td> <td><center> <font face="arial" size="2"> <%=datediff("n",rs("logon_time"),now())%> Mins </font> </center></td> <td><center> <font face="arial" size="2"><%=rs("last_page")%></font> </center></td> </tr> <% rs.movenext loop %> </table> <div align="left"><font face="arial" size="2">There currently is <%=NumActiveUsers%> users online at your website</font></div> </center> </body> </html> |
Now you can easyly create all the pages you want, just remember to include the file, in every page you create.
1 | <!--#INCLUDE FILE="activeusers.asp" --> |
And for the part I’ve changed compared to the downloaded version, is the part where the website should delete expired sessions, which doesn’t work in Craig Bovis’s code, is here :
1 2 3 | 'Remove Users Who Have Timed Out StrSql = "DELETE FROM active_users WHERE DateDiff(""n"", Last_Seen, now()) > "&strTimeOut conn.execute (StrSql) |
So there you have it, your very own active users site.. you can ofcourse but some access credentials to access the page activeusers_stats.asp, for this part if interested i’ll be more than happy to publish one more small tut
Back to the code bench…
Cyaaa on the flipside.
Så blev det lige tid til at kode lidt på jobbet igen, denne gang fik jeg en lille opgave som gik ud på at importerer kontaktoplysninger fra vores telefonbog til outlook, jeg har lavet det sådan at dagligt bliver der genereret en accessdb, som indeholder kun de data jeg vil have at brugeren skal se.
Tid til mit kode, som er rimelig enkelt.
generatecsv.asp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | <% Set ConnMDB = Server.CreateObject("ADODB.Connection") FilePath = "c:\inetpub\xxxx\telefonbog.mdb" conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&filepath&";" ConnMDB.Open conStr Response.ContentType = "text/plain;charset=iso-8859-1;" Response.AddHeader "Content-Disposition", "attachment;filename=telefonbog.csv" %> <% SQL = "SELECT * FROM Medarbejder WHERE (((Medarbejder.Initialer)<>'') AND ((Medarbejder.Navn)<>'') AND ((Medarbejder.Afdeling)<>'') AND ((Medarbejder.Telefon)<>'') AND ((Medarbejder.Mobiltelefon)<>''))" SET RS = ConnMDB.Execute(SQL) %>"Titel","Fornavn","Mellemnavn","Efternavn","Suffiks","Firma","Afdeling","Stilling","Gade (arbejde)","Gade 2 (firma)","Gade 3 (firma)","By (arbejde)","Område (arbejde)","Postnummer (arbejde)","Land (arbejde)","Gade (privat)","Gade 2 (privat)","Gade 3 (privat)","By (privat)","Område (privat)","Postnummer (privat)","Land (privat)","Anden gade","Anden gade 2","Anden gade 3","Anden by","Andet område","Andet postnummer","Andet land","Assistentens telefon","Fax (arbejde)","Telefon (arbejde)","Telefon 2 (arbejde)","Tilbagekald","Biltelefon","Primær telefon (firma)","Fax (privat)","Telefon (privat)","Telefon 2 (privat)","ISDN","Mobiltelefon","Anden fax","Anden telefon","Personsøger","Primær telefon","Radiotelefon","TTY/TDD-telefon","Telex","Adresse, postboks (arbejde)","Adresse, postboks (privat)","Adresseserver","Anden adresse, postboks","Assistentens navn","Bruger 1","Bruger 2","Bruger 3","Bruger 4","Børn","E-mail-adresse","E-mail-type","E-mail-vist navn","E-mail 2-adresse","E-mail 2-type","E-mail 2-vist navn","E-mail 3-adresse","E-mail 3-type","E-mail 3-vist navn","Firmanr.","Fødselsdag","Følsomhed","Henvist af","Hobby","Initialer","Kategorier","Konto","Kontoradresse","Køn","Kørte kilometer","Ledig/optaget via internettet","Mærkedag","Navn på overordnet","Notater","Nøgleord","Prioritet","Privat","Profession","Se-nr.","Sprog","Sted","Takstoplysninger","webside","Ægtefælle" <% DO WHILE NOT RS.EOF %>"","<%=RS("Navn")%>","","","","","<%=RS("afdeling")%>","<%=RS("stilling")%>",,,,,,,,,,,,,,,,,,,,,,,,"<%=RS("Telefon")%>",,,,,,,,,"<%=RS("Mobiltelefon")%>",,,,,,,,,,,,,,,,,,,,,,,,,,,,"0-0-00","Normal",,,"",,"",,"Ikke angivet",,,"0-0-00",,,"","Normal","Falsk",,,"","" <% RS.MoveNext Loop RS.Close Set RS = Nothing ConnMDB.Close Set ConnMDB = Nothing %> |
Vola, når man så går ind generatecsv.asp, vil man få en popup om hvor filen skal gemmes.. derefter er den klar til at blive importeret til outlook, husk at vælge ( windows ) ellers vil æøå ikke blive vist…
Bemærk at linie 12 og 13 er komprimeret, det er fordi hvis du laver bare et lille mellemrum undenfor asp koden, går outlook i baglås og lukker ned
tsk tsk ms..
Happy coding
I forbindelse med et lille projekt jeg har gang i, har jeg sat mig for at kode et lille rating system, som man ser på diverse sider såsom youtube mf.
Og da de fleste der er derude er lavet i php, tænkte jeg oh well.. hvorfor ikke lave sådan et lign. system bare i asp classic, så mig kode kode kode osv vuuuullaaa så er den i vinkel.
Hvis der er andre derude som sidder og tænker, hvordan hulen man laver dette, vil jeg dele det
Dette er hvad du skal bruge.
2 filer ( index.asp og update.asp )
1 database med 1 tabel ( underordnet om det er en accessdb eller mysql, mssql mf. )
1 billede ( alt_star.gif )
Og så skal det ellers liiiige i ovnen i ca. 45 min ved 37 grader, og vupti et stk rating system er klart.
index.asp :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | <% Set Conn = Server.CreateObject("ADODB.Connection") Set FileOBJ = Server.CreateObject("Scripting.FileSystemObject") FilePath = "d:/xxxxxxxxx/databaserating.mdb" If FileOBJ.FileExists(FilePath) Then conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&filepath&";" Conn.Open conStr End If SQL = "SELECT * FROM Rating WHERE id=1" Set RS = Conn.Execute(SQL) result = ROUND(RS("voteValue") / RS("voteTotal"),1) %> <a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"> http://www.w3.org/1999/xhtml" <!-- /* styles for the star rater */ .star-rating{ list-style:none; margin: 0px; padding:0px; width: 125px; height: 25px; position: relative; overflow:hidden; background: url(alt_star.gif) top left repeat-x; } .star-rating li{ padding:0px; margin:0px; /*\*/ float: left; /* */ } .star-rating li a{ display:block; width:25px; height: 25px; line-height:25px; text-decoration: none; text-indent: -9000px; z-index: 20; position: absolute; padding: 0px; overflow:hidden; } .star-rating li a:hover{ background: url(alt_star.gif) left bottom; z-index: 2; left: 0px; border:none; } .star-rating a.one-star{ left: 0px; } .star-rating a.one-star:hover{ width:25px; } .star-rating a.two-stars{ left:25px; } .star-rating a.two-stars:hover{ width: 50px; } .star-rating a.three-stars{ left: 50px; } .star-rating a.three-stars:hover{ width: 75px; } .star-rating a.four-stars{ left: 75px; } .star-rating a.four-stars:hover{ width: 100px; } .star-rating a.five-stars{ left: 100px; } .star-rating a.five-stars:hover{ width: 125px; } .star-rating li.current-rating{ background: url(alt_star.gif) left center; position: absolute; height: 25px; display: block; text-indent: -9000px; z-index: 1; } /* remove halo effect in firefox */ a:active{ outline: none; } --> |
<h3>Rating:</h3> <ul class="star-rating"> <li><a href="update.asp?rating=1&imgID=<%=RS(">" title='1 star out of 5' class='one-star'></a></li> <li><a href="update.asp?rating=2&imgID=<%=RS(">" title='2 stars out of 5' class='two-stars'></a></li> <li><a href="update.asp?rating=3&imgID=<%=RS(">" title='3 stars out of 5' class='three-stars'></a></li> <li><a href="update.asp?rating=4&imgID=<%=RS(">" title='4 stars out of 5' class='four-stars'></a></li> <li><a href="update.asp?rating=5&imgID=<%=RS(">" title='5 stars out of 5' class='five-stars'>5</a></li> </ul> <%=result%>/5 Stjerner. baseret på <%=RS("voteTotal")%> ratings
Update.asp :
<% Set Conn = Server.CreateObject("ADODB.Connection") Set FileOBJ = Server.CreateObject("Scripting.FileSystemObject") FilePath = "d:/xxxxxx/databaserating.mdb" If FileOBJ.FileExists(FilePath) Then conStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&filepath&";" Conn.Open conStr End If SQLupdate = "UPDATE rating SET voteTotal=voteTotal+1,voteValue=voteValue+"&Request.QueryString("rating")&" WHERE id="&request.QueryString("imgID") Conn.Execute(SQLupdate) 'response.Write("rating ikke tom") Response.Redirect("index.asp") %>
Sådan skal din Database se ud :
id - primær nøgle - autonummerering voteTotal - tal voteValue - tal
Har du nogle spørgsmål til dette lille rating system så bare fyre afsted med nogle kommentarer.
Denne kan sagtens udvides, sådan at der f.eks. er tjek på om der divideres med 0, kun muligt at vote én gang ifa. f.eks. cookies – ipadresse
En af mine kammerater, stod og havde brug for at køre et scheduleret job på hans server, som henter data fra en accessdb.
Hvilket lyder rimelig nemt, dog problemet er bare at han har ikke en IIS til tilrådighed eller andre muligheder for at køre noget automatiseret SQL.. så derfor fik han lige lidt hjælp
løsningen er at bruge VBscripting som køre hurtigt og smertefrit..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | dim temp temp = Main dim conn Function Main() Set Conn = CreateObject("ADODB.Connection") Mdb = "orgDiagram.mdb" Conn.Open "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" & Mdb & ";" DoIt conn.Close Set conn = Nothing End Function Sub DoIt dim sql dim rsOpg MsgBox "Er kramfutten på isen ?" Set rsOpg = CreateObject("ADODB.Recordset") rsOpg.CursorType = 2 ' adOpenDynamic rsOpg.CursorLocation = 3 ' adUseClient rsOpg.LockType = 3 ' adLockOptimistic rsOpg.Open "select * from members where userID=1", conn Do while Not rsOpg.EOF msgBox("Titel: "&rsopg("Titel")) rsOpg.MoveNext Loop rsOpg.Close Set rsOpg = Nothing End Sub |
Ovenstående vil også virke over et netværk, man ændre bare variablen MDB til UNC stien hvor ens mdb fil er placeret..
Well.. Det har længe været et problem med at holde ens session i live, og sjovt nok findes der ikke ret meget på google om hvordan man holder sin session i live under asp classic.. jeg bruger selv en måde som virker p…. godt
det bærer selvfølgelig nogle konsekvenser over at holde ens session i live, og det kan IKKE anbefales at gøre det uden sikkerhed. Men da man jo nødig vil have at ens brugere går amok over at f.eks. “nu har jeg lige siddet og brugt så meget tid på at skrive det her… og hvad sker der, jeg blev også liiiigggeeee mæ d’ vuns logget af siden, og skal nu til at starte heeeeeeelllllltttt forfra grrr”trada da da.. den fikser vi liiige sådan her :
Først har du et lille login system, hvor du har en session der hedder userID.
Herefter laver du 2 alm. html frames, lad os kalde dem top og bottom, herefter giver du top 100% i højde og bottom 0%
I top framen har du aaalt dit indhold på sitet.. meeen i bottom har du denne lille “snippet”
1 2 3 4 5 6 7 8 9 10 11 12 | <html> <head> <title>Bottom</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta HTTP-EQUIV="Refresh" CONTENT="550"> <link href="stylesheet.css" mce_href="stylesheet.css" rel="stylesheet" type="text/css"> </head> <body bgcolor="#FFFFFF"> <% Session("userID") = Session("userID") %> </body> </html> |
Og hvad gør det så lige for mig ?
Jo ser du
den refresher bottom – som ikke er i brug og brugeren kan ikke se den hvert 10 min ca. – hence – jeg har sat den til 9 min. men normalen er 20 min, men da en af mine kunders webhoteller har sat deres server til at sessioner skal dø efter 10 min, må jeg nøjes med 9 min.
Hvorfor placere den i bottom ?
Fordi hvis jeg placere den i top, refresher den heeeleee sitet, og så ryger brugerens data..
Yeah så lykkedes det at få recaptcha til at virke.. nu skal den bare lige styles lidt med css osv. og lidt bedre server kode, og så er den klaret ![]()
for de interesserede kan man se den demo af den færdige kode her : capmycha
I og med at der er flere og flere bots der besøger mine kunders og nogle egne websites, som prøver at oprette annoncer eller udfylde en kontakt formular. Må jeg kigge efter alternativer og forbedre min sikkerhed på de sites jeg har lavet og har gang i, derfor kigger jeg lidt nærmere på captcha ( Completely Automated Public Turing test to tell Computers and Humans Apart ). En gammel kending, men har ikke haft brug for dette før nu og især efter et af disse nye webprojekter jeg har gang i, bliver det en nødvendighed.. Så jeg støvsuger lige webbet lidt for at finde minus og plus sider af denne teknologi. den eneste som virker til at bare køre i olie er recaptcha.net den er blevet tjekket for ocr / bots og ikke blevet knækket endnu
samt så er det gratis at bruge, hvilket passer mig perfekt.. det eneste minus jeg har er at der er ikke så god support for et asp classic plugin, lige bortset fra et eksempel de har på deres site.
Så min plan er at omskrive dette sådan det kommer til at passe til mine kunder samt mine nye webprojekter
Mit eksempel der skal omskrives, dog skal jeg lige have oprettet en konto hos dem, sådan at jeg kan få min “public key” yeah.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <% ' returns string the can be written where you would like the reCAPTCHA challenged placed on your page function recaptcha_challenge_writer(publickey) recaptcha_challenge_writer = "<script type=""text/javascript"">" & _ "var RecaptchaOptions = {" & _ " theme : 'white'," & _ " tabindex : 0" & _ "};" & _ "</script>" & _ "<script type=""text/javascript"" src="" mce_src=""<a href="http://api.recaptcha.net/">http://api.recaptcha.net/</a> challenge?k=" & publickey & """></script>" & _ "<noscript>" & _ "<iframe src="" mce_src=""<a href="http://api.recaptcha.net/noscript?k">http://api.recaptcha.net/noscript?k</a>=" & publickey & """ frameborder=""1""></iframe><br>" & _ "<textarea name=""recaptcha_challenge_field"" rows=""3"" cols=""40""></textarea>" & _ "<input type=""hidden"" name=""recaptcha_response_field"" value=""manual_challenge"">" & _ "</noscript>" end function function recaptcha_confirm(privkey,rechallenge,reresponse) ' Test the captcha field Dim VarString VarString = _ "privatekey=" & privkey & _ "&remoteip=" & Request.ServerVariables("REMOTE_ADDR") & _ "&challenge=" & rechallenge & _ "&response=" & reresponse Dim objXmlHttp Set objXmlHttp = Server.CreateObject("Msxml2.ServerXMLHTTP") objXmlHttp.open "POST", "<a href="http://api-verify.recaptcha.net/verify">http://api-verify.recaptcha.net/verify</a>", False objXmlHttp.setRequestHeader "Content-Type", "application/x-www-form- urlencoded" objXmlHttp.send VarString Dim ResponseString ResponseString = split(objXmlHttp.responseText, vblf) Set objXmlHttp = Nothing if ResponseString(0) = "true" then 'They answered correctly recaptcha_confirm = "" else 'They answered incorrectly recaptcha_confirm = ResponseString(1) end if end function %> |
Tilbare til kodebordet….Som en side ting, kan man her se en lille liste over de captcha’s der er hacket.
CSS er en herlig sag når det virker.. ![]()
har siddet idag og leget lidt med at lave skins til tekstboxe inklusiv textarea’s. Det er i bund og grund nemt nok, når man selvfølgelig lige ved hvordan det skal gøres.
Måden at gøre det på er i hårde træk. i ens grafik program ( jeg bruger photoshop ) udarbejder du din textbox, lav den lidt størrer sådan at det kommer til at passe med cursor osv. Derefter laver du noget css kode ala dette :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | .fieldHolder { width: 194px; height: 27px; background: url(images/inputback.jpg) no-repeat; float: left; } .fieldAreaHolder { width: 195px; height: 135px; background: url(images/inputTextback.jpg) no-repeat; float: left; } .textAreaInput { font-family: Verdana, sans-serif; font-size: 11px; font-style: normal; line-height: normal; font-weight: normal; font-variant: normal; text-transform: none; color: #000000; width: 185px; height: 123px; background: none; border: none; color: #000000; margin-top: 5px; margin-left: 5px; } .textInput2 { font-family: Verdana, sans-serif; font-size: 11px; font-style: normal; line-height: normal; font-weight: normal; font-variant: normal; text-transform: none; color: #000000; width: 170px; height: 22px; background: none; border: none; color: #000000; margin-top: 5px; margin-left: 5px; } |
Bemærk at width og height skal passe med størrelsen på dine grafikfiler, ellers kommer det til at ligne noget ged..
Og din HTML :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <form name="form1" method="post" action="">
<table width="98" border="0" align="right" cellpadding="3" cellspacing="5">
<tr>
<td><div class="fieldHolder"><input name="email" type="text" id="email" size="30" value="Indtast din email adresse" class="textinput2" maxlength="50" onFocus="if(this.value=='Indtast din email adresse')this.value='';" onBlur="if(this.value=='')this.value='Indtast din email adresse';"></div></td>
</tr>
<tr>
<td><div class="fieldHolder"><input name="navn" type="text" id="navn" size="30" value="Indtast dit navn" class="textInput2" maxlength="50" onFocus="if(this.value=='Indtast dit navn')this.value='';" onBlur="if(this.value=='')this.value='Indtast dit navn';"></div></td>
</tr>
<tr>
<td><div class="fieldAreaHolder"><textarea name="besked" cols="25" rows="10" wrap="virtual" class="textAreaInput" id="besked" onFocus="if(this.value=='Indtast en besked')this.value='';" onBlur="if(this.value=='')this.value='Indtast en besked';">Indtast en besked</textarea>
</div></td>
</tr>
<tr>
<td><div align="right">
<input name="Afsend" type="image" id="Afsend" src="images/ButtonAfsend.jpg" mce_src="images/ButtonAfsend.jpg" alt="Afsend" name="Afsend" <%=ImageStyle%>>
</div></td>
</tr>
</table>
</form> |
Tagget <%=ImageStyle%> bruger jeg til at tilføje noget opacity filter på mine knapper, sådan at man ikke skal til at bruge flere grafikfiler.. hvilket kommer til at virke træg når man holder musen over knapper, i sær for dem med små internetforbindelser.
onFocus og onBlur sørger for at den initial value der står i ens tekstfelter, bliver fjernet når cursor’n er i feltet og tilføjet igen når cursor’n er væk fra feltet pretty neat
Ovenstående er testet på den seneste firefox og ie.
Latest comments