Avatar billede basementjack Nybegynder
27. juli 2004 - 22:43 Der er 115 kommentarer og
1 løsning

Billede galleri med beskyttet adgang

Jeg søger en tutorial eller en guide i hvordan man laver sit eget billede galleri, hvor man kan tildele brugernavne og password til dem, som skal se det. På en _sikker_ måde.

Helst i Vb.Net (mellemadvancet)... Hvis det er C#, må det være i den helt lette ende.
Avatar billede snepnet Nybegynder
27. juli 2004 - 22:57 #1
Er det fordi du gerne vil prøve at lave det selv, eller skal du bare have noget der fungerer - og som er gratis ?

Hvis du gerne vil have tips... hvordan havde du så forestillet dig at galleriet skulle fungere ?

Skal man f.eks. bare initialisere med en path, og så genereres der thumbnails der smides ud til klienten med links til de "rigtige" billeder, eller hvor meget havde du forestillet dig skulle fikses af en eventuel komponent ?

Mht. til det med brugeradgangen. Skal det så være mere avanceret end at der bare skal gives adgang til en bruger til applikationen generelt, eller skal det være f.eks. imagefolder/type/?

Man kan ret hurtigt finde en hel del færdige gallerier, der koster helt ned til 5 dollar, og der er sikkert også nogle der er gratis rundt omkring.
Avatar billede basementjack Nybegynder
27. juli 2004 - 23:08 #2
Det er mest fordi jeg vil prøve at lave noget selv, men tror det er lidt for tidligt for mig.. Så jeg søger mest et færdiglavet et jeg kan pille af hinanden og få til at passe til mig...

Det jeg havde tænkt mig var:
Jeg indtaster user,password
Req. sendes til database
Database returner nogle billeder-id'er
Billeder-id'er gemmes i Session
Redirect til ny side

Ny side:
Henter billeder-id'er fra session
Benyttes i en asp:repeater som bruger billeder-id'erne på formen, <img href="billede.aspx?id=117" />

Og hvis ville det være fedt hvis man kunne få billede.aspx til at sørge at den kun kan tilgåes fra "ny side"...
Avatar billede guidmaster Nybegynder
27. juli 2004 - 23:15 #3
Tak evt. et kig på http://www.ngallery.org/
Avatar billede snepnet Nybegynder
27. juli 2004 - 23:16 #4
Ok - det var jo sådan set rimelig ukompliceret. Det er ikke ret mange linier kode du skal bruge til det.
Avatar billede basementjack Nybegynder
27. juli 2004 - 23:17 #5
Der har jeg været og kigge.. De har så vidt jeg kunne se ikke noget password beskyttelse.. Og det ville da være fedest, hvis man lavede det selv.. :)
Avatar billede snepnet Nybegynder
27. juli 2004 - 23:17 #6
hov - du kan jo lige kigge på det link du fik.
ellers kan jeg godt lave et skelet til dig, men det bliver ikke før imorgen desværre. Jeg er på vej i æsken.
Avatar billede basementjack Nybegynder
27. juli 2004 - 23:17 #7
Snepnet - Simpelt er bedst.. :)
Avatar billede basementjack Nybegynder
27. juli 2004 - 23:18 #8
Det ville være fint snepnet.. Skel jeg forvente det i C# eller VB.Net?..
Avatar billede snepnet Nybegynder
27. juli 2004 - 23:19 #9
huuh... jeg er ikke ret gode venner med VB er jeg bange for, men de par linier det drejer sig om skulle du nok kunne oversætte. Ellers tror jeg faktisk jeg har en oversætter liggende hvis det skulle være.
Avatar billede basementjack Nybegynder
27. juli 2004 - 23:21 #10
Jeg har oz fundet en oversætter på nettet.. Men den laver heller ikke ret meget andet end at erstatte ting 'End' med '}'.. Og ja, jeg oversætter bare selv..
Så sidder vi et skelet sådan en af dagene, det haster, man har vel ferie.. :)
Sov godt
Avatar billede snepnet Nybegynder
27. juli 2004 - 23:24 #11
Takker... jeg laver det imorgen :o)
Vi skrive ved.
Mvh
Avatar billede guidmaster Nybegynder
28. juli 2004 - 00:06 #12
Mht til nGalley så har de password beskyttelse med, men du har nok ret i at det er for stort et projekt at sætte sig ind i ;)
Avatar billede basementjack Nybegynder
28. juli 2004 - 19:49 #13
Hold da k*ft hvor var jeg træt igår... Skrev kl 23.21:30  :
Så sidder vi et skelet sådan en af dagene, det haster, man har vel ferie.. :)
Skulle have været :
Så siger vi et skelet sådan en af dagene, det haster ikke, man har vel ferie endnu.. :)
Avatar billede snepnet Nybegynder
28. juli 2004 - 21:30 #14
Hehe.... jeg er lige kommet hjem - en lang dag kan man sige :o)
Er du på ?
Avatar billede basementjack Nybegynder
28. juli 2004 - 21:31 #15
Jo det kan man godt.. :) I hvert fald halvt.. :P
Avatar billede snepnet Nybegynder
28. juli 2004 - 21:36 #16
:o) - jeg henter lige en pizza, og så har jeg lidt at starte med til dig.
Avatar billede basementjack Nybegynder
28. juli 2004 - 21:36 #17
Det lyder fair nok..
Avatar billede snepnet Nybegynder
28. juli 2004 - 21:59 #18
Godt så...
For simplest mulig adgangskontrol får du lige en web.config her :

<?xml version="1.0" encoding="utf-8" ?>
<configuration>   
  <system.web>
    <compilation defaultLanguage="c#" debug="true" />
    <customErrors mode="RemoteOnly" />

    <authentication mode="Forms">
    <forms name=".BMJACKLOGIN" loginUrl="LogIn.aspx" >
        <credentials passwordFormat="Clear">
            <user name="basement" password="jack"/>
        </credentials>
    </forms>
    </authentication>

    <authorization>
        <deny users="?" />
    </authorization>

    <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />

    <sessionState
            mode="InProc"
            stateConnectionString="tcpip=127.0.0.1:42424"
            sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
            cookieless="false"
            timeout="20"
    />

    <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> 
</system.web>
</configuration>
Avatar billede snepnet Nybegynder
28. juli 2004 - 22:00 #19
læg mærke til at den redirecter til login.aspx, som kommer her :

<%@ Page language="c#" Codebehind="LogIn.aspx.cs" AutoEventWireup="false" Inherits="basementjack.LogIn" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>LogIn</title>
        <meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
        <meta content="C#" name="CODE_LANGUAGE">
        <meta content="JavaScript" name="vs_defaultClientScript">
        <meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
    </HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            <asp:TextBox id="txtUserName" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 16px"
                runat="server"></asp:TextBox>
            <asp:TextBox id="txtPass" style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 48px" runat="server"></asp:TextBox>
            <asp:Button id="btnLogIn" style="Z-INDEX: 103; LEFT: 176px; POSITION: absolute; TOP: 16px" runat="server"
                Text="LogIn" Height="56px" Width="88px"></asp:Button>
            <asp:Label id="lblMessage" style="Z-INDEX: 104; LEFT: 16px; POSITION: absolute; TOP: 80px"
                runat="server"></asp:Label></form>
    </body>
</HTML>


Med en code-behind som denne :

using System;
using System.Web.Security;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace basementjack
{
    /// <summary>
    /// Summary description for LogIn.
    /// </summary>
    public class LogIn : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.TextBox txtUserName;
        protected System.Web.UI.WebControls.TextBox txtPass;
        protected System.Web.UI.WebControls.Button btnLogIn;
        protected System.Web.UI.WebControls.Label lblMessage;
   
        override protected void OnInit(EventArgs e)
        {
            InitializeComponent();
            base.OnInit(e);
        }
       
        private void InitializeComponent()
        {   
            this.btnLogIn.Click += new System.EventHandler(this.btnLogIn_Click);
            this.Load += new System.EventHandler(this.Page_Load);
        }

        private void btnLogIn_Click(object sender, System.EventArgs e)
        {
            if (FormsAuthentication.Authenticate(txtUserName.Text, txtPass.Text))
                FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false);
            else
                lblMessage.Text="Invalid Credentials: Please try again";
        }
    }
}
Avatar billede snepnet Nybegynder
28. juli 2004 - 22:01 #20
Skriver du ikke når du har fået det til at køre ?
Avatar billede basementjack Nybegynder
28. juli 2004 - 22:02 #21
Jo.. Tester lige igennem..
Avatar billede snepnet Nybegynder
28. juli 2004 - 22:05 #22
Du skal oprette dig en ekstra side også... princippet er så at hvis du prøver at gå ind på den, vil du blive bedt om at logge ind via login.aspx.
Når du så indskriver rigtige oplysninger - bliver du redirected til den side du oprindelig bedte om.
Avatar billede basementjack Nybegynder
28. juli 2004 - 22:13 #23
Jeg sad længe og kiggede på koden.. Og da jeg kørte det første brokkede den sig også over jeg kiggede på...
Could not load type 'basementjack.LogIn'.
Det er denne linie:
<%@ Page language="c#" Codebehind="LogIn.aspx.cs" AutoEventWireup="false" Inherits="basementjack.LogIn" %>
Avatar billede snepnet Nybegynder
28. juli 2004 - 22:16 #24
Det er et namespace-problem.
Det er fordi mit projekt her hedder basementjack (og øverste namespace kommer til at hedde det samme som standard), men du har sikkert kaldt dit noget andet :o)
Bare skift det ud med det du har kaldt det.
Avatar billede basementjack Nybegynder
28. juli 2004 - 22:20 #25
Er det ikke i .aspx.cs filen :

...

using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace basementjack
{
    /// <summary>
    /// Summary description for LogIn.
....

Der bestemmer at der skal stå basementjack ?..
For jeg har copypastet alt det du skrev ind..
Avatar billede basementjack Nybegynder
28. juli 2004 - 22:21 #26
Btw.. Jeg bruger altså notepad og webmatrix her..
Avatar billede snepnet Nybegynder
28. juli 2004 - 22:27 #27
Nå for hede hule .... det er noget skidt - så er der jo nok nogle småting der bliver lidt mere besværlige :o)
Det er ikke så meget jeg har arbejdet i webmatrix.
Det er nok det nemmeste hvis du bare laver en almindelig side i webmatrix, og så paster det væsentlige ind.

Det er jo kun konfigurationsfilen og de her par linier der er interesante indtil videre :

            if (FormsAuthentication.Authenticate(txtUserName.Text, txtPass.Text))
                FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false);
            else
                lblMessage.Text="Invalid Credentials: Please try again";
Avatar billede basementjack Nybegynder
28. juli 2004 - 22:28 #28
Ja.. Jeg prøver lige at lave det så..
Avatar billede basementjack Nybegynder
28. juli 2004 - 22:40 #29
Vil teste på mit webhotel.. Men web.config vil ikke siger at jeg ikke må se hvilken fejl det.. Men gætter på det er samme fejl..
Forstår ikke hvorfor den ikke vil "load type" basementjack.LogIn...
Avatar billede snepnet Nybegynder
28. juli 2004 - 22:42 #30
er du sikker på at den er kompileret ind i assemblien ?

Hvis du vil se fejlene kan du sætte
<customErrors mode="RemoteOnly" />
til
<customErrors mode="Off" />
i web.config
Avatar billede basementjack Nybegynder
28. juli 2004 - 22:43 #31
Den er ikke komplieret... (hvis det da er hvor man laver det til en .dll)
Avatar billede snepnet Nybegynder
28. juli 2004 - 22:56 #32
Du må bare bygge dit projekt op i webmatrix... Det med at den prøver at loade noget er fordi det er angivet i dit pagedirective, der som standard ser sådan her ud når du laver en side i webmatrix:
<%@ Page Language="C#" %>

Metoder kan du bare kopiere ind i din kode, og hvis du skal bruge f.eks. Page_Load skriver du den bare ind.... Som standard bliver sådan en som den wired automatisk.
Avatar billede basementjack Nybegynder
28. juli 2004 - 22:57 #33
Okay.. Prøver det..
Avatar billede basementjack Nybegynder
28. juli 2004 - 23:01 #34
Okay.. Nu har vi i login.aspx :

-----------
<%@ Page Language="c#" %>
<script runat="server">

    Imports System;
    Imports System.Web.Security;
    Imports System.Collections;
    Imports System.ComponentModel;
    Imports System.Data;
    Imports System.Drawing;
    Imports System.Web;
    Imports System.Web.SessionState;
    Imports System.Web.UI;
    Imports System.Web.UI.WebControls;
    Imports System.Web.UI.HtmlControls;


    namespace basementjack
    {
        /// <summary>
        /// Summary description for LogIn.
        /// </summary>
        public class LogIn : System.Web.UI.Page
        {
            protected System.Web.UI.WebControls.TextBox txtUserName;
            protected System.Web.UI.WebControls.TextBox txtPass;
            protected System.Web.UI.WebControls.Button btnLogIn;
            protected System.Web.UI.WebControls.Label lblMessage;

            override protected void OnInit(EventArgs e)
            {
                InitializeComponent();
                base.OnInit(e);
            }

            private void InitializeComponent()
            {
                this.btnLogIn.Click += new System.EventHandler(this.btnLogIn_Click);
                this.Load += new System.EventHandler(this.Page_Load);
            }

            private void btnLogIn_Click(object sender, System.EventArgs e)
            {
                if (FormsAuthentication.Authenticate(txtUserName.Text, txtPass.Text))
                    FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false);
                else
                    lblMessage.Text="Invalid Credentials: Please try again";
            }
        }
    }

</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
    <HEAD>
        <title>LogIn</title>
    </HEAD>
    <body>
        <form id="Form1" method="post" runat="server">
            <asp:TextBox id="txtUserName" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 16px"
                runat="server"></asp:TextBox>
            <asp:TextBox id="txtPass" style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 48px" runat="server"></asp:TextBox>
            <asp:Button id="btnLogIn" style="Z-INDEX: 103; LEFT: 176px; POSITION: absolute; TOP: 16px" runat="server"
                Text="LogIn" Height="56px" Width="88px"></asp:Button>
            <asp:Label id="lblMessage" style="Z-INDEX: 104; LEFT: 16px; POSITION: absolute; TOP: 80px"
                runat="server"></asp:Label></form>
    </body>
</HTML>

--------
Den når til Imports System.Web.Security; , hvor den siger at den forventede et ';'
Avatar billede basementjack Nybegynder
28. juli 2004 - 23:09 #35
Fandt ud af det :

login er nu:
---------------
<%@ Page Language="c#" %>
<script runat="server">
    private void btnLogIn_Click(object sender, System.EventArgs e)
    {
        if (FormsAuthentication.Authenticate(txtUserName.Text, txtPass.Text))
            FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, false);
        else
            lblMessage.Text="Invalid Credentials: Please try again";
    }
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
<head>
    <title>LogIn</title>
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <asp:TextBox id="txtUserName" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 16px" runat="server"></asp:TextBox>
        <asp:TextBox id="txtPass" style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 48px" runat="server"></asp:TextBox>
        <asp:Button id="btnLogIn" style="Z-INDEX: 103; LEFT: 176px; POSITION: absolute; TOP: 16px" onclick="btnLogIn_Click" runat="server" Width="88px" Height="56px" Text="LogIn"></asp:Button>
        <asp:Label id="lblMessage" style="Z-INDEX: 104; LEFT: 16px; POSITION: absolute; TOP: 80px" runat="server"></asp:Label>
    </form>
</body>
</html>
Avatar billede snepnet Nybegynder
28. juli 2004 - 23:09 #36
Jeps - nu ligner det noget :o)
Avatar billede snepnet Nybegynder
28. juli 2004 - 23:10 #37
Det bliver du desværre nødt til at gøre med at hvad jeg har lavet... Det er på mange måder mere enkelt i webmatrix.... men det er selvfølgelig supertræls at jeg har lavet det i VS :o(
Avatar billede basementjack Nybegynder
28. juli 2004 - 23:15 #38
Det virker ikke rigtigt for mig på mit webhotel, jeg mistænker web.config som synderen... Skal den ikke have noget om nu hvor der lavet om i login-koden?..
Avatar billede basementjack Nybegynder
28. juli 2004 - 23:16 #39
Det bliver du desværre nødt til at gøre med at hvad jeg har lavet... Det er på mange måder mere enkelt i webmatrix.... men det er selvfølgelig supertræls at jeg har lavet det i VS :o(
----------------------------------------------
Hvad mente du med ovenstående?..
Avatar billede snepnet Nybegynder
28. juli 2004 - 23:17 #40
der står i web.config, at der skal redirectes til login.aspx.
Avatar billede snepnet Nybegynder
28. juli 2004 - 23:19 #41
At det nok er det nemmeste hvis du bare laver siderne i webmatrix en efter en - fremfor at copy/paste min kode fra top til bund og så rette den til.
Avatar billede basementjack Nybegynder
28. juli 2004 - 23:23 #42
Okay.. Ved du hvordan man laver <img href="visImage.aspx?id=101" /> på dineBilleder.aspx så det kun er gennem dineBilleder.aspx at visImage.aspx vil vise noget?.. Hvis du forstår?..
Avatar billede snepnet Nybegynder
28. juli 2004 - 23:24 #43
jeps... jeg har lavet det... vi er bare ikke kommet til det endnu :)
Avatar billede basementjack Nybegynder
28. juli 2004 - 23:26 #44
Hehe.. Jeg har tålmodighedsproblemer.. ;) Og skal tidligt op.. Dååårlig kombination..

---web.congfig----
<?xml version="1.0" encoding="utf-8" ?>
<configuration> 
  <system.web>
    <compilation defaultLanguage="c#" debug="true" />
    <customErrors mode="RemoteOnly" />

    <authentication mode="Forms">
    <forms name=".BMJACKLOGIN" loginUrl="LogIn.aspx" >
        <credentials passwordFormat="Clear">
            <user name="basement" password="jack"/>
        </credentials>
    </forms>
    </authentication>

    <authorization>
        <deny users="?" />
    </authorization>

    <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" />

    <sessionState
            mode="InProc"
            stateConnectionString="tcpip=127.0.0.1:42424"
            sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
            cookieless="false"
            timeout="20"
    />

    <globalization requestEncoding="utf-8" responseEncoding="utf-8" />
</system.web>
</configuration>

-----Text----
I web.config står navn på en form.. skal det ikke bruges eller noget?.. Og ser den ud som den skal for så kan vi godt fortsætte.. :p
Avatar billede snepnet Nybegynder
28. juli 2004 - 23:31 #45
Jo det bliver også brugt... hvis brugeren ikke er "authenticated" viderestilles brugeren til det der står angivet som loginUrl. Det er en indbygget mekanisme.
Avatar billede basementjack Nybegynder
28. juli 2004 - 23:31 #46
Oki.. Så den er godkendt..
Avatar billede snepnet Nybegynder
28. juli 2004 - 23:35 #47
Mht det med det du spurgte om før omkring checked på at man kommet et bestemt sted fra:

Men øhh... ved egentlig ikke hvordan det vil rulle hos dig med webmatrix.
Jeg har jo en klasse for hver side, så jeg kan lave noget som det her :

if(!(Context.Handler is NySide))
{
    Label message = new Label();
    message.Text = "Du må kun komme hertil fra NySide.aspx";
    Form1.Controls.Add(message);
}

else
{
    Response.Write(String.Format("Du forsøger nu at hente billede med id {0}", ImageId));
}

Hvilket så betyder, at hvis man er sendt dertil fra en anden type en NySide, så får man en fejlmelding.
(og det betyder også, at hvis der er flere typer forskellige sider der skal kunne redirecte til billede.aspx kan det også lade sig gøre på en meget nem måde).

Men jeg kender som sagt ikke webmatrix særlig godt, så jeg ved ikke
Avatar billede snepnet Nybegynder
28. juli 2004 - 23:36 #48
.... så jeg ved hvad der er den nemmeste måde at gøre det på der.
Avatar billede snepnet Nybegynder
28. juli 2004 - 23:38 #49
Så vidt jeg ved kan man godt sætte tingene op i webmatrix så de fungerer på samme måde som i VS... man skal bare kompilere via kommandolinien hvis man vil strikke nogle dll-er sammen.
Avatar billede snepnet Nybegynder
28. juli 2004 - 23:39 #50
http://www.eksperten.dk/spm/523864#rid4807825
Jeg mener selvfølgelig at jeg IKKE ved hvordan man gør det nemmest med webmatrix.
Avatar billede basementjack Nybegynder
28. juli 2004 - 23:39 #51
Så kan jeg kan skrive nogen classer eller noget bag siden noget ala :

if(!(Context.Handler is dineBilleder))
{
  Response.Redirect("logIn.aspx")
}
else
{
'do nothing and show page
}
Avatar billede basementjack Nybegynder
28. juli 2004 - 23:41 #52
Skal vi ikke bare sige at jeg gemmer det med dll filer til jeg får VS.Net mellem hænderne på skolen.. :)  (udanner mig til multimediedesigner)
Avatar billede basementjack Nybegynder
28. juli 2004 - 23:42 #53
Jeg mente selvfølgelig "... kan skrive _uden_ nogen eller noget bad..."
Avatar billede snepnet Nybegynder
28. juli 2004 - 23:46 #54
sidder lige og bikser lidt med webmatrix her... giv mig lige 5 minutter.
Avatar billede basementjack Nybegynder
28. juli 2004 - 23:48 #55
Hehe.. Helt i orden.. :)
Avatar billede snepnet Nybegynder
28. juli 2004 - 23:59 #56
Hmm... sådan som den gør det som standard må du gøre det sådan her:

Hvis den side du kommer fra hedder NySide.aspx, og den side du redirecter til hedder Billede.aspx, kan du gøre det sådan her :

Fra NySide laver du en Server.Transfer("Billede.aspx",true);
Og i Billede.aspx laver du den her i Page_Load

if(!(Context.Handler.ToString() == "ASP.NySide"))
{
  Response.Redirect("logIn.aspx")
}
else
{
'do nothing and show page
}

Så burde det virke.
Avatar billede basementjack Nybegynder
29. juli 2004 - 00:02 #57
Fair nok.. Den er oz godkendt..
Kan man indsætte flere users til web.config'en fra en admin.aspx, fx?..
Avatar billede basementjack Nybegynder
29. juli 2004 - 00:06 #58
Hvordan siger man "Sub Page_Load()" på C#'sk ?..
Avatar billede snepnet Nybegynder
29. juli 2004 - 00:06 #59
Du kan åbne filen fra koden og skrive i den programmatisk... Det er en almindelig xml-fil, og der er god understøttelse i framworket for at arbejde med den slags, men du kan også putte det i en database istedet, hvis du alligevel har sådan en kørende, og der er også muligheder for på en enkel måde at kryptere password og den slags, hvis du skulle have brug for det.
Avatar billede basementjack Nybegynder
29. juli 2004 - 00:07 #60
Jeg tager db-løsning, _det_ har jeg kørt en del i nu.. Og kender alle n00b problemerne.. :)
Avatar billede snepnet Nybegynder
29. juli 2004 - 00:12 #61
du siger
private void Page_Load(object sender, EventArgs e)
Avatar billede snepnet Nybegynder
29. juli 2004 - 00:14 #62
Det er også noget skidt at ligge og pille i web.config på den måde, så db-løsningen er meget bedre.
Avatar billede basementjack Nybegynder
29. juli 2004 - 00:20 #63
Skal vi sige det var det for iaften.. Jeg venter tilbage når jeg har lavet en acess-db med dertilhørende tabeller og relationer og ting.. Så kan du sende mig sikkert afsted ind i det lille galleri-projekt jeg har fået startet..?
Avatar billede snepnet Nybegynder
29. juli 2004 - 00:26 #64
fint fint...
jeg skal se om om jeg kan få det lagt over i webmatrix, men jeg er bange for at jeg ikke får tid :o(
Vi skrives ved.
Mvh
Avatar billede basementjack Nybegynder
29. juli 2004 - 00:27 #65
Jeg har en lille månedes ferie endnu.. Jeg kan vente.. Har god tid.. Det er derfor jeg laver det nu.. ;) Vi skrives ved.
Avatar billede snepnet Nybegynder
29. juli 2004 - 00:28 #66
Det var godt nok lidt af en ferie :o)
Hold dig munter :o)
Avatar billede snepnet Nybegynder
30. juli 2004 - 01:14 #67
Jeg har ikke fået smidt noget over i webmatrix, og jeg når det heller ikke imorgen :o(
Avatar billede basementjack Nybegynder
30. juli 2004 - 21:35 #68
Jeg kan vente... Jeg er heller ikke selv færdig med det Access noget endnu..
Avatar billede basementjack Nybegynder
31. juli 2004 - 14:10 #69
Du må lige sige til, hvis du skal vise databasen... Den er helt simpelt... Har to filer nu... Det virker ikke helt, men er tæt på.. Men det C# der er ikke let at få til at virke som jeg vil have...

------login.aspx-------
<%@ Page Language="c#" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">

    public static string getPassword(object sender, System.EventArgs e)
    {
    OleDbConnection dbConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=billeder.mdb.ressources");
    dbConnection.Open();
    string sql = "SELECT bruger.password FROM bruger WHERE bruger.nick = '" & txtUserName.Text & "';";
    lblMessage.Text = sql;
    OleDbCommand dbCommand = new OleDbCommand(sql, con);
    string res = (string)dbCommand.ExecuteScalar();
    dbCommand.Close();
    return res;
    }
   
    public static string getGalleriId(object sender, System.EventArgs e)
    {
    OleDbConnection dbConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=billeder.mdb.ressources");
    dbConnection.Open();
    string sql = "SELECT bruger.gruppeid FROM bruger WHERE bruger.user = '" & txtUserName.Text & "';";
    lblMessage.Text = sql;
    OleDbCommand dbCommand = new OleDbCommand(sql, con);
    string res = (string)dbCommand.ExecuteScalar();
    dbCommand.Close();
    return res;
    }
   
    void btnLogIn_Click(object sender, EventArgs e) {
        if(txtPass.Text == getPassword())
        {
            //Godkendt
            Session["GalleriId"] = getGalleriId();
            Server.Transfer("visGalleri.aspx",true);
        }
        else
        {
            //Fejlet
            lblMessage.Text = "Dit login fejlede.";
        }
    }

</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
<head>
    <title>LogIn</title>
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <asp:TextBox id="txtUserName" style="Z-INDEX: 101; LEFT: 16px; POSITION: absolute; TOP: 16px" runat="server"></asp:TextBox>
        <asp:TextBox id="txtPass" style="Z-INDEX: 102; LEFT: 16px; POSITION: absolute; TOP: 48px" runat="server"></asp:TextBox>
        <asp:Button id="btnLogIn" style="Z-INDEX: 103; LEFT: 176px; POSITION: absolute; TOP: 16px" onclick="btnLogIn_Click" runat="server" Text="LogIn" Height="56px" Width="88px"></asp:Button>
        <asp:Label id="lblMessage" style="Z-INDEX: 104; LEFT: 16px; POSITION: absolute; TOP: 80px" runat="server"></asp:Label>
    </form>
</body>
</html>

------visGalleri.aspx------
<%@ Page Language="c#" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">
        private void Page_Unload(object sender, EventArgs e) {
            if(!(Context.Handler.ToString() == "ASP.Login_aspx"))
            {
              Response.Redirect("logIn.aspx")
            }
            else
            {
              'do nothing and show page
            }
            Reapter1.Bind()
        }
           
        DataSet getSti() {
            string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Ole DB Services=-4; Data Source=billeder.mdb.ressources";
            IDbConnection dbConnection = new System.Data.OleDb.OleDbConnection(connectionString);

            string queryString = "SELECT billeder.* FROM Billeder WHERE billeder.gruppeid = '" & Session["GalleriId"] & "';";
            IDbCommand dbCommand = new OleDbCommand();
            dbCommand.CommandText = queryString;
            dbCommand.Connection = dbConnection;

            IDbDataAdapter dataAdapter = new OleDbDataAdapter();
            dataAdapter.SelectCommand = dbCommand;
            DataSet dataSet = new System.Data.DataSet();
            dataAdapter.Fill(dataSet);

            return dataSet;
        }

</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
<head>
    <title>LogIn</title>
</head>
<body>
    <form id="Form1" method="post" runat="server">
        <asp:Repeater id="Repeater1" runat="server" DataSource="<%# getSti() %>"></asp:Repeater>
        <HEADERTEMPLATE>
            Her er en bunke billeder<br />
        </HEADERTEMPLATE>
        <ITEMTEMPLATE>
            <img href="<%#Container.DataItem("sti")%>" /><br />
        </ITEMTEMPLATE>
        <FOOTERTEMPLATE>
            Så var der ikke flere billeder.
        </FOOTERTEMPLATE>
    </form>
</body>
</html>
Avatar billede basementjack Nybegynder
01. august 2004 - 15:22 #70
Jeg har lavet det hele om til VB nu, og det virker så vidt jeg kan se som det skal, med udentagelse af nogle få ting, som jeg regner med at stille et nyt spm om. Hvis du vil se det, ligger det nok de næste par uger her -> http://www.jakobj.dk/snepnet/vb.rar ...
Og så kan du lægge et svar, så du kan få nogle point..
Avatar billede snepnet Nybegynder
01. august 2004 - 16:34 #71
Super - jeg har hentet det.
Du siger bare til hvis der skulle være noget - jeg skal nok være her (altså hvis jeg er online og alt det der :o)
Avatar billede basementjack Nybegynder
01. august 2004 - 17:10 #72
Tja.. Problemet i det du har hentet er at jeg ikke kan oprette en session i classen LogIn... Ved du hvorfor?..
Avatar billede snepnet Nybegynder
01. august 2004 - 17:46 #73
Kan du ikke skrive til sessionobjektet ?
Avatar billede basementjack Nybegynder
01. august 2004 - 20:49 #74
Nu siger vi at du er i subroutine i en class.. Hvordan ville du oprette en session og give den fx en string (myString) som den skal passe på, hvis du skulle skrive det i C#?..
Avatar billede snepnet Nybegynder
01. august 2004 - 20:59 #75
HttpContext.Current.Session["sessionvariablename"] = whatever;
bliver så med () istedet for [] i VB.
Avatar billede basementjack Nybegynder
01. august 2004 - 21:52 #76
Det gjorde tricket indtil nu.. :)
Pre-complieren vil så ikke være med til denne linie heller:
Server.Transfer("visGalleri.aspx",true)
Den giver en fejl der hedder:
System.NullReferenceException: Object reference not set to an instance of an object.
Ideer?..
Avatar billede snepnet Nybegynder
01. august 2004 - 21:56 #77
Det er så unidlbart kun Server der kan være null i den linie... har du prøvet med :
HttpContext.Current.Server.Transfer
Avatar billede basementjack Nybegynder
01. august 2004 - 22:07 #78
Det virkede fint.. Nu virker hele min login-del...
I min repeater i billede-visning-delen melder fejlen:
BC30201: Expression expected.
På linien:
<asp:Image id="Image1" runat="server" ImageUrl="<%# Container.DataItem('sti') %>">
Og hele repeateren viser således:
        <asp:Repeater id="Repeater1" runat="server">
        <HEADERTEMPLATE>
            Her er en bunke billeder<br />
        </HEADERTEMPLATE>
        <ITEMTEMPLATE>
            <asp:Image id="Image1" runat="server" ImageUrl="<%# Container.DataItem('sti') %>"></asp:Image>
            <br />
        </ITEMTEMPLATE>
        <FOOTERTEMPLATE>
            Så var der ikke flere billeder.
        </FOOTERTEMPLATE>
        </asp:Repeater>
