loginmodul med kun passord, ingen brukernavn nødvendig

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009

Kunne tenkt meg litt hjelp til en liten sak her.

Jeg tenkte at folk kunne legge inn navnet sitt og en e-post samt at de måtte putte inn ett passord for å se videre innhold på siden min. Business siden jeg jobber med.

Alt jeg har pr.dags dato er gjort i XHTML 1.0 Transitional...

Passordet er likt for alle, og det trengs ingen brukernavn.

Hverken navn eller e-post skal brukses som brukernavn. Det er bare så jeg kan få vite hvem som viser ytterligere interesse så jeg kan ta kontakt med dem.

Passordet er der bare pga. at infoen på siden ikke nødvendigvis trenger å være tilgjenglig for absolutt alle. Men for de beviste besøkende. Var det forstålig?

Altså, de som besøker siden min er mest sannsynlig henvist av meg, eller noen jeg kjenner. Sant. Og da har naturligvis de besøkende også blitt informert om hvilket passord de må benytte seg av for å få ytterligere tilgang. Sant.

I og med at denne siden ligger på nett, så er det jo sannsynlig at noen finner siden helt tilfeldig. De kan be om å få tilsendt passord.

Hvis de vil ha bryet/er villige til å legge inn navn og epost for å motta ett passord for så å kunne se videre, ja da er det mest sannsynlig noe som har fanget interessen dems.

 

Kan noen hjelpe meg ut her?

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Passord på hjemmeside

Ja, dette kan jeg hjelpe deg med. Men før du implementerer en slik løsning, så skal du være klar over at passordbeskyttet innhold ikke vil bli indeksert av søkemotorer. Hvis innholdet ditt ikke er indeksert av søkemotorer, vil du følgelig ikke få trafikk fra søkemotorene på fraser og uttrykk som befinner seg på de passordbeskyttede sidene.

Dette betyr altså mindre (målrettet) trafikk, og kan i sin tur gjøre at du går glipp av business. Skulle du likevel ønske en slik løsning, så kan du gå frem på flere måter, her er to forskjellige:

Beskytt websider med .htaccess og .htpasswd

Hvis du har hjemmesiden din på et webhotell med Apache webserver, så kan du sette passord ved hjelp av «.htaccess» og «.htpasswd». Man kan da opprette en katalog på webhotellet, feks katalogen «beskyttet» og plassere .htaccess-filen i den.

Når en interessent forsøker å gå inn på dittdomene.com/beskyttet/, så vil vedkommende støte på denne autentiseringsboksen. Den spør dog om brukernavn og passord.

Login boks

Hvis du ønsker å sette brukernavn og passord på denne måten, så kan du lage .htpasswd-filen her, og her kan du lage den tilhørende .htaccess-filen.

Vise eller sende passordet via epost med PHP

Videre kan man bruke PHP for å sende interesserte personer mail med det statiske passordet. Med statisk menes da at passordet er entydig/likt for alle. Alternativt kan man vise passordet på websiden like etter at en bruker har skrevet inn navn og epost.

Ofte kan det være greiest å vise passord og brukernavn på skjermen, fordi mailer sendt fra PHP har en tendens til å havne i spam på hotmail o.l. (Man kan unngå dette ved å sette korrekte mail headere, og se til at mailserveren har lik rDNS som eposten som sender den).

Lagring av brukerens epost

Man kan også velge hvordan man vil lagre brukerens navn og epost. Feks kan man lagre disse opplysningene i database, en tekstfil eller sende dem til seg selv ved hjelp av mail.

PHP-script som tar inn navn og epost og sender mail

Komplett pakke med login script: Jeg har laget en komplett pakke med loginscript. Dette bruker .htaccess, .htpasswd og PHP for å sende passord og brukernavn. Du kan laste ned et zippet eksemplar av PHP login script her.

Kort om oppbygningen av scriptet

Slik ser katalog- og filbanestrukturen ut i scriptet:

login-script          (rotkatalog dir)
  assets              (dir)
    stylesheet.css    (fancy stilark)
  .htpasswd           (fil med user og pass)
  sendpassord         (dir)
    index.php         (sender epost med user og pass)
  beskyttet           (beskyttet dir)
    index.php         (fil med dummytekst)
    .htaccess         (autentiseringsfil, viser til .htpasswd)

