Avatar billede ferrari_brian Nybegynder
08. december 2002 - 20:45 Der er 49 kommentarer og
2 løsninger

Password i PHP

Hej...

Jeg har et lille problem... jeg skal have lavet et password-bekyttelse og det SKAL være i php.

Jeg er helt på bar bund... nogen der har nogle forslag eller et sted der står om hvordan man laver sådan en fætter.. ??? PLEASE... :-)
Avatar billede abpdk Nybegynder
08. december 2002 - 20:48 #1
Hvordan har du tænkt dig det skulle foregå. Passwords lagret i filer, databaser eller slet ikke?

PS: Tror du ikke dette spørgsmål hører hjemme i PHP kategorien.
Avatar billede backside Nybegynder
08. december 2002 - 20:51 #2
Avatar billede backside Nybegynder
08. december 2002 - 20:52 #3
Avatar billede ferrari_brian Nybegynder
08. december 2002 - 20:52 #4
jo det hører nok til i php-kategorien.. men jeg syntes ikek lige jeg kunne finde det da jeg oprettede dette...

jeg ved ikke lige hvordan det skal lagres... jeg har bare fået stukket den opgave ud (i skolen) men vi har ikke noget i nogen bøger der kan hjælpe... :-(
Avatar billede backside Nybegynder
08. december 2002 - 20:54 #5
Den fra hotscripts er nem at gå til.
Avatar billede ferrari_brian Nybegynder
08. december 2002 - 20:55 #6
okay... det må jeg lige prøve..
Avatar billede backside Nybegynder
08. december 2002 - 20:55 #7
Den anden er på italiensk, kræver at man enten kan PHP eller Italiensk.  *G*
Avatar billede abpdk Nybegynder
08. december 2002 - 21:04 #8
Avatar billede abpdk Nybegynder
08. december 2002 - 21:05 #9
Avatar billede webcreator Nybegynder
08. december 2002 - 21:10 #10
Hvis du vil lave en simpel, effektiv og nem løsning, så lav det vha. variabler.

Del det således op:
I den første fil har du en ganske normal form, hvor man kan skrive brugernavn og password. Dette sendes fx. til tjek.php

I tjek.php sammenlignes det, som brugeren indtastede, med det der står i secure.php

Secure.php indeholder brugernavn og password. Disse er gemt i variabler.

--------------

Det du så skal gøre i tjek.php er, at "include" secure.php. Derefter sammenligner du det, som brugeren indtastede (Det kan også lagres i en variable) med det som kommer fra secure.php. Hvis pass og username er korrekt, gives adgang til den skjulte side.

Sådan har jeg lavet mit system. Har endvidere modificeret det, så der kan være flere brugere, og hver bruger kan have sin egen side..


Ingen svære database-løsninger..

Jeg er selv nybegynder i PHP, så synes at denne løsning er ganske udemærket.
Det tog mig ca. 10 minutter at lave. Ta evt. et kig på www.webcafe.dk 's udemærket PHP-guide. Den er på dansk..
Avatar billede webcreator Nybegynder
08. december 2002 - 21:16 #11
Hvis du skal have yderligere hjælp, så sig endelig til :o)
Avatar billede abpdk Nybegynder
08. december 2002 - 21:18 #12
webcreator>> Din løsninge er bare ikke meget værd hvis man skal tilføje flere brugere løbende, men ellers er det vel en meget god måde at lære det på.
Avatar billede ferrari_brian Nybegynder
08. december 2002 - 21:18 #13
ja det vil jeg da gøre.... men det ser da ud til at det er den uden database jeg skal bruge... for som sagt jeg er ikek så meget inde i det... Så kan det andet komme til senere...

Men jeg prøver at se om jeg kan få det til at virke... og så vender jeg selvfølgelig tilbage med nogle points... :-)
Avatar billede ferrari_brian Nybegynder
08. december 2002 - 21:20 #14
abpdk>> jeg prøver webcreators først og så ser vi om det går godt... og så må jeg lige prøve det andet...
Avatar billede webcreator Nybegynder
08. december 2002 - 21:27 #15
Ferrari_Brian > Du er velkommen til at spørge undervejs.. Jeg går dog snart i seng, men kan nok træffes igen i morgen aften :-)
Avatar billede ferrari_brian Nybegynder
08. december 2002 - 21:30 #16
jeg vil gerne vide hvordan man laver sådan at der er kan være flere brugere end en og om de evt kan komme på den samme side og eller forskellige sider afhængig af brugernavn/pass
Avatar billede ferrari_brian Nybegynder
08. december 2002 - 21:35 #17
Sådan har jeg lavet mit system. Har endvidere modificeret det, så der kan være flere brugere, og hver bruger kan have sin egen side..

hvordan??
Avatar billede abpdk Nybegynder
08. december 2002 - 21:36 #18
Det kan godt lavet med brugernavne/passwords lagret i filer, men mysql er en bedre og mere fleksibel løsning.
Avatar billede ferrari_brian Nybegynder
08. december 2002 - 21:39 #19
abpdk>> jeg ved godt MySQL er bedre men jeg har ikke adgang til database lige nu... men jeg vil meget gerne lave det når jeg får adgang til dette...

det MySQL gør er det ikke at den automatisk kan lave en ny bruger??? eller har jeg forstået det forkert??
Avatar billede webcreator Nybegynder
08. december 2002 - 21:42 #20
Ferrari > Du kan sagtens have flere brugere. Bare angiv det antal variabler, der svare til antallet af brugere.

Dvs. at du desværre kommer til at tjekke flere gange i din tjek.php-fil.

Hvis du fx. har 2 brugere i din secure.php-fil, så kan du organisere det således:

$usr1 = admin
$pas1 = 1234

$usr2 = root
$pas2 = test

.....

I din tjek.php fil må du så bede dokumentet om, at tjekke alle variabler.

Dvs. hvis usr1 = indtastet1  (hvor indtastet1 er det, som brugeren skrev), og
hvis pas1 = pasindtast1, så viderbringes brugeren til et nyt site.
Avatar billede abpdk Nybegynder
08. december 2002 - 21:43 #21
Det er PHP der gør det hele. Mysql er bare en database. Fordelen ved at bruge mysql er at du kan søge efter data MEGET hurtigere end hvis det f.eks. ligger i filer.
Avatar billede webcreator Nybegynder
08. december 2002 - 21:43 #22
.. Hvis ovenstående ikke er tilfældet, så fortsættes der til en ny linie, hvor der tjekkes for person nr. 2.
Avatar billede abpdk Nybegynder
08. december 2002 - 21:44 #23
webcreator>> Det bliver da hurtigt forvirrende!
Avatar billede webcreator Nybegynder
08. december 2002 - 21:45 #24
Jeg synes, at det er en udemærket ide, at starte med filer som database. Det er korrekt, at SQL-databaser er hurtigere.. Men hvis du kun skal have plads til fx. 20-50 brugere, ja så mærker du næppe den store forskel..
Avatar billede webcreator Nybegynder
08. december 2002 - 21:46 #25
abpdk > Synes jeg ikke :-)

Hvis man strukturere sit dokument ordentligt, så kan det blive meget overskueligt..
Avatar billede webcreator Nybegynder
08. december 2002 - 21:47 #26
Man brugte da tekst-databaser i de gamle CGI/Perl dage.. De overlevede da..
Avatar billede webcreator Nybegynder
08. december 2002 - 21:48 #27
SQL er kun en fordel, hvis man har et større antal brugere.. Flere tusinde..
Avatar billede abpdk Nybegynder
08. december 2002 - 21:52 #28
Det er rigtigt, men at skrive dataen manuelt ind i filerne er bare en anelse for besværligt når der er mere end bare ét par brugere. Det er godt som en øvelse før man tilføjer f.eks. database delen, men ellers er det bøvet.
Avatar billede ferrari_brian Nybegynder
08. december 2002 - 21:54 #29
er der en nem måde at tilføje en database til den model som webcreator har givet??? (fx den der er på www.webcafe.dk) eller skal jeg lave en helt anden og følge de engelske opskrifter der er givet??
Avatar billede webcreator Nybegynder
08. december 2002 - 21:56 #30
Tja - men der er vel forskel på, hvordan man arbejder. Hvis jeg fx. skulle hen og tilføje 40 brugere, så ville jeg foretrække at gøre det i en tekstfil.. Copy/paste er ganske god i den sammenhæng.
Avatar billede webcreator Nybegynder
08. december 2002 - 21:56 #31
Ferrari > Jamen tekst-filen er jo lige netop din database :-)
Den jeg kalder secure.php
Avatar billede ferrari_brian Nybegynder
08. december 2002 - 21:57 #32
ja okay.. men det var nu det med SQL... for det får jeg en gang så det ville da være dejligt at det var nemt at lave om...
Avatar billede webcreator Nybegynder
08. december 2002 - 22:06 #33
Nemt at lave om ? Jamen der er ikke så meget at lave om.. tror du skal skrive 15-20 linier i PHP - det er alt :-)
Avatar billede webcreator Nybegynder
08. december 2002 - 22:07 #34
Jeg går i seng nu, men tjekker igen i morgen. Nat..
Avatar billede ferrari_brian Nybegynder
08. december 2002 - 22:07 #35
okay... takker... jeg prøver... :-)
Avatar billede webcreator Nybegynder
09. december 2002 - 13:29 #36
http://www.jemt.h4f.dk/web/login/login.html

