Rinox Skrevet 23. februar 2007 Del Skrevet 23. februar 2007 Hei! Jeg er nå på jakt etter en funksjon som sjekker om et ord, f.eks. "andreas", er en variabel for en array. Altså hvis en variabel for en array het $andreas ville funksjonen da være true... Har hørt om is_array() funksjonen, men der må jeg skrive inn teksten med $ foran og det vil jeg ikke. Noen ideer her...? Takk for svar Lenke til kommentar
Ståle Skrevet 23. februar 2007 Del Skrevet 23. februar 2007 lager du variabler med et variabelt navn? Det er ikke så lurt, eller?.. har du et eksempel på hvordan du bruker det? Lenke til kommentar
Rinox Skrevet 23. februar 2007 Forfatter Del Skrevet 23. februar 2007 Ja, se i denne koden: <?php //Tillater sessions session_start(); //Henter innloggingsinformasjon fra login.php $post_brukernavn = $_POST['brukernavn']; $post_brukernavn = $_POST['passord']; //Krypterer passord $kryptpass = sha1($post_passord); //Inkluderer all brukerinformasjon require "brukere.php"; if (is_array() Det er altså brukernavnet fra $_POST['brukernavn'] som nå er i variabelen $post_brukernavn. Der er står if (is_array() er ikke koden ferdig... Med is_array funksjonen vil jeg søke etter en variabel som heter det samme som brukernavnet i $post_brukernavn bare med et dollartegn bak seg. For det er jo klart at brukeren som skal skrive inn brukernavnet sitt ikke setter et dollartegn bak.. Skjønner? Lenke til kommentar
Ståle Skrevet 23. februar 2007 Del Skrevet 23. februar 2007 koden $post_brukernavn = $_POST['brukernavn']; gjør sånn at det som er i $_POST['brukernavn'] blir lagret i $post_brukernavn-variabelen. Og du kan hente det ut igjen ved å bruke $post_brukernavn igjen. Navnet på variabelen blir ikke endret når du tilegner den en verdi. Hvis det var det du lurte på Lenke til kommentar
Rinox Skrevet 23. februar 2007 Forfatter Del Skrevet 23. februar 2007 Nei, det er overhode ikke det... Det som er problemet er at jeg skal ha brukernavn-verdien i is_array(), men verdien må få en $ foran... Lenke til kommentar
-morten Skrevet 23. februar 2007 Del Skrevet 23. februar 2007 Skjønner ikke helt hva du mener, men det virker som om du bruker variabler med variable navn, slik Ståle sier. Dersom jeg skriver inn 'morten', vil if (is_array($$post_brukernavn)) sjekke om variabelen $morten er et array. Det du mener? Men denne måten å gjøre det på er ikke den beste. Tolker det som at du da har et array for hver bruker, men det ville vært bedre å ha et stort array som heter $brukere, slik at du får $brukere['morten']['passord'] = 'mittpassord'; osv. Men det med dollartegn bak forstod jeg ikke.. Lenke til kommentar
Rinox Skrevet 23. februar 2007 Forfatter Del Skrevet 23. februar 2007 Du skjønte hva jeg mente if (is_array($$post_brukernavn)) var nok det som skulle til. Du vet jo at dollartegnet forteller php at det er snakk om en variabel Hvilke andre alternativer har vi da? Lenke til kommentar
Rinox Skrevet 23. februar 2007 Forfatter Del Skrevet 23. februar 2007 Noen som har forslag til hvordan jeg kan sjekke om brukernavnet og passord er riktig? Det jeg har nå virker ikke... Her er kodene: registreringsbehandlingen: <?php // Åpner brukere.php for lesing og skriving i slutten av filen $hentbrukere = fopen("brukere.php", "a+"); include 'registrering.php'; // Henter informasjonfra registrering.php $brukernavn = $_POST['brukernavn']; $passord = $_POST['passord']; $bekpass = $_POST['bekpass']; $epost = $_POST['epost']; $ip = $_SERVER['REMOTE_ADDR']; $brukerfil = file_get_contents("brukere.php"); //Beskjeder opprettes i tilfelle feil if (empty($brukernavn) | empty($passord) | empty($bekpass) | empty($epost)) { echo "Et eller flere felter ble ikke fylt inn. Det må du gjøre for å fullføre registreringen.";} else { if (false !== strpos($brukerfil, $brukernavn)) { echo "Brukernavnet du ønsker er allerede i bruk. Velg et nytt."; } else { //Brukernavnet er ledig og behandlignen fortsetter if ($passord != $bekpass) { echo "Passordene du skrev inn er ikke like. Vennligst skriv de inn på nytt så de er like."; } else { //Kryptering av passord $kryptpass = sha1($passord); //Her skal variabelen $brukerinfo inneholde informasjonen som skal skrives inn i brukere.php $brukerinfo = "<?php\n $$brukernavn = array('brukernavn' => $brukernavn, 'passord' => $kryptpass, 'epost' => $epost, 'ip' => $ip);\n?>\n"; $lagbruker = fwrite($hentbrukere, $brukerinfo); fclose($hentbrukere); } } echo "<font color='#009900'>Registreringen er ferdig. Du har opprettet brukeren, <b>$brukernavn</b>. En E-Post har blitt sendt til deg med dine innloggingsdetaljer. Nå kan du <a href='login.php'>logge inn</a></font>"; } ?> loginbehandlingen: <?php //Tillater sessions session_start(); //Henter innloggingsinformasjon fra login.php $post_brukernavn = $_POST['brukernavn']; $post_brukernavn = $_POST['passord']; //Kypterer passord $kryptpass = sha1($post_passord); //Inkluderer all brukerinformasjon require "brukere.php"; if (is_array($$post_brukernavn)) && $kryptpass == $$post_brukernavn['passord']) { session_register("post_brukernavn"); header("Location: hovedside.php"); } else { echo "Brukernavnet eller passordet er feil. Prøv på nytt."; } ?> Lenke til kommentar
-morten Skrevet 24. februar 2007 Del Skrevet 24. februar 2007 Hvis du har tilgang til en database, ville jeg mye heller brukt det... Men hvis du skal gjøre det på denne måten, så lag det i det minste som ett stort array. $brukere['morten']['passord'] = 'mittpassord'; $brukere['morten']['epost'] = 'minepost'; $brukere['morten']['ip'] = '127.0.0.1'; $brukere['rinox']['passord'] = 'lalala'; osv Da får du feks muligheten til å liste alle brukere, noe som ikke går an på den måten du gjør det nå. Sånn $$variabel bør unngås. Og denne linja: if (false !== strpos($brukerfil, $brukernavn)) { er ikke spesielt god, siden ingen kan kalle seg 'ost' fordi den finner den teksten inne i 'epost' osv. Lenke til kommentar
Rinox Skrevet 24. februar 2007 Forfatter Del Skrevet 24. februar 2007 (endret) Takk Morten Dette er mitt første script, så... Men takk for tilbakemeldinger Hva foreslår du å bruke i stedet for "if (false !== strpos($brukerfil, $brukernavn)) {" ? Og kan du forresten skrive inn hvordan det ville bli i scriptet med: $brukere['morten']['passord'] = 'mittpassord'; $brukere['morten']['epost'] = 'minepost'; $brukere['morten']['ip'] = '127.0.0.1'; Tusen takk hvis du kan gjøre det Endret 24. februar 2007 av Rinox Lenke til kommentar
-morten Skrevet 25. februar 2007 Del Skrevet 25. februar 2007 Blir omtrent likt. Under innlogging: if (isset($brukere[$post_brukernavn]['passord']) && $kryptpass == $brukere[$post_brukernavn]['passord']) { Sjekke om bruker finnes: if (false !== strpos($brukerfil, '$brukere['."'$brukernavn']")) { Og legge til ny: $brukerinfo = '<?php'; $brukerinfo .= '$brukere['.$brukernavn."]['passord'] = '$kryptpass';\n"; $brukerinfo .= '$brukere['.$brukernavn."]['epost'] = '$epost';\n"; $brukerinfo .= '$brukere['.$brukernavn."]['ip'] = '$ip';\n"; $brukerinfo .= '?>'; $lagbruker = fwrite($hentbrukere, $brukerinfo); Men altså.. Skal du gå noe lengre enn dette, lær deg SQL og bruk en database Lenke til kommentar
Rinox Skrevet 26. februar 2007 Forfatter Del Skrevet 26. februar 2007 Takk Har lært å bruke databser nå 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å