Beethoven Skrevet 3. juli 2005 Del Skrevet 3. juli 2005 Hei, Jeg er usikker på hvordan jeg skal få til slik at PHP går igjennom alle filene i en mappe, og ser etter om den finner ”den” variabelen, og at den er lik en annen, som da er i filen som leter etter det. Jeg klarer ikke tenke ut en måte jeg skal gjøre det på. Blir som prinsippet til MySQL: SELECT * FROM brukere WHERE brukernavn=$brukernavn AND passord=$passord. Bare med flat filer. Noen som vil vise meg, eller gi tips? Hvis dere lurer på hvordan filene blir bygd opp så skal de være slik: <?php $brukernavn = "Per"; $passord = "MD5HASH"; // osv... ?> Takk. Lenke til kommentar
Peter Skrevet 3. juli 2005 Del Skrevet 3. juli 2005 (endret) Er dessverre litt sent nå, så jeg gir deg bare noen pekere: (Sørg for å se på eksemplene!) For å sjekke ut en mappe: http://no.php.net/manual/en/function.opendir.php For å lese en fil: http://no.php.net/file <- tror denne er best i ditt tilfelle. http://no.php.net/manual/en/function.readfile.php For å lete igjennom arrayet som tilsvarer strengene i filen: http://no.php.net/foreach http://no.php.net/strstr eller http://no.php.net/manual/en/function.strpos.php <- raskere en strstr() For å dele opp en streng i variabelnavn og variabelverdi: http://no.php.net/explode Håper dette hjelper, hvis ikke, beklager jeg at jeg ikke kan svare mer utfyllende nå. P.S En annen mulighet er å bruke array_search() og se etter verdien du vil matche. F.eks. Du har passord "abc123" og vil se om det finnes i filen. array_search('abc123', $array_fra_file); Endret 3. juli 2005 av Nazgul Lenke til kommentar
kakkle Skrevet 4. juli 2005 Del Skrevet 4. juli 2005 Hmmm... Skjønner problemer, tror jeg. Filen er altså slik hele veien: $brukernavn = "Per"; $passord = "MD5HASH"; $brukernavn = "Ole"; $passord = "OleMd5Hash"; osv... HVa med å gjøre et søk etter rett brukernavn først, når den finner rett brukernavn, bruker du linjenumeret som det brukernavnet står i, til å sjekke passordet, som skal ligge i neste linje. Lenke til kommentar
Beethoven Skrevet 4. juli 2005 Forfatter Del Skrevet 4. juli 2005 Det var ikke sånn jeg tenkte kakkle... Jeg tenkte har vær bruker fikk vær fil. Skjønner? Lenke til kommentar
Yankes Skrevet 4. juli 2005 Del Skrevet 4. juli 2005 Beethoven; det er jeg også ute etter. At hver bruker har hver sin fil. Så når noen skal logge seg inn og skriver brukernavn og passord så søker evt. PHP koden gjennom alle filene som er i en mappe og ser om det er brukernavn og passord som passer sammen som oppgitt! Lenke til kommentar
zokra Skrevet 4. juli 2005 Del Skrevet 4. juli 2005 (endret) Det er to enkle muligheter til å løse dette problemet: -Hver bruker har sin egen fil -Brukere lagres som brukernavn//passsord i filen, uten noen php-kode Endret 4. juli 2005 av zokra Lenke til kommentar
Yankes Skrevet 4. juli 2005 Del Skrevet 4. juli 2005 Mener du at filen til brukerene skal hete "brukernavn//passord" ? Men hvordan da få til at akkurat den fila blir hentet frem da noen skriver det brukernavnet og det passord som den fila heter? Lenke til kommentar
kakkle Skrevet 4. juli 2005 Del Skrevet 4. juli 2005 (endret) Det er veldig mye greiere når hver bruker har hver sin fil, da... Er filene navngitt etter brukernavn, eller ? Her er vel hva zokra mener, kanskje: bruker1.php: id//3; brukernavn//bruker1 passord//md5greie realname//Bruker brukersen // osv... Evt så kan denne brukes på flere brukere: id//brukernavn//passord//fullnavn//email 1//bruker1//md5pass//Bruker Brukersen//[email protected] 2//bruker2//md5pass//user userson//[email protected] osv... Da trenger man bare en fil for alle brukere. Synes det er mye greiere, og mye bedre og jobbe med. En funksjon, som går ut fra første flatfil eksempel: function getUserData($user) { $readfile = file("$user.php"); $lines = count($readfile); $line = 0; while($line < $lines) { $data = explode ("//", $readfile($line)); if($data[0] == "brukernavn") $brukernavn = $data[1]; if($data[0] == "passord") $passord = $data[1]; if($data[0] == "realname") $realname = $data[1]; $lines++; } // End while $retarray = array(brukernavn => "$brukenavn", passord=>"$passord", realname=>"$realname"); return $retarray; }// End function Er slett ikke testet. Kan bruke hva som helst som seperator. F,eks "|@-+!|" Endret 4. juli 2005 av kakkle Lenke til kommentar
Beethoven Skrevet 4. juli 2005 Forfatter Del Skrevet 4. juli 2005 Så det er ingen som har AKKURAT det jeg er ute etter ? Lenke til kommentar
kakkle Skrevet 4. juli 2005 Del Skrevet 4. juli 2005 Hvordan har du navngitt filene ? Tilfeldig ? Etter brukernavn ? Regner med at du ikke har navngitt dem etter brukernavn. Hva har du prøvd ? Hvor står det fast ? En liten oppskrift Loop gjennom katalogen med filer. Sjekk hver fil vha file(), explode(), om du finner rett brukernavn. (Vha av å sjekke om explode(" = ", file("filnavn")[linjepeker])[0] er $brukernavn) Gjør det det, sjekk i samme filen om passordet stemmer. Bør vel kanskje bytte ut $ tegnet i med noe annet, før du sammenligner. Se på linkene som nazgul postet i første svar Lenke til kommentar
Cucum(r) Skrevet 5. juli 2005 Del Skrevet 5. juli 2005 Herregud, kvifor ikkje berre bruke SQL til eit slikt formål? Lenke til kommentar
Magnus Holm Skrevet 10. juli 2005 Del Skrevet 10. juli 2005 Hmm... Noe sånt: <?php $brukernavn = $_POST['user]; $passord = md5($_POST['pass']); $mappe = "bruker/" // Husk "/" på slutten! Og at mappa er skrivbar! $fil = $mappe.$brukernavn.".txt"; $innhold = file_get_contents($fil); if (file_exists($fil)) { if ($passord == $innhold { echo "Hemmlig innhold"; } else { echo "Feil passord"; } } else { echo "Fant ikke brukernavn"; } ?> Og for ny bruker: <?php $brukernavn = $_POST['user]; $passord = md5($_POST['pass']); $mappe = "bruker/" // Husk "/" på slutten! Og at mappa er skrivbar! $fil = $mappe.$brukernavn.".txt"; if (file_exists($fil)) { echo "Brukernavn opptatt"; } else { $handle = fopen($fil, "w"); fwrite($handle, $passord); fclose($handle); echo "Registring fullført. Vennligst logg inn."; } ?> Update: <?php $brukernavn = $_POST['user]; $passord = md5($_POST['pass']); $nypassord = md5($_POST['nypass']); $mappe = "bruker/" // Husk "/" på slutten! Og at mappa er skrivbar! $fil = $mappe.$brukernavn.".txt"; $innhold = file_get_contents($fil); if (file_exists($fil)) && ($passord == $innhold) { $handle = fopen($fil, "w"); fwrite($handle, $nypassord); fclose($handle); echo "Oppdatering fullført. Vennligst logg inn."; } else { echo "Feil passord"; } ?> Jeg beklager hvis det er noen feil i koden... (Det gikk ganske fort i svingene ) Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå