Avatar billede djalex Praktikant
07. november 2007 - 14:32 Der er 11 kommentarer og
1 løsning

SImpelt password validerings script

Hej Eksperter!

Jeg kunne godt tænke mig et simpelt valideringssystem med engangskoder.

Jeg har fundet dette:
http://www.webmasterworld.com/php/3467652.htm

Men kunne godt tænke mig det uden at der var brugernavne på.
Kan det lade sig gøre at modificere dette script, så det kun har passwords i et array og så sletter det efter brug?

Er der nogen der relativt nemt kan modificere scriptet eller lave et nyt som virker til mig?

pft, Alex
Avatar billede djalex Praktikant
07. november 2007 - 20:42 #1
Ikke nogen der er friske på at hjælpe ?
Avatar billede w13 Novice
07. november 2007 - 20:52 #2
Hvad mener du med engangskoder?
---------------------------------
if($_POST['password']=='1234'){
  // Vis siden
}else{
  // Send dem tilbage til login
  header('Location: login.php');
}
----------------------------------
Übersimpelt password-funktion.
Avatar billede djalex Praktikant
08. november 2007 - 08:24 #3
Med engangskoder mener jeg at når koden er brugt, så bliver den slettet fra array'et...

Det skal bruges til at reservere bord med, men for at forhindre misbrug skal hver kode kun kunne bruges en gang...
Avatar billede djalex Praktikant
08. november 2007 - 08:26 #4
Ikke nødvendigvis fra et array, jeg har self også en sql database til rådighed, men lige den jeg selv fandt bruger jo bare et array i en anden fil :)
Avatar billede w13 Novice
08. november 2007 - 14:05 #5
Men hvordan skal dine brugere så kende kodeordet?
Avatar billede djalex Praktikant
08. november 2007 - 14:28 #6
Jeg sender dem en engangskode pr mail eller sms :)
Avatar billede w13 Novice
08. november 2007 - 23:18 #7
Okay. Men det er et stort system jo... Så skal du vel have kodeordene i en database knyttet til brugernes brugernavne/tlf.nr./mailadresser. Og så hente fra databasen, når brugeren prøver at logge ind...
Avatar billede djalex Praktikant
09. november 2007 - 07:25 #8
Nej jeg havde ikke tænkt mig at knytte noget som helst sammen.

Det drejer sig om 40 brugere ca, så altså 40 engangskoder.

Grunden til at jeg vil have engangskoder er for at undgå misbrug. Hvis jeg sender dem en kode som du har foreskrevet (og som jeg har brugt indtil videre) - så begynder de også bare at reservere bord til deres venner osv. Derfor vil jeg bruge engangskoder, som jeg så først sender dem når betalingen er registreret :)
Avatar billede djalex Praktikant
09. november 2007 - 14:01 #9
Jeg er nået hertil, men den passwords.php bliver udskrevet på skærmen også, hvorfor?

<?
include('passwords.php');

$pass = $_POST['password'];

$key = array_search($pass, $valid);

//obs $key er false, hvis den ikke kan finde den i passwordlisten

if( $key ) 
// let them in
{

//en masse kode

// remove password from array
unset($valid[$key]);

// save new list to file
$f = fopen('passwords.php','w+');
fputs($f, '<'.'?'."php\n");
fputs($f, '$valid = array('."\n");
foreach($valid as $u => $p) {
if (isset($valid[$u]))
fputs($f, "'$u' => '$p'\n");
}

fputs($f, ');');
fputs($f, '?'.'>');
fclose($f);
}

else
{
Echo "Fejl";
}
?>

Men det lader til at den "array_search" funktion ikke kan finde ud af det, fordi den streng den skal søge på kommer fra en variabel (som om den ikke oversætter variablen inden den søger, hvordan kan dette løses?
Avatar billede webstuff Nybegynder
13. november 2007 - 12:41 #10
Hvorfor ikke bare oprette et password når brugeren bestiller, f.eks

$pass = substr(md5(time()), 0, 6);

og så gemme det i databasen med tlf, email og hvad brugeren ellers oplyser.
Avatar billede djalex Praktikant
13. november 2007 - 13:10 #11
Jeg har fået lavet det nu...

Koden er som følger:


<?

include 'passwords.php';

$pass = $_REQUEST['password'];

$key = array_search($pass , $valid);

//obs $key er false, hvis den ikke kan finde den i passwordlisten

if( $key || ($key == 0 && ($valid[0] == $pass)))   
// let them in
{
echo "Rigtig kode";


// remove password from array
unset($valid[$key]);

// save new list to file

$f = fopen('passwords.php','w+');
fwrite($f, '<'.'?'."php\n");
fwrite($f, '$valid = array('."\n");

$firstRun = true;

foreach($valid as $u)
{
  if ($firstRun)//første gang den køres, sætter vi ikke komma foran
  {
    fwrite($f, "'$u'");
    $firstRun = false;
  }
  else //ellers sætter vi komma foran
  {
    fwrite($f, ",\n'$u'");
  }
}

fwrite($f, ');');
fwrite($f, '?'.'>');
fclose($f);

}

else
{
echo "Forkert kode";
}
?>
Avatar billede djalex Praktikant
13. november 2007 - 13:12 #12
Webstuff, fordi jeg ikke gider at gå det hele igennem manuelt bagefter...

Derfor ville jeg have engangskoder som jeg kunne udlevere - og så slipper jeg for at tænke mere over det...
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester