Avatar billede slasher_x Novice
01. august 2004 - 14:56 Der er 23 kommentarer og
1 løsning

Fejl i gæstebog!

Jeg har rodet lidt med en gæstebog, som desværre ikke helt fungerer! så derfor håber jeg i kan hjælpe mig...

Gæstebogen skriver informationer til en fil
-------------------------------------------------------
guestbook.asp:

<% @LANGUAGE = VBScript %>

<% ' Demonstrating File System Objects
  Option Explicit
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns = "http://www.w3.org/1999/xhtml">

  <head>
      <title>GuestBook Example</title>

      <style type = "text/css">
        hr    { size: 1; color: blue }
        table { text-align: center }
        td    { font-size: 12pt }
        p    { font-size: 14pt; color: blue }
        .font { font-family: arial, sans-serif }
      </style>
  </head>
  <body bgcolor="#D9D9D9">
<center>
<%
  Dim fileObject, textFile, guestBook, mailtoUrl

  ' get physical path for this ASP page and
  ' concatenate guestbook.txt to it
  guestbook = Request.ServerVariables( "APPL_PHYSICAL_PATH" ) _
      & "\guestbook.txt"

  ' instantiate a FileSystemObject
  Set fileObject = Server.CreateObject( _
      "Scripting.FileSystemObject" )

  ' check if this request is after the user has posted the form
  If Request( "hiddenInput" ) = "true" Then

      ' print a thank you
      Call Response.Write( "Tak for din kommentar, " & _
        Request( "username" ) & "!" )
%>   
      <hr />
<%
      ' build the mailtoUrl
      mailtoUrl = Date() & " <a href = " & Chr( 34 ) _
        & "mailto:" & Request( "email" ) & Chr( 34 ) _
        & ">" & Request( "username" ) & "</a>:  "


      ' open the guestbook, 8 is for appending
      ' create the guestbook if it does not exist
      Set textFile = fileObject.OpenTextFile( guestbook, 8, True )

      ' write data to guestbook.txt
      Call textFile.WriteLine( "<hr />" & mailtoUrl & _   
        Request( "comment" ) )
      Call textFile.Close()           
  End If
%>
 
      <p>L&aelig;g venligst en kommentar i vores g&aelig;stebog</p>

      <!-- write form to the client -->
      <form action = "guestbook.asp" method = "post">
        <table>
            <tr>
              <td>navn:  </td>
              <td><input class = "font"
                          type = "text" size = "60"
                          name = "username" /></td>
            </tr>

            <tr>
              <td>e-mail adresse:</td>
              <td><input class = "font"
                          type = "text" size = "60"
                          name = "email"/>
              </td>
            </tr>

            <tr>
              <td>Kommentar:  </td>
              <td><textarea name = "comment" rows = "3"
                            cols = "50"></textarea></td>
            </tr>
        </table>

        <input type = "submit" value = "send" />
        <input type = "reset" value = "slet" />
        <input type = "hidden" name = "hiddenInput"
                value = "true" />
      </form>

<%
    ' check if the file exists
    If fileObject.FileExists( guestBook ) = True Then


      ' open the guestbook, "1" is for reading
      Set textFile = fileObject.OpenTextFile( guestbook, 1 )

      ' read the entries from the file and write them to
      ' the client.
      Call Response.Write( "Kommentarer i g&aelig;stebogen:<br />" & _
          textFile.ReadAll() )
      Call textFile.Close()

    End If
%>

  </body>

</html>
-----------------------------------------------------------------
Jeg får følgende fejl fra serveren:

Technical Information (for support personnel)

Error Type:
Scripting.FileSystemObject.1 (0x80070005)
You are not permitted to access a file which is not located within your ASP application's root.
/guestbook/guestbook.asp, line 53

-----------------------------------------------------------------

nogen der har en løsning? jeg er desværre temmelig noob til ASP, så løsninger må gerne skæres ud i pap!

Mikael
Avatar billede slasher_x Novice
01. august 2004 - 15:01 #1
linie 53: Set textFile = fileObject.OpenTextFile( guestbook, 8, True )
Avatar billede KingMedia Novice
01. august 2004 - 15:57 #2
Prøv i stedet for det her

' get physical path for this ASP page and
  ' concatenate guestbook.txt to it
  guestbook = Request.ServerVariables( "APPL_PHYSICAL_PATH" ) _
      & "\guestbook.txt"


at ændre det til

' get physical path for your site root and
  ' concatenate guestbook.txt to it
  guestbook = Server.MapPath("/") & "\guestbook.txt"


/Mads
Avatar billede KingMedia Novice
01. august 2004 - 15:59 #3
det kan endda være at det skal ændres til


  guestbook = Server.MapPath("/") & "\guestbook\guestbook.txt"


hvis det er det forrige svar der skal virke, skal du placere guestbook.txt i roden af dit site..

