[PHP] Inlogfunctie zonder database?

Pagina: 1
Acties:
  • 143 views sinds 30-01-2008

  • Thrilled
  • Registratie: Februari 2004
  • Laatst online: 24-08-2024
Is het mogelijk om met een php scriptje een inlogfunctie te maken, zonder daarbij gebruik te maken van databases? Ik heb zeer beperkte kennis van php en men heeft hier een website, waar je pas op mag komen nadat je ingelogd bent. Dus simpelste van het simpelste, een website, met daarvoor een inlogfunctie (met verschillende gebruikers). Maar ik heb al amper verstand van php, en van databases helemaal niks. Op internet zie ik alleen middelen die databases nodig hebben.

Dus bestaat er een manier om een inlogfunctie te maken zonder databases te gebruiken? Of anders een hele simpele copy/paste manier om een inlogfunctie te maken?

  • DizzyWeb
  • Registratie: Februari 2001
  • Laatst online: 20:34

DizzyWeb

Ondertiteld

Als het een Apache server is, kan je via een .htaccess bestandje gewone basic authentication instellen.

Beetje Googlen, is genoeg over te vinden.

  • Thrilled
  • Registratie: Februari 2004
  • Laatst online: 24-08-2024
ik heb verder niet echt info over de server aangezien die 200km verderop staat en niet onder mijn toezicht zit.

  • KatirZan
  • Registratie: September 2001
  • Laatst online: 21-11 13:28

KatirZan

Wandelende orgaanzak

inderdaad werken met .htaccess en .htpass

valt heel veel over te vinden op google

Wabbawabbawabbawabba


  • Totaalgeflipt
  • Registratie: Juli 2006
  • Laatst online: 30-11 08:03

Totaalgeflipt

De enige echte

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$password = "md5codepasswordofietsdergelijks";
$username = "Bert";

if($_POST['password'] == $password) AND ($_POST['username'] == $username)
{
echo "Goezo";
}

else { echo "Foute inlog gegevens"; }

?>


Net ff snel gescript, niet getest. Voorbeeldje

[ Voor 9% gewijzigd door Totaalgeflipt op 23-11-2006 15:34 ]


  • Depress
  • Registratie: Mei 2005
  • Laatst online: 24-11 21:01
Maak een array met de login voor de gebruikers en 1 voor de wachtwoorden. Komt een record met de zelfde key uit beide arrays overeen met de input van de gebruiker, dan is het juist en is hij ingelogd!

Dit moet trouwens in PRG....

[ Voor 7% gewijzigd door Depress op 23-11-2006 15:33 ]


  • simon
  • Registratie: Maart 2002
  • Laatst online: 14:48
Thrilled schreef op donderdag 23 november 2006 @ 15:30:
ik heb verder niet echt info over de server aangezien die 200km verderop staat en niet onder mijn toezicht zit.
gewoon phpinfo en dan checken...

|>


  • _FlasH_
  • Registratie: April 2003
  • Laatst online: 24-11 11:51
Als je simpel wilt, dan zou ik in de code gewoon de vergelijking voor het inloggen doen:
If ($naam=="gebruiker1" AND $wachtwoord=="geheim") {
sessie zetten voor gebruiker 1
} ElseIf ($naam=="gebruiker2" AND $wachtwoord=="geheim123") {
sessie zetten voor gebruiker 1
}


Het bestand waarin je dit doet natuurlijk wel standaard door de PHP-compiler laten halen heh! (Dus met de extensie .php en niet in een functie bestand met extensie .inc ofzo.)

  • mithras
  • Registratie: Maart 2003
  • Niet online
Je kan een map onder Apache beveiligen mbv een .htaccess en .htpassword bestand. Ook kan je een php configuratiebestand hebben met bijv als inhoud
code:
1
gebruikersnaam : wachtwoord
waarvan beide dan een hash zijn van de daadwerkelijke gebruikersnaam of wachtwoord.

Maar wat wil je precies? Het antwoord op de vraag is namelijk: ja, dat kan :)

  • Thrilled
  • Registratie: Februari 2004
  • Laatst online: 24-08-2024
ff gegoogled en kwam op dit script uit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php

$name = "marco";
$pass = "geheim" ;

$pagina = "main.php";

$value = 'true';

if ($_POST['name'] == "$name" AND $_POST['pass'] == "$pass" )
{

setcookie("Login", $value, time()+3600);  /* de cookie verloopt in 1 uur */

echo "<script LANGUAGE='javascript' TYPE='text/javascript'>window.location='$pagina'</SCRIPT>";

}

if ($_POST['name'] !== "$name" AND $_POST['pass'] !== "$pass" )
{
setcookie ("Login", "", time() - 3600);
print ("login first or try again");
}


?>
<html>
<head>
  <meta http-equiv="content-type"
content="text/html; charset=ISO-8859-1">
  <title>Login Script voorbeeld</title>

  </head>
  <body>
<center><form method="post" action="T:\Rampbestrijdingsplannen\xmenu\OPINFO-VRZ.html">
   <table>
    <tr>
     <td>Name:</td><td><input type="text" name="name"></td>
    </tr>
    <tr>
     <td>Password:</td><td><input type="password" name="pass"></td>
     </tr>
     <tr>
     <tr>
     <td></td><td><input type="submit" value="Login"></td>
    </tr>
   </table>
   </form>

</center>
</body>
</html>


Het werkt wel, maar hoe kan ik ervoor zorgen dat men niet op de pagina kan komen zonder dat ze eerst inloggen (dus direct de url intypen van de site), hoe beveilig ik dat?

  • Kalief
  • Registratie: Maart 2005
  • Laatst online: 25-11 19:56
Wat een server draait kun je bij een whois service opzoeken. Vul bijvoorbeeld hier tweakers.net in en je ziet achter Server Type: Apache 1 staan.

[ Voor 5% gewijzigd door Kalief op 23-11-2006 15:37 ]

Niemand wordt Kalief in plaats van de Kalief!


Verwijderd

vaak is er wel plesk of iets dergelijks voor .htaccess
Misschien kun je een php bestand buiten de webroot zetten met een paar user en wachtwoord combi's erin ?

dus:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
users.php
<?php
    $users = array("user" => "piet", "password" => "#@$@#$@#");
?>

<?php
require_once "../users.php";
if(isset($_GET['user'])) {
    foreach($users as $key => $value) {
        if($key == "user" && $_GET['user'] == $value) {
            //en je pass ook op deze manier
        }
    }
}
?>


moet je voor de gein eens
error_reporting(E_ALL); aanzetting in dat script :|

[ Voor 7% gewijzigd door Verwijderd op 23-11-2006 15:48 ]


  • Thrilled
  • Registratie: Februari 2004
  • Laatst online: 24-08-2024
omg dat script van mij werkt dus voor geen meter aangezien ik elke willekeurige username en willekeurig password kan invoeren en gewoon kan inloggen daarmee :')

script van Totaalgeflipt werkt ook niet, kan ook gewoon inloggen met niet-bestaande gegevens.
script van Ferenc werkt ook niet.

zucht, wat haat ik php ;(

[ Voor 34% gewijzigd door Thrilled op 23-11-2006 15:49 ]


Verwijderd

Hmm, ik zal proberen om even snel een werkend script te schrijven..

login.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
session_start();

$adminUserName = 'myUser';
$adminPassWord = 'myPass';

if (isset($_POST['username'])){

    if (empty($_POST['username']) OR empty($_POST['password']){

      echo'Fout: Typ iets in vriend =).<br>';

   } else {

      if ($_POST['username'] == $adminUserName AND $_POST['password'] == $adminPassWord){

          $_SESSION['user'] = $adminUserName;

          header('location: loggedin.php');

     } else {

         echo'Fout: Verkeerde inlog gegevens';

     }

   }

}

?>

<form action="login.php" method="post">
<input type="text" name="username"><br>
<input type="password" name="password"><br>
<input type="submit" value="login">


loggedin.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

// zet dit boven de pagina's waarvan je wil dat je er alleen ingelogd in wil komen
session_start();

if (!isset($_SESSION['user'])){

   die('Log je eerst even in vriend?');

}

echo'Ingelogd';

?>


Fouten kunnen er altijd in staan. :)

Mail me even als het niet werkt, vanavond heb ik wel tijd als het niet werkt.

offtopic:
Coden kan moeilijk zijn in een textarea :)

[ Voor 3% gewijzigd door Verwijderd op 23-11-2006 15:53 ]


Verwijderd

Ik zie dat ik wat te moeilijks had uitgekozen.
ik wil wel een scriptje voor je maken?

Verwijderd

Gewoon een cookie zetten, en checken of deze staat, uiteraard met wel een dubbel check.. dus of er een bepaalde md5 hash is gezet die jezelf op elke pagina checkt tegen een die je zelf uitrekend!

niet secure maar kan wel.

  • Coju
  • Registratie: Oktober 2000
  • Niet online
Thrilled schreef op donderdag 23 november 2006 @ 15:45:
omg dat script van mij werkt dus voor geen meter aangezien ik elke willekeurige username en willekeurig password kan invoeren en gewoon kan inloggen daarmee :')

script van Totaalgeflipt werkt ook niet, kan ook gewoon inloggen met niet-bestaande gegevens.
script van Ferenc werkt ook niet.

zucht, wat haat ik php ;(
Gevalletje van 'Register_globals = on'. Uitzetten of de namen van variabelen veranderen. $name veranderen heeft als gevolg dat $_POST['name'] ook verandert. Uiteindelijk vergelijk je deze twee in de trant van 1=1 wat altijd waar is.

  • Totaalgeflipt
  • Registratie: Juli 2006
  • Laatst online: 30-11 08:03

Totaalgeflipt

De enige echte

Thrilled schreef op donderdag 23 november 2006 @ 15:45:
omg dat script van mij werkt dus voor geen meter aangezien ik elke willekeurige username en willekeurig password kan invoeren en gewoon kan inloggen daarmee :')

script van Totaalgeflipt werkt ook niet, kan ook gewoon inloggen met niet-bestaande gegevens.
script van Ferenc werkt ook niet.

zucht, wat haat ik php ;(
Je moet natuurlijk wel een formulier aanmaken wat corrospondeert mijn met invoervelden.

Hoe ziet je script eruit?

  • Thrilled
  • Registratie: Februari 2004
  • Laatst online: 24-08-2024
Verwijderd schreef op donderdag 23 november 2006 @ 15:51:
Hmm, ik zal proberen om even snel een werkend script te schrijven..

login.php
[code]
je code
code:
1
je code


Fouten kunnen er altijd in staan. :)

Mail me even als het niet werkt, vanavond heb ik wel tijd als het niet werkt.

offtopic:
Coden kan moeilijk zijn in een textarea :)
bij je login.php krijg ik dit:

'; } else { if ($_POST['username'] == $adminUserName AND $_POST['password'] == $adminPassWord){ $_SESSION['user'] = $adminUserName; header('location: loggedin.php'); } else { echo'Fout: Verkeerde inlog gegevens'; } } } ?>

met daaronder de inlogbalk en passbalk.. inloggen werkt niet


Foutje zelf al opgelost (zat in <br> gedeelte)

ik heb trouwens iets aangepast in het volgende:
mijn login.php ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<html>
 <head>
  <title>inloggen</title>
 </head>
<body>

<?php
session_start();

$adminUserName = 'myUser';
$adminPassWord = 'myPass';

if (isset($_POST['username'])){

    if (empty($_POST['username']) OR empty($_POST['password']){

      echo'Fout: Typ iets in vriend =).<br>';

   } else {

      if ($_POST['username'] == $adminUserName AND $_POST['password'] == $adminPassWord){

          $_SESSION['user'] = $adminUserName;

          header('location: loggedin.php');

     } else {

         echo'Fout: Verkeerde inlog gegevens';

     }

   }

}

?>

<form action="login.php" method="post">
<input type="text" name="username"><br>
<input type="password" name="password"><br>
<input type="submit" value="login">

</body>
</html>


bij de form action staat login.php, die heb ik veranderd in loggedin.php , waardoor ik na het inloggen kom op de site die ik nodig heb. Maar als ik naar die locatie buitenom wil surfen en dus de locatie invoer in de adresbalk opent hij de code, en krijg ik niet een pagina met: Log je eerst even in vriend?

edit 2/

overigens kan ik ook bij dit script inloggen met een fictieve username en pass...

[ Voor 57% gewijzigd door Thrilled op 23-11-2006 16:38 ]


  • HyperioN
  • Registratie: April 2003
  • Laatst online: 31-10 21:55
Zet eens spaties achter echo iedere keer:
code:
1
echo 'Fout: Typ iets in vriend =).<br>';

[ Voor 78% gewijzigd door HyperioN op 23-11-2006 16:37 ]


  • Thrilled
  • Registratie: Februari 2004
  • Laatst online: 24-08-2024
zie edit ;)

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Ehm Thrilled, je loopt lang genoeg rond om te weten dat we in de Devschuur® meerdere subfora hebben. Als je Waar hoort mijn topic? leest en je topic begint met PHP, dan moet er toch ergens een belletje gaan rinkelen?

Normaal hoort dit topic dus in Programming, maar daar verwachten we dat je zelf programmeert. Mocht je er niet uitkomen, dan kan je uiteraard een nieuw topic openen, maar lees eerst de bijbehorende faq daar en ga eens rustig en goed rondzoeken met de hiergenoemde tips...

Er is meer te vinden (incl. kant-en-klare oplossingen) out there ;)

Dit topic gaat op slot.

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.

Pagina: 1

Dit topic is gesloten.