Källkoden för /anders.enges/asp/guestbook.asp
<!--#include file="../inc/navstuff.asp" -->
<!--  #include file="../inc/connection.asp" -->

<%
Function fixaHREF( inHREF)
      if instr(inHREF, "ttp://") <= 0 Then
           fixaHREF = "http://" & inHREF
      Else
           fixaHREF = inHREF
      End if
End Function

' Om vi submitar formen så kommer FROM helst att vara satt
' Detta kan vi kontrollera här
' Vi tar värdena som kommer i URL och sätter in dem i en databas
' Orsaken till den "konstiga" placeringen i filen är att man
' inte kan använda Response.Redirect om man redan skrivit
' till sidan.
' Man skulle kunna sätta Response.Buffer = 1 för att undvika detta
' men det går även att sätta koden tillräckligt tidigt
  If Not IsEmpty(Request("FROM")) Then
      ' SQL satsen för tabellen
      SQL = "SELECT * FROM GUESTBOOK"
      Set Conn = Server.CreateObject("ADODB.Connection")
      Conn.Open strConn
      Set RS = Server.CreateObject("ADODB.RecordSet")
      ' Måste öppna recordsetten för uppdatering = 3 som sista
      ' parameter
      RS.Open SQL, Conn, 1, 3
      ' Kollar vad klockan är nu
      currentTime = now
      ' Sätter in en ny post
      RS.AddNew
      ' tar värdet som kom för FROM från URL med Request
      ' och sätter det i fältet med samma namn
      ' vi upprepar för övriga fält
      RS("FROM") = Request("FROM")
      RS("EMAIL") = Request("EMAIL")
      RS("URL") = Request("URL")
      RS("COMMENT") = Request("COMMENT")
      ' Vi kollar även (utan att de vet det) vilken
      ' IP adress de har samt vilken browser de använder
      RS("IP_ADRESS") = Request.ServerVariables("REMOTE_ADDR")
' RS("BROWSER") = Left(Request.ServerVariables("HTTP_USER_AGENT"),50)
      ' datum skall matas in i formen mm/dd/yyyy hh:mm:ss
      ' för att fungera med alla LCID och lansdinställningar på servern
      RS("DATE") = Month(currentTime) & "/" & _
                     Day(currentTime) & "/" & _
                     Year(currentTime)& " " & _
                     Hour(currentTime) & ":" & _
                     Minute(currentTime) & ":" & _
                     Second(currentTime)
      ' Vi sparar de nya fältvärdena
      RS.Update
      ' Sedan är vi färdiga med denna session
      RS.Close
      Conn.Close
      Set RS = Nothing
      Set Conn = Nothing
      ' Vi visar inte sidan utan "redirectar" till samma sida men
      ' utan några värden på URL raden (Ser snyggare ut!)
      Response.Redirect Request.ServerVariables("URL")
  End If
%>


<!--      Här kan du sätta en normal header med <HTML><HEAD> o.s.v jag inkluderar dock min med de två följande raderna-->



<!--     Om vi klickade på länken "Klicka här för ..." så sätts ?NY=1 till URL Detta märker vi här och visar en form där man kan fylla i sina uppgifter-->
<% 
  if Request("NEW") = 1 Then
%>

<!--  Form för att kunna mata in de nya värdena. -->
<form name="GUEST" method="GET">
<table>
<tr>
      <td>
           Jag är:
      </td>
      <td>
           <input TYPE="TEXT" NAME="FROM" SIZE="40" MAXLENGTH="100">
      </td>
</tr>
<tr>
      <td>
           Email:
      </td>
      <td>
           <input TYPE="TEXT" NAME="EMAIL" SIZE="40" MAXLENGTH="100">
      </td>
</tr>
<tr>
      <td>
           Hemsidan:
      </td>
      <td>
           <input TYPE="TEXT" NAME="URL" SIZE="40" MAXLENGTH="120">
      </td>
</tr>
<tr>
      <td colspan="2">
      <textarea NAME="COMMENT" COLS="60" ROWS="8"></textarea>
      </td>
</tr>
<tr>
      <td colspan="2">
      <!--  Ett trix för att undvika "fula knappar". Kör submit genom href o javascript -->
     
      <a href="javascript:document.GUEST.submit()"><font face="Comic Sans MS,Arial,Helvetica,Univers" size="7">Ok</font></a>
         
      <!--  går tillbaka till huvudlistan -->
      <a href="<%  =Request.ServerVariables("URL") %>"><font face="Comic Sans MS,Arial,Helvetica,Univers" size="7">Tillbaka</font></a>
     
      </td>
</tr>
</table>
</form>
<!--  Formen tog slut -->


<%
  Else
%>

<!--  Hit kommer vi om det inte fanns någonting alls efter filnamnet i URL. Vi visar då en enkel lista-->
<%
' Öppna tabeller och sorter så de nyaste kommer först
' vi visar bara de 20 senaste (TOP 20)
  SQL = "SELECT TOP 20 * FROM GUESTBOOK ORDER BY DATE DESC"
  Set Conn = Server.CreateObject("ADODB.Connection")
  Conn.Open strConn
  ' En simpel forward only duger
  Set RS = Conn.Execute(SQL)

%>

<font face="Comic Sans MS,Arial,Helvetica,univers" size="5">
<a href="<%  =Request.ServerVariables("URL")%>?NEW=1">
<img src="../images/bullet2.gif" border="0" WIDTH="27" HEIGHT="24">
Klicka här för att skriva i min gästbok</a>
</font>
<%
  theRow = 1
  Do While Not RS.EOF
%>

<div align="<%  =getZigZag %>">
<table width="400" border="3" BORDERCOLORLIGHT="#F5F5DC" BORDERCOLORDARK="#BC8F8F">
<tr><td>Mitt namn:</td><td bgcolor="FFFFFF"><%=Server.HTMLEncode(RS("FROM"))%> </td></tr>
<tr><td>Email:</td><td bgcolor="FFFFFF"><%=Server.HTMLEncode(RS("EMAIL"))%> </td></tr>
<tr><td>Hemsida:</td><td bgcolor="FFFFFF"><a href="<%=fixaHREF(Server.HTMLEncode(RS("URL")))%>" target="_new"><%=Server.HTMLEncode(RS("URL"))%></a> </td></tr>
<tr><td colspan="2" bgcolor="FFFFFF"><%=Server.HTMLEncode(RS("COMMENT"))%> </td></tr>
<tr><td width="100">Tid:</td><td bgcolor="FFFFFF"><%=RS("DATE")%> </td></tr>
</table>
</div>
<%
  RS.MoveNext
  Loop
  RS.Close
  Conn.Close
  Set RS = Nothing
  Set Conn = Nothing
%>

<%  End If %>

<%
' Jag tycker om "varannangångs kod" !
Dim zigZag
Function getZigZag()
      if zigZag Then
           getZigZag = "LEFT"
      Else
           getZigZag = "RIGHT"
      End If
      zigZag = Not zigZag
End Function
%>

<!--#include file="../inc/footer.asp" -->