<< Föregående: Inledning | Nästa: ASP-koden i default.asp >> | ||||||
Filen skriv.asp – bara ASP-kodDen här filen kommer aldrig att visas för besökaren. Därför behöver den ingen HTML-kod alls. I stället är det här det mesta av jobbet utförs och allt som skrivs här är ASP-kod. SkriptavgränsarnaAll ASP-kod skall inledas och avslutas med ASP-skriptavgränsare. Sätt in ett <% längst upp i filen och ett %> längst ned. Det är mellan dessa skriptavgränsare du skriver all kod. Avgränsarna är mycket viktiga – varje försök att "glömma bort" dem leder omedelbart till körfel. KommentarerEn mycket god regel är att kommentera koden – hellre för många kommentarer än för få. Anledningen är helt enkelt att man glömmer vad man har gjort och varför. Nybörjarprogrammerare tror ofta inte på det här. "Jag som är ung och frisk och stark och har en välsmord hjärna – jag glömmer inte alls!" Erfarna programmerare vet att det inte är så. Alla glömmer, oavsett hur pigg hjärnan är. Alltså: kommentera i massor. Du kommer att ha glädje av det när du senare försöker läsa din kod, hitta felen i den (felsökning är en stor del av allt programmerande), förstå hur du har tänkt, lista ut vad de många kodraderna egentligen gör... I ASP-kod kan du skriva kommentarer på två sätt. Antingen skriver du kommentaren på en egen rad som inleds med ett enkelt citationstecken – enkelfnutt. Exempel: 'Det här är en kommentarsrad Eller också lägger du kommentaren på samma rad som koden men i slutet, även då med enkelfnutt. Exempel: Dim strDatabas 'Innehåller databasens lagringsplats och namn Ett bra sätt att samla kommentarer är det här, som Microsoft rekommenderar: '************************************* Det här gör det lätt att se kommentarerna i koden, utan att behöva leta för mycket. Konventioner för namngivning av variablerJag skall bara helt kort nämna detta med prefix för variabler. Prefixen är inte nödvändiga, men du har nytta av dem när du skall läsa och förstå din kod. I din kod kommer du att behöva ett antal variabler. En del av dem skall innehålla textsträngar, andra innehåller talvärden eller till exempel datum. Genom att konsekvent använda prefix till variabelnamnet ser du lätt vilken typ variabeln är. Ett exempel är variabeln strDatabas som jag använde ovan – str betyder här att variabeln innehåller en textsträng. Några andra exempel: bln = booleanskt värde (sant eller falskt) skriv.aspNog med pekpinnar – vi kastar oss raskt in i ASP-koden till skriv.asp i stället. Jag kommer att gå igenom koden uppifrån och ned en bit i taget, och efter varje avsnitt förklarar jag vad avsnittet gör (och varför).
Förklaringar Filen inleds med skriptavgränsaren <% som är ett absolut krav. Sedan använder vi metoden Server.CreateObject för att skapa ett filsystemobjekt, som vi behöver för att kunna skriva till och läsa från textfilen. Objektet får prefixet fso för att vi direkt skall kunan se att det är just ett filsystemobjekt. Nästa steg blir att tala om för skriptet var textfilen finns. Som du ser i kommentarerna måste textfilen du anropar redan finnas och den måste dessutom innehålla någonting – om så bara ett mellanslag. Men vi kan utnyttja det här kravet till något mycket bättre. Jag återkommer till detta i avsnittet Snygga till textfilen. I koden ser du två olika metoder för att ange sökvägen till textfilen. Den första – den som är "bortkommenterad" – använder du om textfilen skall ligga utanför din rotkatalog på servern, så att den blir hyggligt oåtkomlig för angrepp utifrån (den kommer ju att innehålla e-postadresser). Ta i så fall kontakt med supporten på ditt webbhotell och fråga vilken adress du skall använda. Den kan till exempel se ut så här: g:/inetpub/mer_text/mer_text/mer_text.domän Ta bort enkelfnutten i början av raden och sätt i stället en enkelfnutt i början av följande rad: Set strFilObjekt = fsoMinFil.GetFile(Server.Mappath("gester.txt") i stället. Så länge du provkör din gästbok hemma på datorn och utan att vara uppkopplad, måste du använda metoden med Server.MapPath(). Annars kommer skriptet inte att fungera. Våra första variablerI det här första kodavsnittet har vi angett våra första variabler – fsoMinFil och strFilObjekt. Prefixet på den senare visar att det är en variabel som skall innehålla en textsträng, och den textsträngen kommer att bestå av sökvägen till textfilen. Server.MapPath()Server är ett objekt i ASP och MapPath("url") är en metod för detta objekt. Genom att skriva så här får vi den fullständiga, fysiska sökvägen till och filnamnet på den resurs som finns på den adress som anges mellan citationstecknen – i det här fallet vår textfil. Vår variabel strFilObjekt tilldelas alltså värdet "sökvägen till textfilen och textfilens namn".
Förklaringar Vi skall nu öppna vår textfil och läsa in allt som redan finns i den. Vi använder metoden OpenAsTextStream, som gör att vi kan läsa från och skriva till filen. Vi skapar ett TextStream-objekt – tsObjekt – och talar om vad det skall göra, nämligen använda filen vars sökväg finns i strFilObjekt och öppna den som TextStream. Sedan skapar vi en ny strängvariabel – strTidigareInlagg – för att fylla den med allt som tidigare finns skrivet i textfilen. Detta gör vi för att senare, när textfilen får ett nytt inlägg, kunna placera alla tidigare inlägg efter det nya inlägget. Vi talar om att den nya strängvariabeln som en textsträng (CStr) skall ta in allt som finns i filen (tsObjekt) och läsa in filen som en enda sträng (ReadAll). Därmed har vi allt som textfilen innehåller sparat i en enda variabel. FormuläretNu skall vi sysselsätta oss med de uppgifter som kommer från formuläret på sidan default.asp. Observera att kodraderna här bryts till flera rader på en del ställen. Kopiera koden härifrån så att du undgår dessa felaktiga radbrytningar. Mycket av koden som har med formuläret att göra skulle kunna förkortas och/eller förenklas. Men jag gör inte det – i stället låter jag den vara litet onödigt lång för att det skall bli lättare att förstå vad den gör. Jag har kommenterat koden rikligt för att det skall bli enklare att särskilja de olika funktionerna. Alla dessa kommentarer behöver du naturligtvis inte ta med i din egen kod, men de skadar inte heller!
Förklaringar Om besökaren har skrivit in sin e-postadress och/eller hemsidesadress, kommer ASP-koden att skriva HTML-kod för dessa så att det skapas länkar till adresserna. Om besökaren inte har angett dessa uppgifter, skapas inte ens raderna för e-post- och hemsideslänkar. Men när länkkoden skall skrivas, kräver både HTML-kod och ASP-kod en hel del citationstecken, vilket betyder att det kommer två eller flera citationstecken i rad. Här blir det viktigt att hålla ordning på fnuttarna! Request-objektetRequest-objektet gör att vi får tillgång till det som besökaren gör på webbsidan. Objektet har fem "samlingar" och av dem skall vi använda Form, som gör att vi får tillgång tll det som har skrivits i ett formulär vars METHOD-attribut är satt till POST. Flera nya strängvariablerVi behöver nu en rad nya variabler för att hantera innehållet i de olika delarna av formuläret.
De båda första variablerna skall alltid ha ett innehåll. Att de har det kontrollerade vi först på default.asp med hjälp av javaskriptet och sedan i skriv.asp med hjälp av if-satserna ovan. Men de båda sista variablerna skall vi särbehandla. Om besökaren inte skrev in e-postadress eller hemsidesadress, vill vi att variablerna skall vara tomma, så att de inte skriver ut någonting på sidan. Titta på de båda kodblock som följer efter 'Hämta innehållet i epost. Den första raden har samma form som när det gäller namnet och inlägget. Men sedan kommer två rader med den första delen av ett villkor: If strNy_epost = "E-postadress" Then Det här betyder: Om (If) strNy_epost innehåller det som stod i formuläret redan när sidan laddades, nämligen "E-postadress", har besökaren inte skrivit in en e-postadress. I så fall skall strängvariabeln strNy_epost lämnas helt tom (""). I annat fall (Else), det vill säga om besökaren har skrivit en e-postadress, skall variabeln få det innehåll som finns i formulärets "e_post". Egentligen behöver vi inte upprepa den här raden som jag har gjort i koden, men vi gör det ändå för tydlighetens skull. Else-delen börjar alltså med att ge strNy_epost det värde som fanns i formuläret. Sedan skall detta värde placeras i HTML-kod, för att skapa en länk. Därför gör vi här om strNy_epost så att den kommer att innehålla både HTML-koden och besökarens e-postadress, samt en text som skall visas i länken: Skriv till mig. HTML-koden skall innehålla "E-post:" i fetstil följt av ett mellanslag ( ). Sedan följer på samma rad länken till e-postadressen med länktexten Skriv till mig. Efter länken lägger vi in en radmatning <BR>. Allt detta samlar vi ihop och stoppar in i variabeln strNy_epost. Vi kommer att använda den längre ned. Glöm för all del inte att avsluta villkorskoden med ett "End if". På samma sätt behandlar vi variabeln strNy_hemsida. Men vi skall sätta ett extra villkor på den här variabeln. Trots att du har talat om i formuläret att man inte skall skriva in http://, kommer en del besökare att göra det. I dessa fall skulle länken till besökarens hemsida inte fungera, eftersom den skulle börja med http://http://. Alltså kontrollerar vi om hemsidesvaribelns innehåll börjar med http:// eller HTTP:// och tar i så fall bort de 7 första tecknen ur variabeln. Koda tecken som skulle kunna ställa till problemEfter villkorskoden följer två rader som byter ut potentiellt problematiska tecken mot deras HTML-motsvarigheter. Men när detta är gjort byter vi ut de enterslag besökaren har gjort mot radmatningar i html-kod, för att "nytt stycke" verkligen skall bli nytt stycke. Därmed har våra fyra strängvariabler fått det innehåll de skall ha och vi kan fortsätta.
Förklaringar Först gör vi en ny strängvariabel – strNytt_inlagg. I den skall vi samla allt det som skall skrivas till textfilen, och vi gör det i rätt ordning:
Därmed har strNytt_inlagg fått hela det innehåll som skall skrivas till textfilen. Nu gör vi det.
Förklaringar Det som händer här är att det skapas en helt ny och tom textfil, med samma namn som den gamla textfilen. Den gamla textfilen kommer helt enkelt att skrivas över, men innehållet i den filen har du redan sparat i variabeln strNytt_inlagg, där det har placerats efter det nya inlägget. När filen har skapats, skrivs innehållet i strNytt_inlagg till filen. I och med detta finns all text och all kod som skall skrivas på default.asp i textfilen. Det som nu återstår är att stänga de öppna objekten och gå tillbaka till sidan default.asp. Det gör vi med den avslutande kodsnutten. Glöm inte att sätta in den avslutande skriptavgränsaren %>.
Nu har du hela koden till skriv.asp. Spara filen – sedan skall vi fortsätta med ASP-koden som skall finnas på default.asp. | |||||||
<< Föregående: Inledning | Nästa: ASP-koden i default.asp >> | ||||||
© SupportData.Net |