Beveiliging page
Ik heb een probleem met het beveiligen van een pagina.
ik heb een inlogsysteem en het werkt prima, maar als ik het naam van het bestand invoer in de adres bar kom ik alsnog op de pagina waarvoor ik eigenlijk moest inloggen.
Is er een manier met PHP/Mysql om de pagina te beveiligen bijvoorbeeld door steeds te kijken of er wel iemand is ingelogd via de database?
Alvast bedankt
Geef eens wat relevante code, zodat wij kunnen schieten op jouw gemaakte werk.....
Code (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
</head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script language="JavaScript" type="text/javascript">
<!--
function checkform ( form )
{
// ** START **
if (form.email.value == "") { //Als de veld (value) leeg is dan naar de alarm
alert( "Emailadres vergeten in te vullen!!!" ); //Hier is de alarm
form.email.focus(); //Als de alarm weggeklikt is word de lege veld automatisch geselecteerd
return false ;
}
// ** END **
// ** START **
if (form.wachtwoord.value == "") {
alert( "Wachtwoord vergeten in te vullen!!!" );
form.wachtwoord.focus();
return false ;
}
// ** END **
return true ;
}
//-->
</script>
</head>
<form action="index.php?content=verwerkenlogin.php" method="POST" onsubmit="return checkform(this);">
<pre>
Emailadres: <input name="email" type="text" size="30"/>
Wachtwoord: <input name="wachtwoord" type="password" size="30"/>
</pre>
<input type="submit" name="Submit" value="Inloggen" />
<input type="reset" name="Reset" value="Leegmaken" />
</form>
<html xmlns="http://www.w3.org/1999/xhtml">
</head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script language="JavaScript" type="text/javascript">
<!--
function checkform ( form )
{
// ** START **
if (form.email.value == "") { //Als de veld (value) leeg is dan naar de alarm
alert( "Emailadres vergeten in te vullen!!!" ); //Hier is de alarm
form.email.focus(); //Als de alarm weggeklikt is word de lege veld automatisch geselecteerd
return false ;
}
// ** END **
// ** START **
if (form.wachtwoord.value == "") {
alert( "Wachtwoord vergeten in te vullen!!!" );
form.wachtwoord.focus();
return false ;
}
// ** END **
return true ;
}
//-->
</script>
</head>
<form action="index.php?content=verwerkenlogin.php" method="POST" onsubmit="return checkform(this);">
<pre>
Emailadres: <input name="email" type="text" size="30"/>
Wachtwoord: <input name="wachtwoord" type="password" size="30"/>
</pre>
<input type="submit" name="Submit" value="Inloggen" />
<input type="reset" name="Reset" value="Leegmaken" />
</form>
***verwerkenlogin.php***
Code (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
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
<?php
session_start();
if(!empty ($_POST["email"]) and !empty($_POST["wachtwoord"])){
include ("connect_db.php");
$query = " SELECT email, wachtwoord, gebruikersrol
FROM userinloggegevens
WHERE email = '".$_POST["email"]."'
AND wachtwoord = '".MD5($_POST["wachtwoord"])."'";
$results = mysql_query($query) or die ("de query is niet goed gelukt".mysql.error());
if( mysql_num_rows($results) > 0 ) {
$_SESSION["email"] = $_POST["email"];
$_SESSION["wachtwoord"] = MD5($_POST["wachtwoord"]);
for ( $i=0 ; $i<mysql_num_rows($results) ; $i++)
{
$gegevens = mysql_fetch_array($results);
$_SESSION["gebruikersrol"] = $gegevens["gebruikersrol"];
}
echo $_SESSION["email"]." ".$_SESSION["wachtwoord"]." ".$_SESSION["gebruikersrol"]."<br/>";
header("location: doorverwijzen.php");
echo "stop de POST variablen en SESSION variablen";
echo 'mysql_num_rows ($result) = '.mysql_num_rows ($results);
}else{
echo "De opgegeven combinatie van uw Email en Wachtwoord is niet geldig. ga jezelf <a href='index.php?content=registreren'>registreren</a> of ga terug naar de <a href='index.php?content=home'>homepage</a>.";
}
}else{
header("location: index.php?content=inloggen");
}
?>
session_start();
if(!empty ($_POST["email"]) and !empty($_POST["wachtwoord"])){
include ("connect_db.php");
$query = " SELECT email, wachtwoord, gebruikersrol
FROM userinloggegevens
WHERE email = '".$_POST["email"]."'
AND wachtwoord = '".MD5($_POST["wachtwoord"])."'";
$results = mysql_query($query) or die ("de query is niet goed gelukt".mysql.error());
if( mysql_num_rows($results) > 0 ) {
$_SESSION["email"] = $_POST["email"];
$_SESSION["wachtwoord"] = MD5($_POST["wachtwoord"]);
for ( $i=0 ; $i<mysql_num_rows($results) ; $i++)
{
$gegevens = mysql_fetch_array($results);
$_SESSION["gebruikersrol"] = $gegevens["gebruikersrol"];
}
echo $_SESSION["email"]." ".$_SESSION["wachtwoord"]." ".$_SESSION["gebruikersrol"]."<br/>";
header("location: doorverwijzen.php");
echo "stop de POST variablen en SESSION variablen";
echo 'mysql_num_rows ($result) = '.mysql_num_rows ($results);
}else{
echo "De opgegeven combinatie van uw Email en Wachtwoord is niet geldig. ga jezelf <a href='index.php?content=registreren'>registreren</a> of ga terug naar de <a href='index.php?content=home'>homepage</a>.";
}
}else{
header("location: index.php?content=inloggen");
}
?>
Toevoeging op 29/10/2010 13:28:02:
***doorverwijzen.php***
Code (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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
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
53
54
55
56
57
58
59
60
61
62
63
<?php
session_start();
if ( !isset($_SESSION["gebruikersrol"]))
{
echo "u bent niet aangemeld u kunt zich hier inloggen";
exit();
} else if ($_SESSION["gebruikersrol"] == 'administrator')
{
header ("location: indexadmin.php?content=home ");
// voer de gegevens in van de gebruiker administrator voor logincounter.
$connection = mysql_connect ('localhost', 'root', '')
or die ('Unable to connect!');
mysql_select_db('dynamisch') or die (mysql_error());
$_SERVER['REMOTE_ADDR'];
$ip = $_SERVER['REMOTE_ADDR'];
$fetch = mysql_query("SELECT * FROM uniquehits WHERE ip ='".$ip."' AND date=NOW()") or die(mysql_error());
if ( mysql_num_rows($fetch) == 0 )
{
mysql_query("INSERT INTO uniquehits(ip, date) VALUES('$ip', NOW())") or die(mysql_error());
}
mysql_close($connection);
}
else if ($_SESSION["gebruikersrol"] == 'begeleider')
{
header ("location: indexbegeleider.php?content=home ");
// voer de gegevens in van de gebruiker begeleider voor logincounter.
$connection = mysql_connect ('localhost', 'root', '')
or die ('Unable to connect!');
mysql_select_db('dynamisch') or die (mysql_error());
$_SERVER['REMOTE_ADDR'];
$ip = $_SERVER['REMOTE_ADDR'];
$fetch = mysql_query("SELECT * FROM uniquehitssb WHERE ip ='".$ip."' AND date=NOW()") or die(mysql_error());
if ( mysql_num_rows($fetch) == 0 )
{
mysql_query("INSERT INTO uniquehitssb(ip, date) VALUES('$ip', NOW())") or die(mysql_error());
}
mysql_close($connection);
}
else if ($_SESSION["gebruikersrol"] == 'docent')
{
header ("location: indexdocent.php?content=home ");
// voer de gegevens in van de gebruiker docent voor logincounter.
$connection = mysql_connect ('localhost', 'root', '')
or die ('Unable to connect!');
mysql_select_db('dynamisch') or die (mysql_error());
$_SERVER['REMOTE_ADDR'];
$ip = $_SERVER['REMOTE_ADDR'];
$fetch = mysql_query("SELECT * FROM uniquehitssd WHERE ip ='".$ip."' AND date=NOW()") or die(mysql_error());
if ( mysql_num_rows($fetch) == 0 )
{
mysql_query("INSERT INTO uniquehitssd(ip, date) VALUES('$ip', NOW())") or die(mysql_error());
}
mysql_close($connection);
}
?>
session_start();
if ( !isset($_SESSION["gebruikersrol"]))
{
echo "u bent niet aangemeld u kunt zich hier inloggen";
exit();
} else if ($_SESSION["gebruikersrol"] == 'administrator')
{
header ("location: indexadmin.php?content=home ");
// voer de gegevens in van de gebruiker administrator voor logincounter.
$connection = mysql_connect ('localhost', 'root', '')
or die ('Unable to connect!');
mysql_select_db('dynamisch') or die (mysql_error());
$_SERVER['REMOTE_ADDR'];
$ip = $_SERVER['REMOTE_ADDR'];
$fetch = mysql_query("SELECT * FROM uniquehits WHERE ip ='".$ip."' AND date=NOW()") or die(mysql_error());
if ( mysql_num_rows($fetch) == 0 )
{
mysql_query("INSERT INTO uniquehits(ip, date) VALUES('$ip', NOW())") or die(mysql_error());
}
mysql_close($connection);
}
else if ($_SESSION["gebruikersrol"] == 'begeleider')
{
header ("location: indexbegeleider.php?content=home ");
// voer de gegevens in van de gebruiker begeleider voor logincounter.
$connection = mysql_connect ('localhost', 'root', '')
or die ('Unable to connect!');
mysql_select_db('dynamisch') or die (mysql_error());
$_SERVER['REMOTE_ADDR'];
$ip = $_SERVER['REMOTE_ADDR'];
$fetch = mysql_query("SELECT * FROM uniquehitssb WHERE ip ='".$ip."' AND date=NOW()") or die(mysql_error());
if ( mysql_num_rows($fetch) == 0 )
{
mysql_query("INSERT INTO uniquehitssb(ip, date) VALUES('$ip', NOW())") or die(mysql_error());
}
mysql_close($connection);
}
else if ($_SESSION["gebruikersrol"] == 'docent')
{
header ("location: indexdocent.php?content=home ");
// voer de gegevens in van de gebruiker docent voor logincounter.
$connection = mysql_connect ('localhost', 'root', '')
or die ('Unable to connect!');
mysql_select_db('dynamisch') or die (mysql_error());
$_SERVER['REMOTE_ADDR'];
$ip = $_SERVER['REMOTE_ADDR'];
$fetch = mysql_query("SELECT * FROM uniquehitssd WHERE ip ='".$ip."' AND date=NOW()") or die(mysql_error());
if ( mysql_num_rows($fetch) == 0 )
{
mysql_query("INSERT INTO uniquehitssd(ip, date) VALUES('$ip', NOW())") or die(mysql_error());
}
mysql_close($connection);
}
?>
als je hebt ingelogd en je bent admin, word je bijvoorbeeld hier doorgewezen...
Code (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
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<?php
include ("pagesendadmin.php");
include ("naviadmin.php");
include ("$Nav");
?>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<?php
include ("pagesendadmin.php");
include ("naviadmin.php");
include ("$Nav");
?>
</body>
</html>
Code (php)
Bovenstaande controleert dus of $_SESSION["email"] ingesteld is, en of er daadwerkelijk een waarde aan gekoppeld is (via trim() ). Zoniet krijg je een foutmelding (of stuur je ze terug naar de login pagina), zoja word de pagina netjes weergegeven.
Marco M op 29/10/2010 15:26:14:
Op elke pagina kun je checken of $_SESSION["email"] ingesteld is. Met andere woorden, maak een authenticatie pagina en include die op elke pagina.
Bovenstaande controleert dus of $_SESSION["email"] ingesteld is, en of er daadwerkelijk een waarde aan gekoppeld is (via trim() ). Zoniet krijg je een foutmelding (of stuur je ze terug naar de login pagina), zoja word de pagina netjes weergegeven.
Code (php)
Bovenstaande controleert dus of $_SESSION["email"] ingesteld is, en of er daadwerkelijk een waarde aan gekoppeld is (via trim() ). Zoniet krijg je een foutmelding (of stuur je ze terug naar de login pagina), zoja word de pagina netjes weergegeven.
Als ik nu de bestandnaam in de adresbalk zet ga die wel naar de login pagina, maar als ik nu met een gebruiker inlog logt die niet in, maar blijft op de inlog pagina
dit is mijn code:
***authenticatie.php***
Code (php)
***indexadmin.php***
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<?php
include ("authenticatie.php");
include ("pagesendadmin.php");
include ("naviadmin.php");
include ("$Nav");
?>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
</head>
<body>
<?php
include ("authenticatie.php");
include ("pagesendadmin.php");
include ("naviadmin.php");
include ("$Nav");
?>
</body>
</html>
Kun je me zeggen wat ik fout doe?
Idealiter zitten je PHP bestand zo veel mogelijk in onbereikbare mappen.
Toevoeging op 01/11/2010 09:10:03:
Marco M's code werkt :D
ik heb hem alleen op een verkeerd pagina geinclude
Nog bedankt voor de hulp :)
Gewijzigd op 01/11/2010 09:03:10 door V K