session en sql-update foutje
Ik ben men pagina om het paswoord te veranderen aan't maken.
Als ik een paswoord ingeef, dan zet de browser dat alles goed is.
Toch wordt er niets geupdate in de datebase.
Met E_ALL aan, geeft ie ook geen notices/warnings/errors meer.
Wat is er mis?
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
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
<?
include('includes/config.php');
require('includes/auth.php');
$sess_id = $_SESSION['id'];
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
function strip_var($value)
{
$value1 = addslashes($value);
$value2 = strip_tags($value1);
$value3 = htmlspecialchars($value2);
return $value3;
}
$pw1 = strip_var($_POST['pw1']);
$pw2 = strip_var($_POST['pw2']);
if($pw1 == $pw2)
{
$pass = sha1('$pw1');
mysql_query ("UPDATE users SET password='$pass' WHERE id='$sess_id'") or die(mysql_error());
header('Refresh: 3; URL=http://www.vandenreyt.be/koks/index.php');
echo "<html>";
echo "<head>";
echo "<title>Agenda Koks</title>";
echo "<style type=\"text/css\">";
echo " @import 'includes/stylesheetadmin.css';";
echo "</style>";
echo "</head>";
echo "<body>";
echo '<div align="center" class="body">';
echo '<center>';
echo 'Het paswoord is gewijzigd!<br>';
echo '</center>';
echo '</div>';
}
else
{
echo 'Paswoorden komen niet overeen, <a href="changepass.php">probeer opnieuw</a>';
}
}
else
{
echo '<form action="changepass.php" method="post">';
echo 'Paswoord<input type="password" name="pw1"><br>';
echo 'Paswoord<input type="password" name="pw2"> (bevestiging)<br>';
echo '<input type="submit" value="Verander">';
echo '</from>';
}
?>
include('includes/config.php');
require('includes/auth.php');
$sess_id = $_SESSION['id'];
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
function strip_var($value)
{
$value1 = addslashes($value);
$value2 = strip_tags($value1);
$value3 = htmlspecialchars($value2);
return $value3;
}
$pw1 = strip_var($_POST['pw1']);
$pw2 = strip_var($_POST['pw2']);
if($pw1 == $pw2)
{
$pass = sha1('$pw1');
mysql_query ("UPDATE users SET password='$pass' WHERE id='$sess_id'") or die(mysql_error());
header('Refresh: 3; URL=http://www.vandenreyt.be/koks/index.php');
echo "<html>";
echo "<head>";
echo "<title>Agenda Koks</title>";
echo "<style type=\"text/css\">";
echo " @import 'includes/stylesheetadmin.css';";
echo "</style>";
echo "</head>";
echo "<body>";
echo '<div align="center" class="body">';
echo '<center>';
echo 'Het paswoord is gewijzigd!<br>';
echo '</center>';
echo '</div>';
}
else
{
echo 'Paswoorden komen niet overeen, <a href="changepass.php">probeer opnieuw</a>';
}
}
else
{
echo '<form action="changepass.php" method="post">';
echo 'Paswoord<input type="password" name="pw1"><br>';
echo 'Paswoord<input type="password" name="pw2"> (bevestiging)<br>';
echo '<input type="submit" value="Verander">';
echo '</from>';
}
?>
Jens
Gewijzigd op 01/01/1970 01:00:00 door Jens V
Waarom echo je niet alles in 1x?
maar ik heb juist nog eens dat sess_id laten echoen, en hij zegt dat mijn id 10 is. Dat zou 1 moeten zijn :/...
@jens, zet je vars overal buiten quotes, overal!
bijv:
Code (php)
1
2
3
2
3
<?
$pass = sha1('$pw1'); // dit is dus de sha1 over de string '$pw1' en niet de var $pw1
?>
$pass = sha1('$pw1'); // dit is dus de sha1 over de string '$pw1' en niet de var $pw1
?>
Dit is de pagina om de sessie te zetten: (van jan koehoorn..)
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
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
<?php
session_start ();
// terug naar de loginpagina. Met sleep bouwen we een pauze in tegen brute-forcen
function to_login () {
header ('Location: http://www.vandenreyt.be/koks/login.php'); // NIET VERGETEN AAN TE PASSEN!!!
}
function check_login ($username, $password) {
// query opstellen
// je tabel kan er heel simpel uitzien:
// id INT(11) auto_increment
// username VARCHAR 64
// password VARCHAR 64. Het password sla je op in je DB met een SHA1 hash
// daarom staat SHA1 dus ook in de query
$sql = "
SELECT id
FROM users
WHERE username = '" . mysql_real_escape_string ($username) . "'
AND password = SHA1('" . mysql_real_escape_string ($password) . "')
";
if ($res = mysql_query ($sql)) {
if (mysql_num_rows ($res) == 1) {
// de query is gelukt en we hebben 1 resultaat
$row = mysql_fetch_assoc ($res);
$_SESSION['id'] = $row['id'];
$_SESSION['logged_in'] = true;
}
else {
to_login ();
}
}
else {
to_login ();
}
}
// eerst maar eens kijken of $_SESSION['logged_in'] bestaat
if (!isset ($_SESSION['logged_in'])) {
// nog niet eerder ingelogd, maar misschien heeft iemand net het loginformulier ingevuld?
if (isset ($_POST['username'], $_POST['password'])) {
check_login ($_POST['username'], $_POST['password']);
}
else {
to_login ();
}
}
?>
session_start ();
// terug naar de loginpagina. Met sleep bouwen we een pauze in tegen brute-forcen
function to_login () {
header ('Location: http://www.vandenreyt.be/koks/login.php'); // NIET VERGETEN AAN TE PASSEN!!!
}
function check_login ($username, $password) {
// query opstellen
// je tabel kan er heel simpel uitzien:
// id INT(11) auto_increment
// username VARCHAR 64
// password VARCHAR 64. Het password sla je op in je DB met een SHA1 hash
// daarom staat SHA1 dus ook in de query
$sql = "
SELECT id
FROM users
WHERE username = '" . mysql_real_escape_string ($username) . "'
AND password = SHA1('" . mysql_real_escape_string ($password) . "')
";
if ($res = mysql_query ($sql)) {
if (mysql_num_rows ($res) == 1) {
// de query is gelukt en we hebben 1 resultaat
$row = mysql_fetch_assoc ($res);
$_SESSION['id'] = $row['id'];
$_SESSION['logged_in'] = true;
}
else {
to_login ();
}
}
else {
to_login ();
}
}
// eerst maar eens kijken of $_SESSION['logged_in'] bestaat
if (!isset ($_SESSION['logged_in'])) {
// nog niet eerder ingelogd, maar misschien heeft iemand net het loginformulier ingevuld?
if (isset ($_POST['username'], $_POST['password'])) {
check_login ($_POST['username'], $_POST['password']);
}
else {
to_login ();
}
}
?>
(je geeft geen session_start() mee terwijl je wel met een $_SESSION werkt!
Maar hoe zit het na het invoeren van session_start()?
Gewijzigd op 01/01/1970 01:00:00 door vdleije .
(die session_start(); staat ook al in de auth pagina;) )
de pagina:
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
64
65
66
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
64
65
66
<?
include('includes/config.php');
require('includes/auth.php');
session_start();
$sess_id = $_SESSION['id'];
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
function strip_var($value)
{
$value1 = addslashes($value);
$value2 = strip_tags($value1);
$value3 = htmlspecialchars($value2);
return $value3;
}
$pw1 = strip_var($_POST['pw1']);
$pw2 = strip_var($_POST['pw2']);
if($pw1 == $pw2)
{
$pass = sha1($pw1);
mysql_query ("UPDATE users SET password='$pass' WHERE id='$sess_id'") or die(mysql_error());
header('Refresh: 3; URL=http://www.vandenreyt.be/koks/index.php');
echo "<html>";
echo "<head>";
echo "<title>Agenda Koks</title>";
echo "<style type=\"text/css\">";
echo " @import 'includes/stylesheetadmin.css';";
echo "</style>";
echo "</head>";
echo "<body>";
echo '<div align="center" class="body">';
echo '<center>';
echo '<table width="500" cellspacing="0" cellpadding="2" border="0">';
echo '<tr>';
echo '<td width="20%" height="200"></td>';
echo '<td width="60%" height="200"></td>';
echo '<td width="20%" height="200"></td>';
echo '</tr>';
echo '<tr>';
echo '<td width="20%" height="50"></td>';
echo '<td width="60%" height="50" class="header">';
echo 'Het paswoord is gewijzigd!<br>';
echo '<a href="index.php">Ga naar de agenda</a>';
echo '</td>';
echo '<td width="20%" height="50"></td>';
echo '</tr>';
echo '</table>';
echo '</center>';
echo '</div>';
}
else
{
echo 'Paswoorden komen niet overeen, <a href="changepass.php">probeer opnieuw</a>';
}
}
else
{
echo $sess_id.'<br>';
echo '<form action="changepass.php" method="post">';
echo 'Paswoord<input type="password" name="pw1"><br>';
echo 'Paswoord<input type="password" name="pw2"> (bevestiging)<br>';
echo '<input type="submit" value="Verander">';
echo '</from>';
}
?>
include('includes/config.php');
require('includes/auth.php');
session_start();
$sess_id = $_SESSION['id'];
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
function strip_var($value)
{
$value1 = addslashes($value);
$value2 = strip_tags($value1);
$value3 = htmlspecialchars($value2);
return $value3;
}
$pw1 = strip_var($_POST['pw1']);
$pw2 = strip_var($_POST['pw2']);
if($pw1 == $pw2)
{
$pass = sha1($pw1);
mysql_query ("UPDATE users SET password='$pass' WHERE id='$sess_id'") or die(mysql_error());
header('Refresh: 3; URL=http://www.vandenreyt.be/koks/index.php');
echo "<html>";
echo "<head>";
echo "<title>Agenda Koks</title>";
echo "<style type=\"text/css\">";
echo " @import 'includes/stylesheetadmin.css';";
echo "</style>";
echo "</head>";
echo "<body>";
echo '<div align="center" class="body">';
echo '<center>';
echo '<table width="500" cellspacing="0" cellpadding="2" border="0">';
echo '<tr>';
echo '<td width="20%" height="200"></td>';
echo '<td width="60%" height="200"></td>';
echo '<td width="20%" height="200"></td>';
echo '</tr>';
echo '<tr>';
echo '<td width="20%" height="50"></td>';
echo '<td width="60%" height="50" class="header">';
echo 'Het paswoord is gewijzigd!<br>';
echo '<a href="index.php">Ga naar de agenda</a>';
echo '</td>';
echo '<td width="20%" height="50"></td>';
echo '</tr>';
echo '</table>';
echo '</center>';
echo '</div>';
}
else
{
echo 'Paswoorden komen niet overeen, <a href="changepass.php">probeer opnieuw</a>';
}
}
else
{
echo $sess_id.'<br>';
echo '<form action="changepass.php" method="post">';
echo 'Paswoord<input type="password" name="pw1"><br>';
echo 'Paswoord<input type="password" name="pw2"> (bevestiging)<br>';
echo '<input type="submit" value="Verander">';
echo '</from>';
}
?>
Die echo $sess_id; 's is om te kijken welk id ik nu heb...
Maar dat blijft overal 10
Gewijzigd op 01/01/1970 01:00:00 door Jens V
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
64
65
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
64
65
<?php
include('includes/config.php');
require('includes/auth.php');
$sess_id = $_SESSION['id'];
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
function strip_var($value)
{
$value1 = addslashes($value);
$value2 = strip_tags($value1);
$value3 = htmlspecialchars($value2);
return $value3;
}
$pw1 = strip_var($_POST['pw1']);
$pw2 = strip_var($_POST['pw2']);
if($pw1 == $pw2)
{
$sql = "
UPDATE
users
SET
password= SHA1('" . $pw1 . "')
WHERE
id = " . $sess_id . "
;
";
if (! $res = mysql_query($sql))
{
trigger_error(mysql_error());
echo '<pre>'.$sql.'</pre>';
}
else
{
header('Refresh: 3; URL=http://www.vandenreyt.be/koks/index.php');
echo "<html>";
echo "<head>";
echo "<title>Agenda Koks</title>";
echo "<style type=\"text/css\">";
echo " @import 'includes/stylesheetadmin.css';";
echo "</style>";
echo "</head>";
echo "<body>";
echo '<div align="center" class="body">';
echo '<center>';
echo 'Het paswoord is gewijzigd!<br>';
echo '</center>';
echo '</div>';
}
}
else
{
echo 'Paswoorden komen niet overeen, <a href="changepass.php">probeer opnieuw</a>';
}
}
else
{
echo '<form action="changepass.php" method="post">';
echo 'Paswoord<input type="password" name="pw1"><br>';
echo 'Paswoord<input type="password" name="pw2"> (bevestiging)<br>';
echo '<input type="submit" value="Verander">';
echo '</from>';
}
?>
include('includes/config.php');
require('includes/auth.php');
$sess_id = $_SESSION['id'];
ini_set ('display_errors', 1);
error_reporting (E_ALL);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
function strip_var($value)
{
$value1 = addslashes($value);
$value2 = strip_tags($value1);
$value3 = htmlspecialchars($value2);
return $value3;
}
$pw1 = strip_var($_POST['pw1']);
$pw2 = strip_var($_POST['pw2']);
if($pw1 == $pw2)
{
$sql = "
UPDATE
users
SET
password= SHA1('" . $pw1 . "')
WHERE
id = " . $sess_id . "
;
";
if (! $res = mysql_query($sql))
{
trigger_error(mysql_error());
echo '<pre>'.$sql.'</pre>';
}
else
{
header('Refresh: 3; URL=http://www.vandenreyt.be/koks/index.php');
echo "<html>";
echo "<head>";
echo "<title>Agenda Koks</title>";
echo "<style type=\"text/css\">";
echo " @import 'includes/stylesheetadmin.css';";
echo "</style>";
echo "</head>";
echo "<body>";
echo '<div align="center" class="body">';
echo '<center>';
echo 'Het paswoord is gewijzigd!<br>';
echo '</center>';
echo '</div>';
}
}
else
{
echo 'Paswoorden komen niet overeen, <a href="changepass.php">probeer opnieuw</a>';
}
}
else
{
echo '<form action="changepass.php" method="post">';
echo 'Paswoord<input type="password" name="pw1"><br>';
echo 'Paswoord<input type="password" name="pw2"> (bevestiging)<br>';
echo '<input type="submit" value="Verander">';
echo '</from>';
}
?>
Zoiets?
Gewijzigd op 01/01/1970 01:00:00 door K i p
als je in de auth.php kijkt (staat wat hoger), dan zie je dat ze wordt gemaakt...
mysql_query ("UPDATE users SET password='$pass' WHERE id='$sess_id'") or die(mysql_error());
in:
mysql_query ("UPDATE `users` SET `password`= '".$pass."' WHERE `id` = '".$sess_id."'") or die(mysql_error());
(sorry boris, ik zag je berichiej niet)
Gewijzigd op 01/01/1970 01:00:00 door vdleije .
@ vdleije: ik kijk dadelijk eens;)
Ik heb naar de sessie gekeken, en die geeft als id ALTIJD 10
dat is de fout...
Jens
EDIT ben sewwes terug
Gewijzigd op 01/01/1970 01:00:00 door Jens V
Raar dat je geen errors kreeg bij mijn versie. Ik zag namelijk zelf net een parse error zitten. Nu ge-edit...
Boris schreef op 16.01.2007 17:58:
Raar dat je geen errors kreeg bij mijn versie. Ik zag namelijk zelf net een parse error zitten. Nu ge-edit...
Die errors had ik al aangepast;-)
zit er nog een in;)
het haakje om de if te sluiten ;)
Maar het is de session fout eh
Gewijzigd op 01/01/1970 01:00:00 door Jens V
?
Wat krijg je met Op een nieuwe pagina is dat gewoon wit...
Gewijzigd op 01/01/1970 01:00:00 door Jens V
neej, op dezelfde pagina
Is het gelukt?