Avatar billede axl_rose Nybegynder
27. juni 2006 - 18:54 Der er 34 kommentarer

Opret mappe på server

Hej
Jeg skal have et script der ud fra en form opretter en mappe på min server og opretter nogle filer i den. Altså det er fordi jeg vil have et bloghost op og køre er der nogen der kan hjælpe mig?

Altså oprette mappe
derfeter oprette nogle filer
er det en fordel at bruge xml eller gemme brugernes blogs i en mdb evt.??

Anyone?
Avatar billede madeindk Nybegynder
27. juni 2006 - 19:07 #1
Jeg kender ikke så meget til .xml - så jeg ved ikke om det er positivt eller bedre.

Men jeg kan dog hjælpe dig med at få oprettet en mappe på serveren :-)

<%
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

' Tjekker først om mappen allerede eksistrer
If Not objFSO.FolderExists("C:\FooBar") then
  objFSO.CreateFolder("C:\FooBar")
End If
%>
Avatar billede axl_rose Nybegynder
27. juni 2006 - 19:11 #2
Kan du evt. bygge det sammen med at oprette tabel i en database og oprette nogen filer i den mappe?
Avatar billede madeindk Nybegynder
27. juni 2006 - 19:12 #3
Hvilke nogen filer vil du ha oprettet i mappen?
Avatar billede axl_rose Nybegynder
27. juni 2006 - 19:17 #4
Det skal være bloghosting så der skal vel være en administrationsfil hvor man kan tilføje, slette og redigere  blog beskeder og så en forside og ja andre sider ved jeg ikke...
Avatar billede axl_rose Nybegynder
27. juni 2006 - 19:28 #5
Jeg har fundet frem til nogle filer som burde være grundlag for sådan en blog kan man bruge dem eller???
Avatar billede fennec Nybegynder
28. juni 2006 - 08:32 #6
Jeg vil til hver en tid fortrække en DB løsning. Det giver dig mange flere muligheder (f.eks søgning), og er også hurtigere at arbejde med.
Avatar billede axl_rose Nybegynder
28. juni 2006 - 10:15 #7
Okay.. fair  nok, men kan du sætte noget sammen?
Avatar billede fennec Nybegynder
28. juni 2006 - 11:28 #8
Det kommer an på hvor advanceret din blog skal være. Skal man kunne indsætte billeder, ændre skrifttype osv er vi over i et CMS system, og du skal have fat i en editor til at skrive i (F.eks TinyMCE). Desudne er der alle de andre ting man evt skal kunne (billedgalleri...)

En simpel tekstblog til EN person kan laves på få minutter, da det fungere næsten som en gæstebog. Et flere bruger system tager lidt ekstra tid, da der skal brugeradministration ind over.

Afhængig af hvor advanceret den skal være, kan der forskelle på hvordan jeg ville opbygge det, så hvis du nu fortalte os hvad du specifik ønsker, man skal kunne, kan vi bedre vejlede dig :o)
Avatar billede axl_rose Nybegynder
28. juni 2006 - 11:51 #9
Okay :-)

En bruger kan oprette sig via hjemmesiden
og dermed oprettes der en mappe på serveren med personens valgte brugernavn
Navn, Email, Brugernavn, Password og en profil

Når man er oprettet kan man logge ind og skrive i sin blog og ja gerne fra en teksteditor og også gerne et billedgalleri.

Jeg skal jo så som adog ministrator kunne holde øje med brugerne og slette blogs hvis de ikke overholder reglerne eller lign.
Avatar billede axl_rose Nybegynder
28. juni 2006 - 11:54 #10
men jeg tænker på er det ikke en fordel at brugerens blog beskeder gemmes i en unik xml fil der oprettest i mappen, det gør det jo nemmere!??
Avatar billede fennec Nybegynder
28. juni 2006 - 12:35 #11
Brug en DB. Det er klart det nemmest:

[Bruger tabel]
ID, navn, Brugernavn, Password

