Hoi daar,

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?

<?
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
@offtopic
Waarom echo je niet alles in 1x?
ik doe dit altijd zo:)
maar ik heb juist nog eens dat sess_id laten echoen, en hij zegt dat mijn id 10 is. Dat zou 1 moeten zijn :/...
persoonlijke voorkeur, ik doe het ook zo.

@jens, zet je vars overal buiten quotes, overal!

bijv:

<?
$pass = sha1('$pw1'); // dit is dus de sha1 over de string '$pw1' en niet de var $pw1
?>
Ik zie juist dat als ik onder een andere naam inlog, mijn session id OOK 10 is... HOE KAN DAT:s:s

Dit is de pagina om de sessie te zetten: (van jan koehoorn..)
<?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 ();
}
}
?>
(je geeft geen session_start() mee terwijl je wel met een $_SESSION werkt!
shiiit:d
merci jonge;)

WERKT NOG NIET -.-'
~LOL, geen dank~

Maar hoe zit het na het invoeren van session_start()?
heb session strart erboven gezet, werkt nog steeds niet...
(die session_start(); staat ook al in de auth pagina;) )

de pagina:
<?
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
Waar wordt die $_SESSION['id'] aangemaakt?


**typo**
<?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>';
}
?>

Zoiets?

Reageren