hvis det er dette der skal virke skal du placere guestbook.txt i "/guestbook/" mappen

/MAds
Avatar billede slasher_x Novice
01. august 2004 - 16:03 #4
ok! jeg prøver det lige...
Avatar billede slasher_x Novice
01. august 2004 - 16:16 #5
det virker ikke! samme fejl....
Avatar billede KingMedia Novice
01. august 2004 - 16:19 #6
hvor ligger dit webhotel ?

prøv at lave en asp fil, og kun skriv følgende.

<%= Server.MapPath("/") & \Guestbook.txt %>

og smid resultatet herinde.

/Mads
Avatar billede slasher_x Novice
01. august 2004 - 16:19 #7
og desuden, så sku den jo selv oprette guestbook.txt hvis den ikke eksisterer!!!
Avatar billede KingMedia Novice
01. august 2004 - 16:19 #8
hov.. 

<%= Server.MapPath("/") & "\Guestbook.txt" %>

skal det selvfølgelig være :)
Avatar billede slasher_x Novice
01. august 2004 - 16:21 #9
b-one.....

Error Type:
Sun ONE ASP VBScript compilation (0x800A03EA)
Syntax error, unexpected "\\"
/guestbook/test.asp, line 1, column 38
Avatar billede KingMedia Novice
01. august 2004 - 16:26 #10
ok .. så prøv i stedet

<%= Request.ServerVariables( "APPL_PHYSICAL_PATH" )& "\guestbook.txt" %>

/Mads
Avatar billede slasher_x Novice
01. august 2004 - 16:36 #11
da jeg skrev: <%= Server.MapPath("/") & "\Guestbook.txt" %>

fik jeg følgende resultat:
/customers/haunstrup-nielsen.dk/haunstrup-nielsen.dk/httpd.www\Guestbook.txt
Avatar billede slasher_x Novice
01. august 2004 - 16:38 #12
samme resultat med
<%= Request.ServerVariables( "APPL_PHYSICAL_PATH" )& "\guestbook.txt" %>
Avatar billede KingMedia Novice
01. august 2004 - 16:42 #13
så prøv at ændre det til

' get physical path for your site root and
  ' concatenate guestbook.txt to it
  guestbook = Server.MapPath("/") & "/guestbook.txt"
Avatar billede KingMedia Novice
01. august 2004 - 16:42 #14
i dit script altså, og se om det virker :)

/Mads
Avatar billede slasher_x Novice
01. august 2004 - 16:45 #15
hmm... Error Type:
Sun ONE ASP VBScript runtime (0x800A003E)
Past end of file
/guestbook/guestbook.asp, line 104

Hvad skete der der??
Avatar billede KingMedia Novice
01. august 2004 - 16:45 #16
prøv at lave en guestbook.txt fil, og bare skriv eks. "hej"  i den ..
Avatar billede slasher_x Novice
01. august 2004 - 16:47 #17
hvor skal den placeres?
Avatar billede slasher_x Novice
01. august 2004 - 16:54 #18
det virker!! dog mærkeligt at der skal være skrevet noget i guestbook.txt før den virker...Hmm

Skriv et svar så får du point...
Avatar billede KingMedia Novice
01. august 2004 - 16:58 #19
ja..  synes også det lyder underligt :)

Her er et svar

/Mads
Avatar billede slasher_x Novice
01. august 2004 - 17:06 #20
tak for hjælpen :)
Avatar billede eagleeye Praktikant
01. august 2004 - 20:52 #21
dog mærkeligt at der skal være skrevet noget i guestbook.txt før den virker...Hmm

Nej  det er ikke mærkeligt, hvis filen er tom vil AtEndOfStream være true når filen åbens og enhver read når AtEndOfStream er true vil give en fejl. Presis den fejl du har vist: 01/08-2004 16:45:10
Avatar billede slasher_x Novice
02. august 2004 - 15:53 #22
ok! jeg havde bare fået at vide at dette stykke kode selv ville oprette guestbook.txt hvis den ikke eksisterede??? så derfor synes jeg det var mærkeligt at man selv var nødt til både at oprette filen og også skrive noget i den....
Avatar billede eagleeye Praktikant
02. august 2004 - 17:51 #23
Det gør koden også, kodne opretter filen og ligger data i den nye fil så den ikke er tom. Koden kunne måske ikke oprette filen pga. af rettigheder til den folder filen skulle ligge i.

Når du selv opretter filen har du kun udført det "havle" af hvad koden gør. Koden tjekker ikke på om filen er tom før den udskriver fra filen men kun om den findes. Der er stor forskel på om en fil ikke findes eller der findes en tom fil.

Da du havde en tom fil, finder koden filen og forsøger at udskrive alt fra filen unden noget tjek, og at læse fra en tom fil giver en fejl.
Avatar billede slasher_x Novice
02. august 2004 - 19:25 #24
så forstår jeg det bedre! tak for det klare svar :)
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