Login > 2x inloggen dan pas redirect
De HTML code staat nu ook in php, dit omdat ik de ?> heb weggehaald, zodat het op het forum makkelijker te lezen is :P
*** LOGIN.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
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
<?php
// CONTROLE OF ER AL EEN SESSION BESTAAT
session_start();
$sessie = explode(";", $_SESSION['cmssession']);
if($sessie[1] == $_SERVER['REMOTE_ADDR']) {
header( 'Location:index.php');
}
<html>
<title>Aanmelden</title>
<body>
<b>Aanmelden:</b><br><br>
<form action="" method="post">
<table width="350" border="0">
<tr>
<td>Gebruikersnaam:</td>
<td><input type="text" name="username" size="35"></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td><input type="password" name="password" size="35"></td>
</tr>
<tr>
<td> </td>
<td><input type="Submit" value="Aanmelden"></td>
</tr>
</table>
<input type="hidden" name="check" value="1">
</form>
</body>
</html>
if ($_POST["check"] == "1" && (!empty($_POST["username"]) && $_POST["password"]))
{
$username=htmlspecialchars(stripslashes($_POST["username"]));
$password=htmlspecialchars(stripslashes($_POST["password"]));
$ip=$_SERVER['REMOTE_ADDR'];
include_once 'includes/dbconnect.php';
$password1 = sha1('cms!5as?'.$password);
$sqllogincheck = mysql_query("select count(*) from _cmsuser where username = '$username' and password = '$password1'") or die(mysql_error());
$results = mysql_result($sqllogincheck, "0");
if ($results == 0){
echo "<font color='red'>Gebruikersnaam en/of wachtwoord niet correct.</font>";
}
else
{
$_SESSION['cmssession'] = $username.';'.$ip;
header( 'Location:index.php');
}
include_once 'includes/dbclose.php';
}
?>
// CONTROLE OF ER AL EEN SESSION BESTAAT
session_start();
$sessie = explode(";", $_SESSION['cmssession']);
if($sessie[1] == $_SERVER['REMOTE_ADDR']) {
header( 'Location:index.php');
}
<html>
<title>Aanmelden</title>
<body>
<b>Aanmelden:</b><br><br>
<form action="" method="post">
<table width="350" border="0">
<tr>
<td>Gebruikersnaam:</td>
<td><input type="text" name="username" size="35"></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td><input type="password" name="password" size="35"></td>
</tr>
<tr>
<td> </td>
<td><input type="Submit" value="Aanmelden"></td>
</tr>
</table>
<input type="hidden" name="check" value="1">
</form>
</body>
</html>
if ($_POST["check"] == "1" && (!empty($_POST["username"]) && $_POST["password"]))
{
$username=htmlspecialchars(stripslashes($_POST["username"]));
$password=htmlspecialchars(stripslashes($_POST["password"]));
$ip=$_SERVER['REMOTE_ADDR'];
include_once 'includes/dbconnect.php';
$password1 = sha1('cms!5as?'.$password);
$sqllogincheck = mysql_query("select count(*) from _cmsuser where username = '$username' and password = '$password1'") or die(mysql_error());
$results = mysql_result($sqllogincheck, "0");
if ($results == 0){
echo "<font color='red'>Gebruikersnaam en/of wachtwoord niet correct.</font>";
}
else
{
$_SESSION['cmssession'] = $username.';'.$ip;
header( 'Location:index.php');
}
include_once 'includes/dbclose.php';
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Marvin H
Het beste kan je gewoon een boolean maken die kijkt of je wel of niet de juiste invoergegevens hebt verzonden. En dan die boolean gebruiken om A) sessie's te zetten en B) vervolgens een header() roepen.
Het probleem zit hem er alleen in dat die header() van regel 53 nooit uitgevoerd zal worden aangezien er al output (HTML) naar de browser verzonden is. Die regel zou dus ook een 'headers already sent' foutmelding op moeten leveren.
De oplossing: verplaats alle php logica naar het begin van je script en echo de output pas helemaal op het einde.
ps. En zorg er tijdens het testen voor dat de error_reporting instelling op de hoogste stand staat:
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Blanche schreef op 10.01.2010 13:20:
@Gerben:
als je goed kijkt, .....
De oplossing: verplaats alle php logica naar het begin van je script en echo de output pas helemaal op het einde.
ps. En zorg er tijdens het testen voor dat de error_reporting instelling op de hoogste stand staat:
als je goed kijkt, .....
De oplossing: verplaats alle php logica naar het begin van je script en echo de output pas helemaal op het einde.
ps. En zorg er tijdens het testen voor dat de error_reporting instelling op de hoogste stand staat:
Heb nu alle PHP bovenaan gezet, zonder dat er nog een HTML code boven staat, echter werkt het nog niet...
Notice: Undefined index: cmssession in /var/www/g6055/white-it.nl/HTML/cms/login.php on line 6
Notice: Undefined offset: 1 in /var/www/g6055/white-it.nl/HTML/cms/login.php on line 7
Notice: A session had already been started - ignoring session_start() in /var/www/g6055/white-it.nl/HTML/cms/login.php on line 25
Warning: Cannot modify header information - headers already sent by (output started at /var/www/g6055/white-it.nl/HTML/cms/login.php:6) in /var/www/g6055/white-it.nl/HTML/cms/login.php on line 27
Heb nu de onderstaande code....
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
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
<?php
error_reporting(E_ALL);
// CONTROLE OF ER AL EEN SESSION BESTAAT
session_start();
$sessie = explode(";", $_SESSION['cmssession']);
if($sessie[1] == $_SERVER['REMOTE_ADDR']) {
header( 'Location:index.php');
}
if ($_POST["check"] == "1" && (!empty($_POST["username"]) && $_POST["password"]))
{
$username=htmlspecialchars(stripslashes($_POST["username"]));
$password=htmlspecialchars(stripslashes($_POST["password"]));
$ip=$_SERVER['REMOTE_ADDR'];
include_once 'includes/dbconnect.php';
$password1 = sha1('cms!5as?'.$password);
$sqllogincheck = mysql_query("select count(*) from _cmsuser where username = '$username' and password = '$password1'") or die(mysql_error());
$results = mysql_result($sqllogincheck, "0");
if ($results == 1){
session_start();
$_SESSION['cmssession'] = $username.';'.$ip;
header( 'Location:index.php');
}
else
{
echo "<font color='red'>Gebruikersnaam en/of wachtwoord niet correct.</font>";
}
include_once 'includes/dbclose.php';
}
<html>
<title>Aanmelden</title>
<body>
<b>Aanmelden:</b><br><br>
<form action="" method="post">
<table width="350" border="0">
<tr>
<td>Gebruikersnaam:</td>
<td><input type="text" name="username" size="35"></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td><input type="password" name="password" size="35"></td>
</tr>
<tr>
<td> </td>
<td><input type="Submit" value="Aanmelden"></td>
</tr>
</table>
<input type="hidden" name="check" value="1">
</form>
</body>
</html>
?>
error_reporting(E_ALL);
// CONTROLE OF ER AL EEN SESSION BESTAAT
session_start();
$sessie = explode(";", $_SESSION['cmssession']);
if($sessie[1] == $_SERVER['REMOTE_ADDR']) {
header( 'Location:index.php');
}
if ($_POST["check"] == "1" && (!empty($_POST["username"]) && $_POST["password"]))
{
$username=htmlspecialchars(stripslashes($_POST["username"]));
$password=htmlspecialchars(stripslashes($_POST["password"]));
$ip=$_SERVER['REMOTE_ADDR'];
include_once 'includes/dbconnect.php';
$password1 = sha1('cms!5as?'.$password);
$sqllogincheck = mysql_query("select count(*) from _cmsuser where username = '$username' and password = '$password1'") or die(mysql_error());
$results = mysql_result($sqllogincheck, "0");
if ($results == 1){
session_start();
$_SESSION['cmssession'] = $username.';'.$ip;
header( 'Location:index.php');
}
else
{
echo "<font color='red'>Gebruikersnaam en/of wachtwoord niet correct.</font>";
}
include_once 'includes/dbclose.php';
}
<html>
<title>Aanmelden</title>
<body>
<b>Aanmelden:</b><br><br>
<form action="" method="post">
<table width="350" border="0">
<tr>
<td>Gebruikersnaam:</td>
<td><input type="text" name="username" size="35"></td>
</tr>
<tr>
<td>Wachtwoord:</td>
<td><input type="password" name="password" size="35"></td>
</tr>
<tr>
<td> </td>
<td><input type="Submit" value="Aanmelden"></td>
</tr>
</table>
<input type="hidden" name="check" value="1">
</form>
</body>
</html>
?>
De header already sent foutmeldingen worden veroorzaakt door de twee foutmeldingen die eerder gegeven worden. Los die dus eerst op en de overige foutmeldingen zullen ook verdwijnen...
Blanche schreef op 10.01.2010 13:58:
De header already sent foutmeldingen worden veroorzaakt door de twee foutmeldingen die eerder gegeven worden. Los die dus eerst op en de overige foutmeldingen zullen ook verdwijnen...
DAMN... heb het gevonden, komt door de dbconnect.php... hier stonden na het sluiten van de php ?> nog twee lege regels... :S
maar goed hij doet het nu :P
Gewijzigd op 01/01/1970 01:00:00 door Marvin H