Gå til innhold

Hjelp med passord felt


Anbefalte innlegg

Hei!

 

Jeg trenger litt hjelp med et skjema i php som sender til en mysql database.

 

Skjemaet er laget slik at brukeren skriver inn brukernavnet sitt og passordet i to felt først, så skriver han/hun inn i de resterende feltene. Php scriptet sjekker om brukernavn og passord er fylt ut og om de stemmer overens med hverandre. Hvis det er tilfellet legger det informasjonen i de andre feltene inn i databasen. MEN hvis brukernavn og passord ikke stemmer så sendes brukeren til en feilmeldingside hvor det står "Brukernavn og passord stemmer ikke, gå tilbake". Når brukeren da går tilbake forsvinner det passordet han/hun allerede hadde skrevet inn mens brukernavnet fortsatt står. Dette er på grunn av at passordfeltet er i sånn krypterte tegn.(*****)

 

Hvordan kan jeg la både passordet og brukernavnet bli stående?

 

Virker sikkert litt ulogisk å bruke denne metoden opp mot en innloggingssystem, men det skal være mulig for en administrator å sende fylle ut flere skjemaer samtidig og deretter la brukeren bare skrive inn passordet sitt, og hvis en har 10 skjemaer som er fyllt ut med passord og et ikke stemmer, må alle de 9 andre brukerne komme tilbake å fylle ut passordet på nytt.. Hvordan løser jeg dette?

 

Har tenkt på en slags "live-sjekk" hvor det lyser grønn i en rute om brukernavn og passord stemmer og rødt hvis det ikke stemmer med en gang, uten at en blir sendt videre til en annen side. Er dette mulig og hvordan?

 

Ble et veldig langt spørsmål om et "lite" problem, men men..

 

På forhånd, takk for svar!:)

 

-Theo

Lenke til kommentar
Videoannonse
Annonse

Takk for svar.

 

Har googlet en del nå, men finner ikke det jeg leter etter hverken innen php eller java.

 

Vet jo at det er mulig, har sett det andre steder.

 

Er det mulighet for å få en spesifik del av php koden til å kjøre seg selv om igjen å om igjen hele tiden? På den måten kunne jeg jo ha lagt inn det som nå kjøres etter submit inni selve skjemaet.

Lenke til kommentar

PHP er serverside som betyr at det må kjøre ferdig før det sender output til klient. Lager du en loop i php som forventer interaksjon med klient vil du ende opp med en run timeout.

 

Løsningen til problemet ditt ligger nok i javascript.

 

<script type="text/javascript">

function update () {
 var passbuf = document.getElementById( "passbuffer" ).value;
 var pass = document.getElementById( "passwd" ).value;

 if ( pass.length > 0 ) {
passbuf += substr( pass, pass.length - 1 );
pass = substr( pass, 0, pass.length - 1 ) + "*";
 }
}

function chtopass (this) {
 document.getElementById("passwd").value = document.getElementById("passbuffer").
 this.submit();
}

</script>

<form>
<input type="hidden" name="passbuffer" id="passbuffer" />
<input type="text" name="passwd" id="passwd" onkeyup="update();" />
<input type="submit" onclick="chtopass(this);" />
</form>

 

Utestet. men du kan gjøre noe liknende.

Om det ikke er noe feil vil denne koden maskere passord slik man er vant med i et type="password" felt, bare at det brukes et vanlig type="text" felt. når brukeren klikker submit vil passordet dukke opp i textruten like før dokumentet sendes.

 

Det bør også skrives litt kode for å se om brukeren har klikket tilbake og i så fall skjule passordet igjen.

Endret av grimjoey
Lenke til kommentar

Hmm.. En god idè, men tror det kan by på litt problemer med at den skal sjekke opp mot databasen om brukeren og passordet stemmer osv..

 

Fikk et tips om å prøve AJAX til dette problemet.. Googlet litt rundt å fant masse rart, men ingenting som hjalp særlig mye mer..

 

Any ideas?

 

Takk for svar, nok en gang!:)

Lenke til kommentar

Dersom koden fungerer skal det ikke by på noen problemer med sjekking av passord mot db. Når du klikker logg inn gjøres **** om til passordet skrevet inn like før post infoen sendes.

 

Problemet er at dersom passordet er feil og brukeren klikker seg tilbake, vil passordet være synlig i klartekst. Løsning på dette er en body onload="" funksjon som sjekker om det er skrevet inn noe passord, kopierer dette til document.getElementById("passbuffer").value og skriver inn **** med samme lengde som passordet. btw: en ting jeg glemte var dersom brukeren skulle trykket backspace ville koden min bare gjentatt siste bokstav i passbuffer og skrevet inn enda en * i passwd. Dette må eventuelt fikses hvis du skal bruke en slik løsning.

 

Skulle du hatt live sjekking måtte du ha skrevet alle passordene fra databasen i form av javascript variabler når siden genereres. (ikke så smart uansett om det er hash eller ikke). Du kunne sikkert fått til noe sikrere med ajax da.

 

Leste litt nøyere i posten din nå. Kan du forklare litt nøyere hva det dreier seg om? Hvorfor skal en administrator sende skjema for 10 brukere?

Lenke til kommentar

Grunnen til at administrator skal kunne sende 10 skjemaer for brukerne, er fordi dette er en slags utsjekk side på et lokalt nettverk.. Litt vanskelig å forklare fordi jeg vet ikke alt selv, men slik jeg har fått det forklart så skal det være mulig for admin å registrere flere brukere samtidig.

 

Prøver meg litt på AJAX, men det er søren ikke lett!:p

 

grimjoey:

Vet du forresten om det er et "enkelt" script for å kjøre et php script gjennom java eller AJAX.. på den måten kunne jeg jo hatt et eget dokument som het feltvalidering.php som ble aktivert da "onkeyup" på passordfeltet... Any idea?

Endret av Theodorl
Lenke til kommentar

jeg har lite greie på ajax egentlig. for å kjøre et php script med java gjør du bare en request med 'location.href = http://full.url.til/side.php';

 

for å sende data må du legge til noen get variabler.

 

tenkte du på å sende hvert tastetrykk til en annen php side for å validere? det kan sikkert gjøres, men virker litt tungvint. da må du i så fall lagre bokstavene i session.

 

en ting jeg lurer på er hvordan kan passordet kan bli feil dersom man registrerer en bruker? da bør det jo ikke være passordvalidering. (for å validere passord må brukeren allerede være registrert)

Lenke til kommentar

jeg forstår fortsatt ikke hvorfor admin må skrive inn 10 passord dersom han skal endre info på 10 brukere. systemet burde være slik at det holder med administrator passordet for å kunne endre informasjon.

 

krosjefen: det er naturlig at en input type="passord" ikke vises når man klikker tilbake fordi dataene i et passordfelt aldri skal lagres av browseren (dersom ikke brukeren utrykkt vil det). og jeg ville ikke kalt det kryptert passord. det er bare at tegnene skjules og det blir printet ut * (asterisk) for å indikere input.

Lenke til kommentar

jeg tror problemet kan løses bedre et annet sted i koden.

 

jeg har også svart på det spørsmålet. javascript må benyttes. eller sett input type til text og sørg for at ingen ser på skjermen når passordet skrives inn. (enten har administratoren passordene til 10 brukere som i og for seg er utryggt, ellers lagres passordene som klartekst i databasen som også er dårlig sikkerhet. i siste tilfellet er vel problemet løst. dette om ikke alle brukerene er nødt til å skrive inn passordet når administratoren skal poste da noe som virker litt tungvint)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...