En ide her også?..
Avatar billede snepnet Nybegynder
01. august 2004 - 22:14 #79
Prøv at lave denne
ImageUrl="<%# Container.DataItem('sti') %>"
om til
ImageUrl='<%# Container.DataItem("sti") %>'
Avatar billede basementjack Nybegynder
01. august 2004 - 22:18 #80
Okay.. Virkede også.. Træls fejl.. :)
Men der kom en ny fejl igen:
System.Web.HttpException: Response is not available in this context.
Fra linien:
Response.Redirect("logIn.aspx")
Hele sub'en:
    Sub Page_Unload()

        If not (Context.Handler Is "ASP.Login_aspx") Then
            Response.Redirect("logIn.aspx")
        Else
            Repeater1.DataSource = getSti()
            Repeater1.DataBind()
        End If

    End Sub
??
Avatar billede snepnet Nybegynder
01. august 2004 - 22:21 #81
Responsen er også færdig når page_unload kaldes... du må proppe den kode ind lidt tidligere i sekvensen.
Avatar billede basementjack Nybegynder
01. august 2004 - 22:22 #82
Endnu en dum fejl..
Avatar billede basementjack Nybegynder
01. august 2004 - 23:06 #83
Hmm.. Det med context.handler har jeg problemer med.. Så ville prøve at skrive den ud til en label.. men får denne fejl:
Value of type 'System.Web.IHttpHandler' cannot be converted to 'String'.
Fra:
label.Text = cStr(Context.Handler)
......
Den returner ikke en string eller noget der ksn omdannes til string åbenbart..
Avatar billede snepnet Nybegynder
01. august 2004 - 23:26 #84
Context.Handler.ToString() burde gå fint nok
Avatar billede basementjack Nybegynder
01. august 2004 - 23:29 #85
Nope.. For i VB har Context.Handler ikke den metode.. :( Har prøvet.
Men jeg har fundet noget interessant...
http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=15
Context.Items skal jeg bare benytte mig af.. :)
Avatar billede snepnet Nybegynder
01. august 2004 - 23:36 #86
Det kan du også... men så vidt jeg husker var den kode jeg skrev - hvor du skulle bruge Context.Handler - lavet for at du kunne sikre at man ikke fik noget resultat fra siden, med mindre man kom fra en bestemt side.

Hvad er dit problem med Context.Handler ?

Nåja... CStr er vel VB-substitutten for ToString() :o)
Avatar billede snepnet Nybegynder
01. august 2004 - 23:41 #87
Hov... den med Context.Handler skal du køre i Load... Ikke i UnLoad... Du skal jo redirecte hvis folk ikke kommer fra den rigtige side... UnLoad køres til sidst... altså når alt det andet er overstået.
Avatar billede basementjack Nybegynder
01. august 2004 - 23:42 #88
Jep... cStr er nemlig VB'sk for ToString()...
Og Context.Handler vil ikke blive til en string...
Og det var i Page_Load jeg kaldte den.....
Men jeg kan gøre sådan at jeg giver Context.Items(n) en værdi, som jeg checker for på den anden side.. Det er da også okay sikkert... ikke?...
Avatar billede snepnet Nybegynder
01. august 2004 - 23:44 #89
I den kode du har sendt mig bruger du Context.Handler i UnLoad... Det gør du også i det du har posted klokken 22:18
Avatar billede snepnet Nybegynder
01. august 2004 - 23:46 #90
men det er også fint at gøre det med Context.Items.
Men er pointen at du vil checke om folk kommer fra en bestemt side... eller om de er logget ind i den situation ?
Avatar billede basementjack Nybegynder
01. august 2004 - 23:47 #91
Ja.. Men kort efter klokken 22.22 retter jeg det til Page_Load.. :) Og hvis du venter en 5 minutter med at hente så ligger jeg lige det rettede vb.rar op....

Og det var ideen.. At checke om de er logget ind..
Avatar billede snepnet Nybegynder
01. august 2004 - 23:50 #92
Så kan du bare spørge direkte om det... det er en af fiduserne i frameworket.
Du kan spørge direkte på
User.Identity.IsAuthenticated

Men det er unødvendigt... Den redirecter selv til den login-form du har angivet i konfigurationen, hvis brugeren ikke er "authenticated"
Avatar billede basementjack Nybegynder
01. august 2004 - 23:52 #93
Hehe.. Jamen jeg har droppet det i web.config, da jeg vil kunne oprette brugere online og i en database.. ;)
Avatar billede basementjack Nybegynder
01. august 2004 - 23:56 #94
Jvf. 29/7 kl 00:14 ... :p
Avatar billede snepnet Nybegynder
02. august 2004 - 00:00 #95
Hvor du angiver brugerene har ikke noget at gøre med IsAuthenticated.... Der er bare indbygget funktionalitet til at trække brugerlisten ud af konfigurationen, men det betyder ikke at man er tvunget til det.
Avatar billede basementjack Nybegynder
02. august 2004 - 00:02 #96
Hmm.. Okay.. Men du må nok heller forklare mig det lidt mere.... skåret ud i pap-agtigt så..
Avatar billede snepnet Nybegynder
02. august 2004 - 00:10 #97
Avatar billede snepnet Nybegynder
02. august 2004 - 00:11 #98
Har du uploadet sidste nye kode ?
Avatar billede basementjack Nybegynder
02. august 2004 - 00:12 #99
Ja...
Avatar billede snepnet Nybegynder
02. august 2004 - 00:17 #100
Nå.... du har jo lavet det ser det ud til... så er der jo ikke megen mening i at lave det om lige nu.... du kan jo altid prøve den anbefalde model senere :o)

Har du stadig noget tilbage der ikke virker ?
Avatar billede basementjack Nybegynder
02. august 2004 - 00:20 #101
Ja.. Det har jeg..
Fejl:
System.Data.OleDb.OleDbException: Datatyperne stemmer ikke overens i kriterieudtrykket.
Linie:
dataAdapter.Fill(dataSet)
Fil:
visGalleri.aspx

Det er intersandt det du har pastet der.. Selvom det tager lang tid at læse alt det C#.. :)
Avatar billede basementjack Nybegynder
02. august 2004 - 00:21 #102
Du kan prøve selv at køre login.aspx og indtaste test og test..
Avatar billede snepnet Nybegynder
02. august 2004 - 00:24 #103
Er dit galleriid ikke en integer ?
Så burde denne her
Dim sql As String = "SELECT billeder.* FROM Billeder WHERE billeder.gruppeid = '" + Session("GalleriId") + "';"

nok være
Dim sql As String = "SELECT billeder.* FROM Billeder WHERE billeder.gruppeid = " + (int)Session("GalleriId") + ";"

(int)Session("GalleriId") skal du nok lave lave om et til VB-typecast istedet ;o)
Avatar billede basementjack Nybegynder
02. august 2004 - 00:25 #104
Hehe.. Fandt lige den samme artikel skrevet med VB i stedet.. :/ efter jeg havde læst færdigt... http://support.microsoft.com/default.aspx?scid=kb;EN-US;308157
Avatar billede snepnet Nybegynder
02. august 2004 - 00:26 #105
Ja det er jo lidt federe så :o)
Avatar billede basementjack Nybegynder
02. august 2004 - 00:30 #106
Den fejler samme sted, men med fejlen:
System.Data.OleDb.OleDbException: Der er ikke angivet nogen værdi for en eller flere krævede parametre.
istedet for... Og man skal ikke fortælle at der kommer en integer ud af Sessionen i Vb.. :) Det finder den selv ud af..
Avatar billede snepnet Nybegynder
02. august 2004 - 00:35 #107
Så har du jo nok ikke nogen værdi i Session("GalleriId")
Avatar billede basementjack Nybegynder
02. august 2004 - 00:43 #108
Public Function getGalleriId()

        Dim sql As String = "SELECT bruger.gruppeid FROM bruger WHERE bruger.user = '" & txtUserName.Text & "';"
        dbConnection = New System.Data.OleDb.OleDbConnection(connectionString)
        dbCommand = New System.Data.OleDb.OleDbCommand
        dbCommand.CommandText = sql
        dbCommand.Connection = dbConnection
        dbConnection.Open
        Try
            res = dbCommand.ExecuteScalar()
        Catch
                'Noget.. Den mener at res er tom...
    End Try
        return res

    End Function
------
Den fejlede før, så jeg satte en Try Catch ind... Kan du se hvorfor den ikke returner noget getGalleriId?..
Avatar billede basementjack Nybegynder
02. august 2004 - 00:45 #109
Jeg fandt ud af det... Det skulle være bruger.nick og ikke bruger.user...

Men det rykkede kun videre til næste fejl.. Som er:
System.ArgumentException: sti is neither a DataColumn nor a DataRelation for table Table.
På linien:
<asp:Image id="Image1" runat="server" ImageUrl='<%# Container.DataItem("sti") %>'></asp:Image>
Avatar billede basementjack Nybegynder
02. august 2004 - 00:48 #110
Hehe.. Igen en navngivningsfejl.. billedesti og ikke kun sti..
Jeg oploader lige rettet kode igen.. Det virker næsten som tænkt nu.. :D
Avatar billede snepnet Nybegynder
02. august 2004 - 00:52 #111
Dim sql As String = "SELECT billeder.* FROM Billeder WHERE billeder.gruppeid = '" + Session("GalleriId") + "';"

Har du et felt i tabellen billeder der hedder "sti" ?
Avatar billede snepnet Nybegynder
02. august 2004 - 00:53 #112
Nå du fandt det selv - skulle nok lige have lavet en refresh inden jeg postede der :o)
Avatar billede basementjack Nybegynder
02. august 2004 - 00:57 #113
Hehe.. Det går nok.. :)

Mht. til senere indførelse af FormsAuthentication, så er jeg med på det meste af hvad den artikel skriver, men føler mig dog usikker i dette:
Private Sub cmdLogin_ServerClick(ByVal sender As Object, ByVal e As System.EventArgs) _
  Handles cmdLogin.ServerClick
  If ValidateUser(txtUserName.Value,txtUserPass.value) Then
      FormsAuthentication.RedirectFromLoginPage(txtUserName.Value, _
      chkPersistCookie.Checked)
  Else
      Response.Redirect("logon.aspx", True)
  End If
End Sub
---
Laver en webcontrol et serverClick hvis det forudsager et postback?..
Og hvorfor skal chkPersistCookie.Checked med?..
Avatar billede snepnet Nybegynder
02. august 2004 - 01:05 #114
Nej... men hvis du bruger en almindelig htmlknap, og angiver runat="server", kan du abbonere på et ServerClick. Resultatet er det samme på serveren, som hvis du bruger en serverkontrol-knap, og abbonnerer på Click.

createPersistentCookie er den parameter der bliver angivet med chkcreatePersistentCookie.Checked.

Hvis den er true betyder det, at den cookie der genereres kan benyttes på tværs af browsersessions... I praksis betyder det så at du ikke behøver at logge ind hver gang du kommer ind på sited.
Avatar billede basementjack Nybegynder
02. august 2004 - 01:08 #115
OKi.. Nu lader jeg dig slippe.. Og så går jeg ind med at lave en admin sektion også.. Så jeg stiller nok nogle spørgsmål på exp igen snart.. ;)
Vi snakkes..
Avatar billede snepnet Nybegynder
02. august 2004 - 01:11 #116
Bare iorden... vi skrives ved :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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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