[PHP] login werkt niet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Zakkenwasser
  • Registratie: Februari 2001
  • Niet online
Ik ben nu al een heel weekend bijna aan het kloten met een simpel login scherm.

als de login gelukt is moet je de "secretpage.php" kunnen zien.
Zoniet dan moet je een restricted page krijgen.

Nu heb ik 4 php pagina's
-index.php
-about.php
-portfolio.php
-services.php

alle pagina's bevatten een (boven de Doctype declaration)
code:
1
2
3
4
5
6
7
8
<?php
session_start();
// if session variable not set, redirect to login page
if (!isset($_SESSION['authenticated'])) {
  header('Location: http://www.overdatum.nl/testt/sessions/login.php');
  exit;
  }
?>


Via 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
37
38
39
40
41
42
<?php
// process the script only if the form has been submitted
if (array_key_exists('login', $_POST)) {
  // start the session
  session_start();
  // include nukeMagicQuotes and clean the $_POST array
  $textfile = 'filetest03.txt';
    if (file_exists($textfile) && is_readable($textfile)) {
    // read the file into an array called $users
    $users = file($textfile);

    // loop through the array to process each line
    for ($i = 0; $i < count($users); $i++) {
      // separate each element and store in a temporary array
      $tmp = explode(', ', $users[$i]);
      // assign each element of the temp array to a named array key
      $users[$i] = array('name' => $tmp[0], 'password' => rtrim($tmp[1]));
      // check for a matching record
     // if ($users[$i]['name'] == $_POST['username'] && $users[$i]['password'] == $_POST['pwd']) {
      // alternative (shorter) code
    if ($tmp[0] == $_POST['username'] && rtrim($tmp[1]) == $_POST['pwd']) {
        // if there's a match, set a session variable
        $_SESSION['authenticated'] = 'Jey';
        break;
        }
      }
    // if the session variable has been set, redirect
    if (isset($_SESSION['authenticated'])) {
      header('Location: http://www.overdatum.nl/testt/sessions/menu.php');
      exit;
      }
    // if the session variable hasn't been set, refuse entry
    else {
      $error = 'Invalid username or password.';
      }
    }
  // error message to display if text file not readable
  else {
    $error = 'Login facility unavailable. Please try later.';
    }
  }
?>


"filetest03.txt" zoals in login.php wordt omschreven bevat 2 login code's.
user1: david
pass1: codeslave
user2: chris
pass2:bigboss

Nu is het zo dat je met alles kan inloggen, wat je ook invult.
Dus gaat het ergens mis,...maar waar.

De site staat op www.overdatum.nl/testt/index.php

Ik krijg ook verder geen foutmelding of what-so-ever.

PSP 1000 @ 6.60 Pro C2 [+256GB]
PSVita @ Henkaku Enso [+256GB]
3DS @ Luma (B9S) [+160GB]
Nintendo Switch 3.0.1 [+256GB]


Acties:
  • 0 Henk 'm!

  • Nielsvr
  • Registratie: Maart 2004
  • Laatst online: 27-08 14:55
Ik krijg telkens de error dat mijn inlog gegevens niet juist zijn? Weet je het wel zeker dat hij het niet dood, en dat niet toevallig je sessie nog actief is? Even een uitlog pagina maken (quick and dirty, opslaan als logout.php naast de rest van de bestanden daarna even bezoeken en nog een keer proberen in te loggen):


code:
1
2
3
4
<?php
unset($_SERVER['authenticated']);
header("location: index.php");
?>

[ Voor 45% gewijzigd door Nielsvr op 21-09-2008 15:13 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Kan aan mij liggen, maar hier lijkt het goed te gaan. Ik denk dat je in je logout functie de session var niet verwijderd (leeghalen is niet genoeg, want isset() komt hij dan alsnog doorheen).

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je script is niet echt veilig trouwens. Ten eerste is een cookie met daarin een true/false waarde (wat het in feite is) niet echt genoeg om te voorkomen dat iemand sessions kan hijacken, en ten tweede is een platte tekstfile met ongehashte (!) passwords natuurlijk dubbel onveilig, mocht je server ooit een keer gehackt worden.

Waarom heb je niet "gewoon" voor een database of op zijn minst een MD5-hash van je wachtwoorden gekozen?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Zakkenwasser
  • Registratie: Februari 2001
  • Niet online
Nielsvr schreef op zondag 21 september 2008 @ 15:11:
Ik krijg telkens de error dat mijn inlog gegevens niet juist zijn? Weet je het wel zeker dat hij het niet dood, en dat niet toevallig je sessie nog actief is? Even een uitlog pagina maken (quick and dirty, opslaan als logout.php naast de rest van de bestanden daarna even bezoeken en nog een keer proberen in te loggen):


code:
1
2
3
4
<?php
unset($_SERVER['authenticated']);
header("location: index.php");
?>
ik zag indd. al dat het aan mijn sessie lag, die nog actief bleek te zijn.
-NMe- schreef op zondag 21 september 2008 @ 15:16:
Je script is niet echt veilig trouwens. Ten eerste is een cookie met daarin een true/false waarde (wat het in feite is) niet echt genoeg om te voorkomen dat iemand sessions kan hijacken, en ten tweede is een platte tekstfile met ongehashte (!) passwords natuurlijk dubbel onveilig, mocht je server ooit een keer gehackt worden.

Waarom heb je niet "gewoon" voor een database of op zijn minst een MD5-hash van je wachtwoorden gekozen?
Snap ik, maar ik zit nog met basis te knutselen.
Dit is nog allemaal test.


//php newbie hierzo

[ Voor 35% gewijzigd door Zakkenwasser op 21-09-2008 15:21 ]

PSP 1000 @ 6.60 Pro C2 [+256GB]
PSVita @ Henkaku Enso [+256GB]
3DS @ Luma (B9S) [+160GB]
Nintendo Switch 3.0.1 [+256GB]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

MrJey schreef op zondag 21 september 2008 @ 15:18:
Snap ik, maar ik zit nog met basis te knutselen.
Dit is nog allemaal test.
Ah, dus je gaat eerst zitten worstelen met spul waarvan je weet dat het niet goed is en je straks ofwel beveiligingsproblemen krijgt, ofwel je je code weg moet gooien? Ach, whatever floats your boat. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Zakkenwasser
  • Registratie: Februari 2001
  • Niet online
-NMe- schreef op zondag 21 september 2008 @ 15:21:
[...]

Ah, dus je gaat eerst zitten worstelen met spul waarvan je weet dat het niet goed is en je straks ofwel beveiligingsproblemen krijgt, ofwel je je code weg moet gooien? Ach, whatever floats your boat. ;)
niet logisch inderdaad,
Ik zit op het moment PHP solutions van Friends-Of-Ed te lezen.

Waarin dit onderdeel is van een stappen plan.

Maar als je een source weet waar het beter wordt uitgelegd, is dat natuurlijk altijd welkom.
Waarom zou ik mijn tijd verdoen door oude code te leren.

PSP 1000 @ 6.60 Pro C2 [+256GB]
PSVita @ Henkaku Enso [+256GB]
3DS @ Luma (B9S) [+160GB]
Nintendo Switch 3.0.1 [+256GB]


Acties:
  • 0 Henk 'm!

  • Jasperrr
  • Registratie: Augustus 2008
  • Laatst online: 10-09 11:35
Ik vind het ook raar dat je niet een MySQL database opzet, dat heb je zo gedaan.

Gebruik dan in iedergeval nog md5/sha1 encryptie
code:
1
if ($tmp[0] == $_POST['username'] && md5(rtrim($tmp[1])) == $_POST['pwd']) {


Of een dubbele encryptie kan ook nog.

Daarnaast zou je ook de username en de (encrypted) pass in de sessie kunnen storen en deze iedere keer laten nachecken.

Acties:
  • 0 Henk 'm!

  • Zakkenwasser
  • Registratie: Februari 2001
  • Niet online
Jasperrr schreef op zondag 21 september 2008 @ 15:32:
Ik vind het ook raar dat je niet een MySQL database opzet, dat heb je zo gedaan.

Gebruik dan in iedergeval nog md5/sha1 encryptie
code:
1
if ($tmp[0] == $_POST['username'] && md5(rtrim($tmp[1])) == $_POST['pwd']) {


Of een dubbele encryptie kan ook nog.

Daarnaast zou je ook de username en de (encrypted) pass in de sessie kunnen storen en deze iedere keer laten nachecken.
Ik ben echt een newbie met het opzetten van CMS en alles wat bij komt kijken.

ik snap het dan wel nog niet helemaal, maar ben ondertussen aan het verder lezen over salt techniek tijdens registratie van een nieuwe gebruiker.

Daarmee wordt ook weer het textbestand gewijzigd met SHA1 code.

Voorderest geen problemen meer, was de sessie vergeten uitteloggen.

[ Voor 24% gewijzigd door Zakkenwasser op 21-09-2008 16:38 ]

PSP 1000 @ 6.60 Pro C2 [+256GB]
PSVita @ Henkaku Enso [+256GB]
3DS @ Luma (B9S) [+160GB]
Nintendo Switch 3.0.1 [+256GB]


Acties:
  • 0 Henk 'm!

  • Jasperrr
  • Registratie: Augustus 2008
  • Laatst online: 10-09 11:35
Ik zou eerst eens even wat gaan lezen over SQL servers, dat is toch een stuk veiliger en werkt daarnaast een stuk beter met het bewerken van data.
ga maar eens een text bestandje van 10mb, kost toch aardig wat tijd en daarnaast is het allemaal erg omslachtig. Bij mysql databases kan je met bijvoorbeeld PHPmyAdmin heel makkelijk alles aanpassen en nieuwe velden toevoegen.

Gebruik voor nu gewoon even een goede access protectie zodat het bestandje niet zomaar ge-opend kan worden door iedereen.

salt is verder ook wel handig en makkelijk toe te passen, alhoewel ik ook je sessies even zou aanpassen.
Een sessie met jeuh is niet echt veilig, daarnaast weet je niet wie de gebruiker is.
Pagina: 1