Gå til innhold

Funksjon for å sjekke om et ord er arrayvariabel


Anbefalte innlegg

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
Videoannonse
Annonse

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

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

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

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

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

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 av Rinox
Lenke til kommentar

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

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...