Ovenfor kan Du se mit system i aktion.

Bruger nr. 1 :
usr = "admin"
psw = "login"

Bruger nr. 2
usr2 = "root"
psw2 = "fint"

Tænkte at Du måske var interesseret i at se, hvordan det tager sig ud og fungere :-)
Avatar billede webcreator Nybegynder
09. december 2002 - 13:32 #37
Bemærk, at serveren det ligger på, er ret sløv. Det er _ikke_ fordi at PHP-systemet er langsomt :-)

Men har desværre ikke andre steder, jeg kan uploade det lige nu..
Avatar billede ferrari_brian Nybegynder
09. december 2002 - 22:36 #38
<?php


if(!isset($_REQUEST["b_navn"]) OR !isset($_REQUEST["p_word"])){
    // Fejlmeddelelse
    echo "Forkert brugernavn og/eller password";
    exit;
}

else {


    $brugernavn = "brian";
    $password = "nairb";

    $bruger2 = "user1";
    $pass2 = "wryip2";
   
    $bruger3 = "user2";
    $pass3 = "adgjl3";
   
    $bruger4 = "bruger2";
    $pass4 = "sfhk22";
   
    $bruger5 = "bruger3";
    $pass5 = "iejdl5";
   


    if($_REQUEST["b_navn"] != $brugernavn OR $_REQUEST["p_word"] != $password){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }
elseif ($_REQUEST["b_navn"] != $bruger2 OR $_REQUEST["p_word"] != $pass2){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }
elseif ($_REQUEST["b_navn"] != $bruger3 OR $_REQUEST["p_word"] != $pass3){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }
elseif ($_REQUEST["b_navn"] != $bruger4 OR $_REQUEST["p_word"] != $pass4){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }
elseif ($_REQUEST["b_navn"] != $bruger5 OR $_REQUEST["p_word"] != $pass5){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }

     
     
     

    else{
?>
<html>
<head>
<title>Den meget hemmelige side</title>
</head>
<body>

<h1>Login godkendt</h1>

Du er logget ind som
<b><?php echo "$_REQUEST[b_navn]";?></b>
med password:
<b><?php echo "$_REQUEST[p_word]";?></b>.

</body>
</html>
<?

  }
}
?>

Hvad er der galt her??? den siger hele tiden forkert password
Avatar billede abpdk Nybegynder
09. december 2002 - 22:57 #39
Inden du gør det værre end der er, så prøv lige om følgende ikke virker:

<html>
  <body>
<?php
  if ($submit) {
    if ($user == 'brugernavn' && $pass == 'password') {
      echo "Adgang givet.\n";
    } else {
      echo "Adgang nægtet!\n";
    }
  } else {
?>
    <form method="post" action="<?php echo $PHP_SELF; ?>">
      <input type="text" name="user"><br>
      <input type="pass" name="pass"><br>
      <input type="submit" name="submit" value="submit">
    </form>
<?php
}
?>
  </body>
</html>
Avatar billede ferrari_brian Nybegynder
09. december 2002 - 22:59 #40
Det hele virker hvis jeg kun har en bruger altså hvis bruger2 til bruger5 ikek var der og dermed at følgende blev slettet:

elseif ($_REQUEST["b_navn"] != $bruger2 OR $_REQUEST["p_word"] != $pass2){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }
elseif ($_REQUEST["b_navn"] != $bruger3 OR $_REQUEST["p_word"] != $pass3){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }
elseif ($_REQUEST["b_navn"] != $bruger4 OR $_REQUEST["p_word"] != $pass4){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }
elseif ($_REQUEST["b_navn"] != $bruger5 OR $_REQUEST["p_word"] != $pass5){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }
Avatar billede abpdk Nybegynder
09. december 2002 - 23:03 #41
Jeg forstår slet ikke hvad du skal med alle de "exit"!?
Avatar billede ferrari_brian Nybegynder
09. december 2002 - 23:06 #42
Det hjalp at slette de der "exit" for nu logger den ind men viser bare en tom side...
Avatar billede abpdk Nybegynder
09. december 2002 - 23:08 #43
Ja selvfølgelig, hvad skulle den ellers gøre? Du har en masse if-sætninger der alle tager høje for hvad der skal ske hvis du angiver det forkerte brugernavn/password men hvad når du taster rigtigt?
Avatar billede ferrari_brian Nybegynder
09. december 2002 - 23:10 #44
Lave det her:
<html>
<head>
<title>Den meget hemmelige side</title>
</head>
<body>

<h1>Login godkendt</h1>

Du er logget ind som
<b><?php echo "$_REQUEST[b_navn]";?></b>
med password:
<b><?php echo "$_REQUEST[p_word]";?></b>.

</body>
</html>
Avatar billede ferrari_brian Nybegynder
09. december 2002 - 23:13 #45
rent faktisk logger den også ind hvis jeg ikke skriver et password... :-(
Avatar billede abpdk Nybegynder
09. december 2002 - 23:14 #46
Ok jeg misforstod dit script lidt, jeg troede det hele foregik i samme dokument (det er nemmere!).
Avatar billede ferrari_brian Nybegynder
09. december 2002 - 23:16 #47
<?php


if(!isset($_REQUEST["b_navn"]) OR !isset($_REQUEST["p_word"])){
    // Fejlmeddelelse
    echo "Forkert brugernavn og/eller password";
    exit;
}

else {


    $brugernavn = "brian";
    $password = "nairb";

    $bruger2 = "user1";
    $pass2 = "wryip2";
   
    $bruger3 = "user2";
    $pass3 = "adgjl3";
   
    $bruger4 = "bruger2";
    $pass4 = "sfhk22";
   
    $bruger5 = "bruger3";
    $pass5 = "iejdl5";
   


    if($_REQUEST["b_navn"] != $brugernavn OR $_REQUEST["p_word"] != $password){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }
elseif ($_REQUEST["b_navn"] != $bruger2 OR $_REQUEST["p_word"] != $pass2){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }
elseif ($_REQUEST["b_navn"] != $bruger3 OR $_REQUEST["p_word"] != $pass3){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }
elseif ($_REQUEST["b_navn"] != $bruger4 OR $_REQUEST["p_word"] != $pass4){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }
elseif ($_REQUEST["b_navn"] != $bruger5 OR $_REQUEST["p_word"] != $pass5){
      // Fejlmeddelelse
      echo "Forkert login";
      exit;
      }

     
     
     

    else{
?>
<html>
<head>
<title>Den meget hemmelige side</title>
</head>
<body>

<h1>Login godkendt</h1>

Du er logget ind som
<b><?php echo "$_REQUEST[b_navn]";?></b>
med password:
<b><?php echo "$_REQUEST[p_word]";?></b>.

</body>
</html>
<?

  }
}
?>

er det ikek samme dokument???

Ok jeg har en side med en form (html):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Login.html</title>
</head>
<body>

<form action="vigtigside.php" method="post">
<table>
<tr>
    <td>Brugernavn:</td>
    <td><input type="text" name="b_navn" size="20"></td>
</tr>
<tr>
    <td>Password:</td>
    <td><input type="password" name="p_word" size="20"></td>
</tr>
<tr>
    <td></td>
    <td><input type="submit" value="        Login        "></td>
</tr>
</table>
</form>

</body>
</html>
Avatar billede abpdk Nybegynder
09. december 2002 - 23:18 #48
Ikke så vidt jeg kan se. Prøv at se den kode jeg postede før...DET er i samme dokument.
Avatar billede ferrari_brian Nybegynder
09. december 2002 - 23:24 #49
jeg kan ikek få den til at du den du postede... den sender jo heller ikke en videre til en ny side...
Avatar billede ferrari_brian Nybegynder
11. december 2002 - 22:38 #50
jeg har fundet noget andet som jeg har brugt... men jeg deler pointsene alligevel...

backsides forslag kunne jeg ikke rigtig bruge til noget... sorry..
Avatar billede webcreator Nybegynder
12. december 2002 - 19:12 #51
Mange tak for points :-)
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