[Blogs tabel]
ID, userID, dato, BlogTekst
Avatar billede fennec Nybegynder
28. juni 2006 - 12:41 #12
Denne kode bruges så til at opdatere ens blog med. UserID'et skal bare hentes ud fra en sessionvariabel som oprettes på en logindside:

<%
userID = 123
if Request.querystring("mode") = "save" then
    blogText = replace(Request.Form("blog"),"'","''")
    conn.execute("insert into Blogs(userID, dato, BlogTekst) values("& userID &",now(),'"& blogText &"')")
    response.redirect("denneSide.asp")
end if
%>

<form name="myForm" method="post" action="denneSide.asp?mode=save">
<textarea name="blog" cols="40" rows="4"></textarea><br>
<input type="Submit" value="Gem">
</form>
Avatar billede axl_rose Nybegynder
28. juni 2006 - 13:14 #13
Okay fedt..

Kan jeg så bruge denne til login, hvordan skal det flettes sammen?
<%
' Hvis der er blevet trykket på knappen "Login"
If Request.Form("Action") = "Login" Then
  ' Her forberedes de indtastede værdier til validering
  strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
  strPWD = Trim(Replace(Request.Form("Adgangskode"),"'",""))

  ' Hvis der er skrevet noget i både brugernavn og adgangskode
  If Len(strUID) > 0 And Len(strPWD) > 0 Then

    ' DSNLess forbindelse til databasen
    Set myConn = Server.CreateObject("ADODB.Connection")
    myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("login_2000.mdb")

    ' Opbygning af SQL streng
    strSQL = "SELECT UserID FROM Users"&_
      " WHERE (Username = '" & strUID & "')"&_
      " AND (Password = '" & strPWD & "')"

    Set rs = myConn.Execute(strSQL)
    If Not (rs.BOF Or rs.EOF) Then
      ' Hvis brugeren fandtes i databasen
      intUID = rs("UserID")
    Else
      ' Hvis brugeren ikke fandtes i databasen
      strERR = "Du blev ikke godkendt af systemet"
    End If

    ' Rydder op i vores connection objekt
    myConn.Close
    Set myConn = Nothing

    If Len(intUID) Then
      ' Hvis variablen intUID indeholder en værdi sættes denne i sessionen "UserID" og brugeren bliver sendt videre
      Session("UserID") = intUID
      Response.Redirect("beskyttet.asp")
    End If
  Else
    ' Hvis der ikke var angivet brugernavn og adgangskode
    strErr = "Du skal skrive både brugernavn og adgangskode"
  End If

  If Len(strErr) > 0 Then
    ' Her laves fejlmeddelsen om til rød skrift
    strErr = "<p><font color=red>" & strErr & "</font></p>"
  End If
End If
%>
<html><head>
<title>Login script</title>
</head><body>

<form method="POST" action="login.asp">
<p><font size="4">Angiv brugernavn og adgangskode</font></p><%=strErr%>
<table border="0">
<tr>
<td width="50%">Brugernavn:</td>
<td width="50%"><input type="text" name="Brugernavn" size="20"> (test)</td>
</tr>
<tr>
<td width="50%">Adgangskode:</td>
<td width="50%"><input type="password" name="Adgangskode" size="20">
(test)</td>
</tr>
</table>
<p><input type="submit" value="Login" name="Action"></p>
</form>

</body></html>

og ja hvordan med oprettelses scriptet?
Avatar billede axl_rose Nybegynder
28. juni 2006 - 13:16 #14
Vil det være en fordel hvis når der oprettes en ny bruger også oprettes en ny tabel eller skalder bare oprettest en ny kolonne?
Avatar billede axl_rose Nybegynder
28. juni 2006 - 13:36 #15
Jeg har lige lavet form feltet om til en teksteditor se en test på

www.krellers.dk/bloghost/denneSide.asp men nu er det bare login og oprettelses side...
Avatar billede fennec Nybegynder
28. juni 2006 - 13:53 #16
Du har brugerID'et til at ligge i Session("UserID"):
userID = Session("UserID")

Og da du allerede har en brugertabel, skal du bare have oprette Blogs tabellen.
Avatar billede axl_rose Nybegynder
28. juni 2006 - 13:56 #17
Er ikke helt med :)... Hvordan oprettes brugeren i Bruger tabellen
Avatar billede axl_rose Nybegynder
28. juni 2006 - 14:03 #18
Har prøvet mig lidt frem og er kommet frem til dette:

denneSide.asp -->
<%
If isEmpty(Session("ID")) Then
  Response.Redirect("login.asp")
End If
%>
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("db/db_s.mdb; password=")
Conn.Open DSN
%>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>Ny side 1</title>
</head>
<script language="JavaScript" type="text/javascript" src="wysiwyg.js">
</script>


<body>
<%
userID = Session("ID")
if Request.querystring("mode") = "save" then
    blogText = replace(Request.Form("blog"),"'","''")
    conn.execute("insert into Blogs(userID, dato, BlogTekst) values("& userID &",now(),'"& blogText &"')")
    response.redirect("denneSide.asp")
end if
%>

<form name="myForm" method="post" action="denneSide.asp?mode=save">
<textarea name="blog" cols="40" rows="4"></textarea>
<script language="javascript1.2">
  generate_wysiwyg('blog');
</script>
<br>
<input type="Submit" value="Gem">
</form>
</body>

</html>


login.asp -->
<%
' Hvis der er blevet trykket på knappen "Login"
If Request.Form("Action") = "Login" Then
  ' Her forberedes de indtastede værdier til validering
  strUID = Trim(Replace(Request.Form("Brugernavn"),"'",""))
  strPWD = Trim(Replace(Request.Form("Password"),"'",""))

  ' Hvis der er skrevet noget i både brugernavn og adgangskode
  If Len(strUID) > 0 And Len(strPWD) > 0 Then

    ' DSNLess forbindelse til databasen
    Set myConn = Server.CreateObject("ADODB.Connection")
    myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db/db_s.mdb")

    ' Opbygning af SQL streng
    strSQL = "SELECT ID FROM Bruger"&_
      " WHERE (Brugernavn = '" & strUID & "')"&_
      " AND (Password = '" & strPWD & "')"

    Set rs = myConn.Execute(strSQL)
    If Not (rs.BOF Or rs.EOF) Then
      ' Hvis brugeren fandtes i databasen
      intUID = rs("ID")
    Else
      ' Hvis brugeren ikke fandtes i databasen
      strERR = "Du blev ikke godkendt af systemet"
    End If

    ' Rydder op i vores connection objekt
    myConn.Close
    Set myConn = Nothing

    If Len(intUID) Then
      ' Hvis variablen intUID indeholder en værdi sættes denne i sessionen "UserID" og brugeren bliver sendt videre
      Session("ID") = intUID
      Response.Redirect("denneSide.asp")
    End If
  Else
    ' Hvis der ikke var angivet brugernavn og adgangskode
    strErr = "Du skal skrive både brugernavn og adgangskode"
  End If

  If Len(strErr) > 0 Then
    ' Her laves fejlmeddelsen om til rød skrift
    strErr = "<p><font color=red>" & strErr & "</font></p>"
  End If
End If
%>
<html><head>
<title>Login script</title>
</head><body>

<form method="POST" action="login.asp">
<p><font size="4">Angiv brugernavn og adgangskode</font></p><%=strErr%>
<table border="0">
<tr>
<td width="50%">Brugernavn:</td>
<td width="50%"><input type="text" name="Brugernavn" size="20"> (test)</td>
</tr>
<tr>
<td width="50%">Adgangskode:</td>
<td width="50%"><input type="password" name="Password" size="20">
(test)</td>
</tr>
</table>
<p><input type="submit" value="Login" name="Action"></p>
</form>