Her ser man at katalogen «beskyttet» inneholder filen «.htaccess». Det innebærer at alt du legger i denne katalogen er beskyttet av brukernavnet og (det krypterte) passordet i «.htpasswd». Du må gjerne flytte filen med user og pass, men husk da å endre filbanen inne i «.htaccess».

For å etterspørre nytt passord, klikk inn i katalogen «sendpassord». Indexfilen som ligger der tar seg av alt som har med passord og brukernavn, og kommunikasjon av dette til brukere.

Installasjon av loginscriptet

For å installere loginscriptet gjør du følgende:

  1. Lag egen htaccess og htpasswd ved å bruke kildene jeg linket til ovenfor. Når du har bestemt detaljene, skriv dem inn i de eksisterende filene, «.htpasswd» og «.htaccess»
  2. Lukk opp filen index.php som ligger i katalogen «sendpassord», følg anvisningene i kommentaren og skriv inn navnet ditt, emailen din, passordet, brukernavnet, domenet og katalogen du vil skal være beskyttet.
  3. Last opp filene til webhotellet. Gå deretter til dittdomene.com/sendpassord/
    Forsøk å få tilsendt brukernavn og passord ved å skrive inn dine opplysninger.
  4. Forsøk å logge på med brukernavn og passord ved å gå til dittdomene.com/beskyttet/

Ytterlige kommentarer til login scriptet: Dette er noe jeg har skrudd sammen rimelig fort, så det er absolutt rom for forbedringer.

Kort om funksjonaliteten i login scriptet

Brukernavn (plain text) og passord (kryptert) er, som tidligere nevnt, lagret i «.htpasswd». Videre er det samme brukernavnet og passordet satt i filen «index.php» under katalogen «sendpassord».

Hvis en bruker ønsker å få tilgang til de beskyttede sidene, må vedkommende gå inn på dittdomene.com/sendpassord/. Her vil vedkommende bli bedt om å skrive inn navnet sitt, samt. en gyldig epost. Dersom han oppgir en valid epost og et navn på mellom 1-100 tegn, så vil følgende skje:

  1. Du får en epost med brukerens navn og epostadresse (du må ha satt scriptet til å sende mail til din epost).
  2. Brukeren får tilsendt en personlig mail med brukernavn og passord, samt. en link til det beskyttede området.
  3. På skjermen til brukeren vil brukernavn og passord dukke opp.

Beskytte websider med passord i PHP

Man kan også bruke en ren PHP-løsning. Her vil man kunne lage pålogging som ikke trenger brukernavn, kun passord.

En slik loginløsning vil kreve at samtlige beskyttede sider er PHP. (Ressurser som bilder og video er følgelig ikke beskyttet, såfremt man ikke gjør egne ting for å beskytte dem, feks hente dem via PHP). Dette fordi man bruker sessions for å lagre hvorvidt en bruker er innlogget og har tilgang.

En slik løsning vil nemlig kreve at ethvert script begynner med følgende funksjon; session_start().

Hvis du ønsker et eksempel på en slik løsning, så kan jeg godt lage en forenklet versjon - skrik ut.

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
takk for fyldig svar... Det

takk for fyldig svar... Det virker som det er det siste alternativet, med PHP, jeg søker.

Ikke hele nettstedet skal være passordbeskyttet. Man skal kunne få tilgang til det meste, men det er noen elementer som kreves at du kjenner til passordet for å kunne se det.

Men, man kan be om å få tilsendt passordet på e-post.

Da skal man kunne la passord-feltet være åpent, men fylle inn påkrevde felt, og klikke "logg inn". Så får man passordet tilsendt på e-post.

 

Noe du kansje kan forklare litt nærmere for meg hvordan jeg får til... Hadde vert konge.

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Loginscript i PHP med passord

Hei, begynner med det siste først.

Når det gjelder bildeopplasting, har denne funksjonen blitt aktivert. Ta en titt i denne tråden for å få en kort innføring i hvordan du kan laste opp bilder på Hjemmeside. Alternativt kan man bruke tjenesten bildr.no eller imageshack.us og sette inn bildet her ved hjelp av bildeikonet i editoren.

Fjerne forhåndsdefinert tekst i form input ved aktivering

Det er mange måter å fjerne og sette tekst i inputs, felles for metodene er at man ofte bruker et client side scripting language. Somregel JavaScript.

Jeg har laget et lite enkelt JavaScript med to funksjoner som utfører denne oppgaven. Den ene funksjonen populerer feltene med dummydata, den andre fjerner dummydataene.

Først bruker jeg <body onload="funksjonsnavnet();"> for å fyre opp JavaScript-funksjonen idet bodyen loader inn. Videre har jeg to events definert i <input>'ene for navn og epost. Disse er onclick (når bruker aktiverer) og onblur (deaktivering).

Dette scriptet er lagt til som en del av PHP loginscriptet.

Beskytt websider med passord i PHP

Siden vi skal bruke sessions for å angi hvorvidt en bruker er innlogget eller ei, kreves det at alle dokumenter som skal beskyttes får filetternavet (extension) «php». Eventuelt kan du be Apache (eller annen webserversoftware) sende filer med «html»-etternavn til PHP prosessering. Grunnen til dette er at de beskyttede nettsidene må ha et par linjer med PHP i seg. Mer om dette senere.

For å unngå forvirring blant brukere har dette scriptet to skjemaer; Ett for å logge inn, og ett for å få tilsendt passord. Hvis man kun bruker en submit knapp, feks «logg inn», så kan brukeren bli forvirret. Han har jo ikke passord, og kan dermed tro han ikke får logget inn. Derfor har jeg laget en knapp for passordforespørsel med knappen «send passord».

Loginscript i PHP

Her kan du laste ned en zip-fil med loginscript i PHP. Det består av ett hoveddokument som heter «auth.php» og to filer som er beskyttet, hhv «protected1.php» og «protected2.php». Hoveddokumentet tar seg av innlogging, utlogging og utsending av passord. Det finnes langt mer elegante måter å gjøre dette på, og min løsning er kun et eksempel.

I filen «auth.php» er også «functions.php» inkludert. I «functions.php» er valideringsfunksjoner o.l definert. «auth.php» er scriptet som validerer at informasjonen brukeren putter inn er riktig. Dvs at epost er i et epostformat og at navnet er mellom 2 og 65 bokstaver. Dessuten kontrollerer scriptet hvorvidt passordet er riktig eller feil.

Tekst som forsvinner fra inputs ved aktivering

Feltene for navn og epost definert med «dummydata». Informasjonen i disse feltene forsvinner når brukeren aktiverer epost- eller navnfeltet ved hjelp av JavaScript.

Endring av loginscriptet i PHP

Det er lagt opp til at man skal kunne endre ting i scriptet og utvide antall passordbeskyttede filer. Jeg anbefaler at du leser gjennom både «auth.php» og «functions.php» for å se sammenhengene bedre. Still spørsmål her, dersom du lurer på noe utover hva som er spesifisert her.

Sette eget passord og annet i loginscriptet

I filen «auth.php» finner du noen forhåndsdefinerte data. Disse må du endre til personlige innstillinger. Hvis du omdøper «auth.php» til et annet filnavn, er det viktig at du også oppdaterer «url» i arrayen nedenfor.

<?php
/*
    Spesifiser sidespesifikke variabler.
        name: Navnet ditt eller på websiden
        mail: eposten din
        password: selvforklarende ;)
        domain: domenet hvor loginscriptet er
        url: siden hvor url til login er
*/

$site_array = array(
   
'name' => 'Ditt Navn',
   
'mail' => 'din@epost.com',
   
'password' => 'hjemmeside',
   
'domain' => 'http://domene.com/',
   
'url' => 'auth.php',
);
?>

Beskytte nye websider på nettstedet

Hvis du skal beskytte nye websider på nettstedet, opprett en ny PHP-fil, feks «min-beskyttet.php». Først i denne filen setter du inn følgende:

<?php
    session_start
();
    if(@
$_SESSION['logged_in']) {
?>

Dette starter en session, og kontrollerer om den aktuelle brukeren som forsøker å accessere websiden er innlogget. Videre skriver du inn, i ren HTML, hva som skal være beskyttet. Feks et helt HTML-dokument, slik;

<!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>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Min hemmelige side</title>
</head>
<body>
    <p>Min hemmelige webside! Yeah!</p>
</body>
</html>

Dernest avslutter du den beskyttede filen med litt PHP igjen.

<?php
} else { header('HTTP/1.1 403 Forbidden'); } 
?>

Ved bruk av denne headeren, vil man sende 403 forbidden headere til klienten. I noen nettlesere vill webserverens 403-dokument fortelle brukeren at han er uautorisert, men du kan godt lage din egen.

For å lage egen, kan du feks avslutte slik, fremfor det vi gjorde ovenfor:

<?php
} else {
   
header('HTTP/1.1 403 Forbidden');
    print
'<h1>Ingen adgang</h1>';
    print
'<p>Du har ingen adgang til å se denne websiden';
  }
?>

For å se hvordan man kan utforme egne passordbeskyttelser, sjekk eksempelfilene protected1.php og protected2.php. Forsøk også å gå til disse filene før du logger inn.

ThomasK
ThomasKs bilde
Avlogget
Donator
Ble med: 30.12.2009
du kan altfor mye, og jeg kan

du kan altfor mye, og jeg kan så altfor lite.

Takker for fyldig svar igjen...

Må få meg ett domene, da jeg ikke har det enda, så jeg kan utforske, prøve og feile for å få en bedre forståelse av hva som skjer i forbindelse med PHP...

Førsøker å laste opp ett bilde her, eller linke til ett...

Screenshot av webdesign

- Mangler du passord: JA! eller NEI! -  står det nede til venstre... Når besøkende holder musen over JA! så kommer det frem rett under:

"La passordfeltet være tomt, fyll ut påkrevde felter og klikk logg in.

Så sender vi deg passordet på den oppgitt epost adresse."

Hvis de velger nei, så kommer det bare opp: "Hva venter du på, fyll inn og klikk "Logg inn"

Kan få det til slik, at de må klikkeJA! for å få frem teksten. Og da endrer "Logg inn"-knappen seg til "Send passord". Sant? for å ungå missforståelser som du påpeker. Vet bare ikke helt hvordan det skal gå til.

På kontakt oss siden, jobber jeg med en rullgardinmeny hvor man kan velge å få tilsendt passord også (bare for å ha muligheten på flere steder). Kan kan også gjøre det slik at de blir linket til Kontakt oss siden når de mangler passord. men jeg syns personlig at det virker som en "omvei" på en måte...

med hilsen
Thomas Kile

Hjemmeside
Hjemmesides bilde
Avlogget
Bidragsyter
Ble med: 17.06.2008
Webdesign, JavaScript og forstyrrende elementer

Se her er han igang med webdesignet sitt, stilig :) Lite tips: Vær oppmerksom på kontraster, fargeblinde kan ha problemer med å lese noe av teksten i illustrasjonene dine, det samme gjelder svaksynte. (Mener 8% av menn er fargeblinde).

Ja, kjøp webhotell eller sett opp webserver med støtte for PHP hjemme, slik at du får testet det ut. Litt enklere da, hehe.

Mouseover-effekt og JavaScript

Regner med at teksten som dukker opp vises pga en eller annen implementasjon av JavaScript?

Ja, det er fullt mulig å få verdien på knappen til å endre seg fra "Logg inn" til "Send passord". Dette kan gjøres ved å skrive en enkel funksjon i JavaScript (men funksjonaliteten vil kreve at brukeren som er på websiden din har JavaScript aktivert i browseren sin).

Nedenfor er et eksempel på implementasjon av slik funksjonalitet. Sjekk kildekoden, prøv å besvar spørmsålet og klikk på knappen, hehe. Just for the record, not gay. :D

Er du lekker?

Omveier og forstyrrende elementer

Enig i at det blir en omvei, men hvis folk er interessert i mer info, så er de allerede motiverte nok til å gå omveien.

Har man loginbokser og slike ting på alle websidene på hele nettstedet, så kan de bli forstyrrende elementer som tar oppmerksomheten vekk fra andre og viktigere ting.

Det er formålstjenelig å velge det som er viktigst her. Hvis det er viktigst at flest mulig etterspør passord, så synes jeg du skal ha skjemaet overalt.

Hvis det er andre ting du ønsker å oppnå med websiden din bortsett fra å gi den ekstra tilgangen, så synes jeg du skal linke frem til en underside som tar seg av dette.

Svar på forumemnet

(If you're a human, don't change the following field)
Your first name.
Innholdet i dette feltet blir holdt privat og vil ikke bli vist offentlig.