[PHP] probleem met login systeem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een kleine routine geschreven waarmee ik een login kan plaatsen op delen van websites.

PHP:
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
if ($_POST['login']) {
$query = mysql_query("SELECT `klantnummer`, `wachtwoord`, `domeinnaam` FROM hostingklanten.klanteninformatie WHERE `klantnummer`='".$_POST['clientnumber']."' AND `status`='1'") or die(mysql_error());
$result = mysql_fetch_array($query, MYSQL_ASSOC);

if ($result) {

if ($_POST['password'] == $result['wachtwoord']) {
    // De ingevoerde waarden zijn juist, de gebruiker wordt ingelogd
    session_start();
    session_register('clientnumber');
        session_register('password');
        
                //  Acties van gebruiker opslaan in een data-log
    ActivityLog("De gebruiker is ingelogd");  
        
        return;
  } else { 
    // De gebruiker gaf een foute invoer op
    echo "<center>Uw invoer was niet correct, probeer het opnieuw! </center><br />"; 
    ShowLogin();
    exit(); 
}

  } else {
    // De gebruiker gaf een foute invoer op
    echo "<center>Uw invoer was niet correct, of Uw account is uitgeschakeld - probeer het opnieuw! </center><br />";
    ShowLogin();
    exit();
 }
}


Spreekt allemaal voorzich(als iemand verbeteringen weet, graag)

de functie ShowLogin();

PHP:
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
Function ShowLogin() {
print "
<html>
  <head>
<link rel=\"stylesheet\" href=\"site.css\" type=\"text/css\" />
  </head>
<body>
  <center>
  <table class=\"normal\" border=\"0\" width=\"100%\">
  <tr>
    <td width=\"100%\" align=\"center\">
     <form method=\"post\" action=\"/\">
      <table border=\"0\" cellpadding=\"0\" cellspacing=\"2\" width=\"1\" class=\"normal\">
      <tr>
        <td>Klantnummer:</td>
        <td><input type=\"text\" name=\"clientnumber\" size=\"20\"></td>
      </tr>
      <tr>
        <td>Wachtwoord: </td>
        <td><input type=\"password\" name=\"password\" size=\"20\"></td>
      </tr>
      <tr>
        <td colspan=\"2\" align=\"center\"><br /><br /><input class=\"submit\" type=\"submit\" name=\"login\" value=\"Aanmelden\" class=\"normal\"></td>
      </tr>
  </table>
  </form>
  </table>
  </center>
</body>
</html>";

}


en de functie ShowLogout();

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Function ShowLogout() {
print "
<html>
  <head>
<link rel=\"stylesheet\" href=\"site.css\" type=\"text/css\" />
  </head>
<body>
<center><br />U bent nu uitgelogd.</center>";

session_start();
session_unregister('clientnumber');
session_unregister('password');
session_destroy(); 

print "
</body>
</html>";

}



Het probleem is nu alleen(omdat ik met forms werk) dat waneer ik iemand uitlog, dat deze een aantal keren op back kunnen duwen - dan op reload en dat zijn ze gewoon weer ingelogged(logisch ook, de data in het form wordt opnieuw gesubmit).

Hoe lost ik dit makkelijk op ?

Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

nocache headers in elke page?

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 08:24

gorgi_19

Kruimeltjes zijn weer op :9

Na een submit een redirect doen naar dezelfde pagina.
In ASP:
ASP:
1
2
' stukje uitvoer code
Response.Redirect "script.asp"

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

Uit mijn eigen login.php, compleet gekopieerd van php.net:
code:
1
2
3
4
5
6
7
// see php manual on session-cache-limiter
header("Expires: Mon, 23 Oct 2000 23:23:23 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
session_cache_limiter('nocache');

[ Voor 19% gewijzigd door Rataplan op 06-08-2003 11:02 ]


Journalism is printing what someone else does not want printed; everything else is public relations.


Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
gorgi_19 schreef op 06 August 2003 @ 11:00:
Na een submit een redirect doen naar dezelfde pagina.
In ASP:
ASP:
1
2
' stukje uitvoer code
Response.Redirect "script.asp"
In php een
PHP:
1
2
3
4
<?php
  header( "Cache-Control: no-store, no-cache, must-revalidate" );
  header( "Location: ". $_SERVER[ "PHP_SELF" ] );
?>

http://nl.php.net/manual/en/function.header.php

[ Voor 49% gewijzigd door supakeen op 06-08-2003 11:09 ]