</body></html>

Så er der oprettelses siden tilbage...
Avatar billede fennec Nybegynder
28. juni 2006 - 14:16 #19
Oprettelse af en ny bruger:

<%
if Request.querystring("mode") = "save" then
    user = replace(Request.Form("Navn"),"'", "''")
    pass = replace(Request.Form("Navn"),"'", "''")
    conn.execute("insert into Users(Username , Password) values('"& user &"','"& pass &"')")
    response.redirect("nyBrugerSide.asp")
end if
%>

<form name="myForm" method="post" action="nyBrugerSide.asp?mode=save">
Navn: <input type="Text" name="Navn" value=""><br>
Password: <input type="Text" name="Pass" value=""><br>
<input type="Submit" value="Gem">
</form>
Avatar billede fennec Nybegynder
28. juni 2006 - 14:17 #20
Der var lige en klip/klistre fejl :o)
pass = replace(Request.Form("Pass"),"'", "''")
Avatar billede axl_rose Nybegynder
28. juni 2006 - 14:28 #21
Wauw.. det virker nu...!!! tilføjer lige nogle ekstra oprettelses felter :-), men der er bare en ting det skal jo være sådan at brugeren skal kunne finde sin blog ved at indtaste f. eks krellers.dk/testperson/

dvs. at oprettelses processen skal som jeg også skriver oprette en mappe...!
Avatar billede axl_rose Nybegynder
28. juni 2006 - 15:10 #22
Wuhuu har formået at lave så den opretter en mappe, ændret lidt i opret koden så det ser således ud:
<%
if Request.querystring("mode") = "save" then
    user = replace(Request.Form("User"),"'", "''")
    pass = replace(Request.Form("Pass"),"'", "''")
    navn = replace(Request.Form("navn"),"'", "''")
    email = replace(Request.Form("email"),"'", "''")
    landsdel = replace(Request.Form("landsdel"),"'", "''")
    conn.execute("insert into Bruger(Brugernavn , Password , navn , email , landsdel) values('"& user &"','"& pass &"','"& navn &"','"& email &"','"& landsdel &"')")
  %>
<%
Dim mappe
mappe = request.form("User")

dim fs,f
set fs=Server.CreateObject("Scripting.FileSystemObject")
set f=fs.CreateFolder("c:\webs\talkactive\web27545\dev.haveviseren.dk\" & mappe )
set f=nothing
set fs=nothing

%>
<%
response.redirect("opret.asp")
end if
%>
Avatar billede fennec Nybegynder
28. juni 2006 - 15:25 #23
Der løber du bare i problemer hvis brugernavnet allerede er taget. Så du skal nok lave et tjek på det inden du gemmer:
...
set rs = conn.execute("select * from Bruger where Brugernavn='"& user &"'")
if rs.eof then
  response.write "Brugernavnet er allrede taget."
  response.end
end if
conn.execute("insert into Bruger(Brugernavn , Password , navn , email , landsdel) values('"& user &"','"& pass &"','"& navn &"','"& email &"','"& landsdel &"')")
Avatar billede fennec Nybegynder
28. juni 2006 - 15:26 #24
Der var lige en lille fejl :o)

if NOT rs.eof then
Avatar billede fennec Nybegynder
28. juni 2006 - 15:34 #25
Dernæst skal du have flyttet en index.asp/default.asp fil ind i mappen du lige har oprettet, som viser brugerens blog. Her ville det være rigtig smart, hvis du fik lavet en fil, som læser mappenavnet, og derved kan slå brugernavnet op i databasen. På den måde kan du nemlig bruge den samme fil i alle mapper, og du kan derfor lade FSO kopiere en master-fil til mappen i samme omgang som mappen bliver lavet.

Det må være noget med at klippe i server.mappath(".") for at trække brugeren ud.
temp = split(server.mappath("."),"\")
username = temp(uBound(temp))
Avatar billede axl_rose Nybegynder
28. juni 2006 - 16:15 #26
Jeg har et problem jeg får denne fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/blog.asp, line 66

Når jeg f.eks skriver blog.asp?BID=1151501716

filen ser således ud:
<html>
<title>Hente data fra database</title>
<head>
<link rel="stylesheet" type="text/css" href="includes/style-css/stylepaper.css">
<link rel="stylesheet" type="text/css" href="includes/style-css/stylepaper-css-back.css">
</head>
<body>
<dl>
<%
' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("db/db_s.mdb")
Conn.Open DSN
%>
<table border="0" width="605" height="27" bgcolor="#F5F4F0">
    <tr>
        <td height="23" width="842"><font size="6" face="BankGothic Lt BT">&nbsp;BLog
        navn</font></td>
    </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" id="table1" width="605" height="40">
    <!-- MSTableType="layout" -->
    <tr>
        <td valign="top" height="40" width="605">
        <!-- MSCellType="ContentBody" -->
        <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%" id="table2">
            <!-- MSCellFormattingTableID="2" -->
            <tr>
                <td width="20">
                <img alt="" src="images/MsoPnl_Cnr_tl_236.gif" width="20" height="20"></td>
                <td bgcolor="#9FB321" nowrap width="100%">
                <!-- MSCellFormattingType="header" -->
                &nbsp;</td>
                <td height="20" width="20">
                <img alt="" src="images/MsoPnl_Cnr_tr_23A.gif" width="20" height="20"></td>
            </tr>
            <tr>
                <td valign="top" bgcolor="#9FB321" colspan="3" height="100%">
                <!-- MSCellFormattingType="content" -->
                &nbsp;</td>
            </tr>
        </table>
        </td>
    </tr>
</table>
<table border="0" width="605" height="6" bgcolor="#FFFFFF">
    <tr>
        <td height="2" width="836">
       
       
        </td>
    </tr>
</table>
<table border="0" width="605" height="16" bgcolor="#FFFFFF" style="border-collapse: collapse; border-style: solid; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px">
    <tr>
        <td height="16" width="445" rowspan="3">
        <p></p>
        <p><br>
        <table border="0" width="435" height="114" bgcolor="#FFFFFF">
    <tr>
        <td height="22" width="423" style="padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px">
<%
' Hent fra databasen afhængig af værdien id fra URL
strSQL = "Select * From Blogs Where userID = " & Request.Querystring("BID")
Set rs = Conn.Execute(strSQL)
Do
  BlogOverskrift = "" & rs("BlogOverskrift") & ""
  BlogTekst = "" & rs("BlogTekst") & ""
  dato = "" & rs("dato") & ""
  navn = "" & rs("navn") & ""
   
%>
        <br>
        <%dato%><p><%BlogOverskrift%></td>
    </tr>    <tr>       
        <td height="3" width="423" style="border-bottom: 1px dotted #DADADA; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px">
        </td>
    </tr>
    <tr>
        <td height="2" width="429"><%BlogTekst%></td>
    </tr>
    <tr>
        <td height="21" width="429">Skrevet Af: <%navn%></td>
    </tr>
</table>
<%
rs.MoveNext
Loop While Not rs.EOF
%>
        </td>
        <td height="23" width="150" valign="bottom" style="border-bottom: 1px solid #9FB321; padding-left: 4px; padding-right: 4px; padding-top: 1px; padding-bottom: 1px" colspan="2">
&nbsp;Menu</td>
    </tr>
    <tr>
        <td height="2" width="150" valign="top" colspan="2"></td>
    </tr>
    <tr>
        <td height="45" width="4" valign="top">&nbsp;</td>
        <td height="45" width="150" valign="top">Forside<br>
        Billeder<br>
        Kontakt</td>
    </tr>
</table>
<table border="0" cellpadding="0" cellspacing="0" id="table19" width="605" height="34">
    <!-- MSTableType="layout" -->
    <tr>
        <td valign="top" height="34" width="605">
        <!-- MSCellType="ContentBody" -->
        <table cellpadding="0" cellspacing="0" border="0" width="100%" height="100%" id="table20">
            <!-- MSCellFormattingTableID="3" -->
            <tr>
                <td valign="top" bgcolor="#FFFFFF" colspan="3" height="100%">
                <!-- MSCellFormattingType="content" -->
                &nbsp;</td>
            </tr>
            <tr>
                <td width="20">
                <img alt="" src="images/MsoPnl_Cnr_bl_349.gif" width="20" height="20"></td>
                <td nowrap bgcolor="#FFFFFF" width="100%">
                <!-- MSCellFormattingType="footer" -->
                &nbsp;</td>
                <td height="20" width="20">
                <img alt="" src="images/MsoPnl_Cnr_br_34B.gif" width="20" height="20"></td>
            </tr>
        </table>
        </td>
    </tr>
</table>
<table border="0" width="605" height="27" bgcolor="#F5F4F0">
    <tr>
        <td height="27" width="830">(c) Alle Rettigheder Forbeholdes CarArt |
        Krellers.dk 2006</td>
    </tr>
</table>
<%
Conn.Close
Set Conn = Nothing
%>

</dl>
</body>
</html>

Linei er 66 er = Set rs = Conn.Execute(strSQL)
Avatar billede axl_rose Nybegynder
28. juni 2006 - 16:19 #27
<%
dim fs
set fs=Server.CreateObject("Scripting.FileSystemObject")
fs.CopyFile "c:\mydocuments\web\*.htm","c:\webpages\"
set fs=nothing
%>

Vil bruge denne til at kopiere den fil...!
Avatar billede axl_rose Nybegynder
28. juni 2006 - 16:20 #28
Kunne du evt. uddybe den der med mappen..  Hvordan og hvorledes det gøres?
Avatar billede fennec Nybegynder
28. juni 2006 - 16:24 #29
Hvilken datatype er userID i Blogs tabellen??
Avatar billede axl_rose Nybegynder
28. juni 2006 - 16:25 #30
Den er tekst skal den ikke være det den for jo værdien fra login? og bruger tabellen?
Avatar billede fennec Nybegynder
28. juni 2006 - 16:29 #31
Med:
temp = split(server.mappath("."),"\")
username = temp(uBound(temp))

kode skulle du gerne få navnet på den mappe som filen ligger i. Jeg har ikke testet det, men det kan du jo gøre :o)

Ved at smide filen i brugermappen, får du selvfølgelig bruger navnet, og det kan du bruge til at slå ID'et op i DB:

temp = split(server.mappath("."),"\")
username = temp(uBound(temp))
set rs = conn.execute("select userID from Bruger where Brugernavn='"& username &"'")
if rs.eof then
  response.write "Bruger ikke fundet"
  response.end
else
  userID = rs("userID")
end if

set rs = conn.execute("select * from blogs where userID="& userID &" order by dato desc")
while not rs.eof
  response.write rs("tekst") &"<br><br>"
  rs.MoveNext
wend
Avatar billede fennec Nybegynder
28. juni 2006 - 16:30 #32
Er userID i brugertabellen også tekst?? Er det ikke et autonummer??
Avatar billede axl_rose Nybegynder
01. juli 2006 - 00:02 #33
<%
dim fs,f
set fs=Server.CreateObject("Scripting.FileSystemObject")
set f=fs.GetFile("c:\asp\test\test.asp")
Response.Write("The file test.asp is in the folder: ")
Response.Write(f.ParentFolder)
set f=nothing
set fs=nothing
%>

Vil man ikke kunne bruge den til at sende brugeren til den rette nside når man skriver mappen..?
Avatar billede fennec Nybegynder
03. juli 2006 - 09:34 #34
Det vil nok virke. Det er også en pænere kode en min...
Hvorfor tænkte jeg ikke selv på det :o)
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