12. juni 2004 - 18:34Der er
22 kommentarer og 2 løsninger
Simpel login (roenving)
Roenving gav denne meget fine JS <form onsubmit="location.href=this.pw.value+'.htm';return false;"> Indtast password: <input type="password" name="pw"> <input type="submit" value="Log ind"> </form> Den virker fantastisk og er MEGET simpel. Kan der laves en udvidelse så der kommer en alert op ved forkert pw ? i stedet for "siden kan ikke vises"
Ikke uden at passwordet faktisk lægges i filen på den ene eller anden måde ...
Men du kan (afhængig af hvilken server, du bruger) selv bestemme hvad og hvordan fejlen vises, og den kan vist differentieres på mapper, men det er ikke noget jeg ved noget om ...
Jeg har nogle gange fået en side, som hed 404.html (eller sådan noget lignende !-), når en fil ikke har fandtes, men om det er en server-funktion, som præsenterer en overordnet fil, eller om serveren kigger i mappen, og præsenterer sådan et alternativ ved jeg ikke ...
-- måske vil det være bedre at checke med noget af det stof, der er tilgængeligt på B-one ?-)
-- eller, hvis du finder ud af, hvilken server det er (jeg vil ikke blive overrasket hvis det er en Apache !-), kan du måske spørge i den rigtige kategori her !o]
Det var jeg ikke klar over roenving. Kan du ikke kaste et svar ind i ringen så kan du og terrak deles om pointene. Terraks svar var dog ikke simpelt, men fungerer.
Hvis du med "ikke simpelt" mener at du ikke er helt med på hvad der sker, så er der en kort forklaring her:
På login siden har vi en variabel som er sat til "notloaded". Når du trykker på Log ind knappen, bliver en ny side åbnet i en skjult iframe. Hvis siden findes, bliver variablen på login siden ændret til "loaded", hvis altså siden registrerer at den er inde i en iframe. Findes siden ikke, forbliver variablen på login siden uændret. Et sekund efter du har trykket på Log ind, bliver der tjekket om variablen er notloaded eller loaded. Er den notloaded kommer der en alert boks, er den loaded bliver man sendt videre til samme side som er hentet i iframen, og den vil ikke prøve at ændre variablen på login siden, da den selv finder ud af at den ikke er inde i en iframe.
At krølle hjernen hjælper engang imellem ganske godt, når man skal forsøge at løse problemer, som ikke har en direkte løsning, så det er absolut en brugbar løsning terrak har lavet ...
-- og efter omstændighederne simpel, for du skal bare sætte det javascript, han har sat ind på brugersiden ind i din egen side, som kræver logon !-)
-- og selvfølgelig lave de andre finurligheder også, måske suppleret med en redirect i stedet for alerten !-)
.htaccess-løsningen er dog også ganske simpel, hvis ellers udbyderen tillader den slags uden problemer !o]
Du skal ikke skrive brugersidens navn nogle steder:
Kopier terraks javascript-blok og form over til login-siden:
<script type="text/javascript"> function checkpw() { if (document.getElementById('checkpw').name == "loaded") { document.location.href=document.getElementById('checkpw').src; } else { alert('Forkert kode!');//og sæt en redirect til en fejl-side her } } </script>
Forresten, så er der 2 dårlige sider så vidt jeg kan se.
1. Der går mere end 1 sekund for javascript koden bliver kørt, så variablen er stadig "notloaded" når den bliver tjekket.
2. Der >skal< klikkes på Log ind, enter kan ikke gøre det. Det kan dog rettes ved at fjerne 'onClick' fra submit knappen, og sætte indholdet ind i 'onSubmit' på formen. Sådan her: <form onsubmit="document.getElementById('checkpw').src=this.pw.value+'.htm';window.setTimeout('checkpw()',1000);return false;">
og
<input type="submit" value="Log ind">
som den var til at starte med.
Synes godt om
Ny brugerNybegynder
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.