SQL Update & Form een pagina.
Ik ben bezig met een registratiesysteem voor gebruikers, het registreren van een gebruiker lukt nu op één pagina (form & insert). Nu wil ik ook de gebruiker kunnen aanpassen op één pagina. Alleen krijg ik dit maar niet aan de gang, is iemand die fout ziet binnen mijn script?
Quote:
<html>
<p>
<form action="change_user.php" method="post">
<table>
<tr>
<td>
*Voornaam:
</td>
<td>
<input type="text" name="user_firstname" value=''>
</td>
</tr>
<tr>
<td>
*Achternaam:
</td>
<td>
<input type="text" name="user_lastname" value='' required="required">
</td>
</tr>
<tr>
<td>
*E-mail <i> (Gebruikersnaam) </i>:
</td>
<td>
<input type="text" name="user_email" value='' required="required">
</td>
</tr>
<tr>
<td>
*Wachtwoord:
</td>
<td>
<input type="password" name="user_password" required="required" placeholder='Wachtwoord'>
</td>
</tr>
<tr>
<td>
*Wachtwoord herhalen:
</td>
<td>
<input type="password" name="user_repeatpassword" required="required" placeholder='Wachtwoord herhalen'>
</td>
</tr>
</table>
<p>
<input type="submit" name="submit" value='Register'>
</form>
</html>
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
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
<?php
$submit = $_POST['submit'];
$user_firstname = $_POST['user_firstname'];
$user_lastname = $_POST['user_lastname'];
$user_email = $_POST['user_email'];
$user_password = $_POST['user_password'];
$user_repeatpassword = $_POST['user_repeatpassword'];
if ($submit)
{
if($user_firstname&&$user_lastname&&$user_email&&$user_password&&$user_repeatpassword)
{
if($user_password==$user_repeatpassword)
{
$user_password = sha1(md5($user_password));
$user_repeatpassword = sha1(md5($user_repeatpassword));
include '../inc_connect.php';
$query="UPDATE users SET
user_firstname = '$user_firstname',
user_lastname = '$user_lasttname',
user_email = '$user_email',
user_password = '$user_password',
WHERE user_id='$user_id'";
mysql_query($query);
header('Location: survey_users.php');
}
else
echo "<br> <font style=\"color:red;\"> Wachtwoorden komen niet over een. </font>";
}
else
echo "<br> <font style=\"color:red;\"> Vul alle velden in. </font>";
}
include '../inc_connect.php';
$result = mysql_query("SELECT * FROM users WHERE `user_id` = '". $_GET["user_id"] ."'");
$account_overzicht_detail = mysql_fetch_assoc($result);
?>
$submit = $_POST['submit'];
$user_firstname = $_POST['user_firstname'];
$user_lastname = $_POST['user_lastname'];
$user_email = $_POST['user_email'];
$user_password = $_POST['user_password'];
$user_repeatpassword = $_POST['user_repeatpassword'];
if ($submit)
{
if($user_firstname&&$user_lastname&&$user_email&&$user_password&&$user_repeatpassword)
{
if($user_password==$user_repeatpassword)
{
$user_password = sha1(md5($user_password));
$user_repeatpassword = sha1(md5($user_repeatpassword));
include '../inc_connect.php';
$query="UPDATE users SET
user_firstname = '$user_firstname',
user_lastname = '$user_lasttname',
user_email = '$user_email',
user_password = '$user_password',
WHERE user_id='$user_id'";
mysql_query($query);
header('Location: survey_users.php');
}
else
echo "<br> <font style=\"color:red;\"> Wachtwoorden komen niet over een. </font>";
}
else
echo "<br> <font style=\"color:red;\"> Vul alle velden in. </font>";
}
include '../inc_connect.php';
$result = mysql_query("SELECT * FROM users WHERE `user_id` = '". $_GET["user_id"] ."'");
$account_overzicht_detail = mysql_fetch_assoc($result);
?>
<html>
<p>
<form action="change_user.php" method="post">
<table>
<tr>
<td>
*Voornaam:
</td>
<td>
<input type="text" name="user_firstname" value=''>
</td>
</tr>
<tr>
<td>
*Achternaam:
</td>
<td>
<input type="text" name="user_lastname" value='' required="required">
</td>
</tr>
<tr>
<td>
*E-mail <i> (Gebruikersnaam) </i>:
</td>
<td>
<input type="text" name="user_email" value='' required="required">
</td>
</tr>
<tr>
<td>
*Wachtwoord:
</td>
<td>
<input type="password" name="user_password" required="required" placeholder='Wachtwoord'>
</td>
</tr>
<tr>
<td>
*Wachtwoord herhalen:
</td>
<td>
<input type="password" name="user_repeatpassword" required="required" placeholder='Wachtwoord herhalen'>
</td>
</tr>
</table>
<p>
<input type="submit" name="submit" value='Register'>
</form>
</html>
Alvast bedankt!
Paar losse flodders:
- een post request controleer je niet door naar de submit te kijken
- het copieren van $_POST waarden naar variabelen wordt gezien als overbodig
- include's moet je niet verstoppen in if constructies, datgene wat je include is geheel onafhankelijk van hetgeen je procedureel afhandelt.
- om zonder controle en validatie op het geen er aan waarden van de buitenwereld binnen komen zijn problemen evident te verwachten
M.a.w. bekijk eens andere topics waar het woord form, submit, controle, validatie, xss, sql injectie voorkomen en doe er dan je voordeel mee.
Het zou ook wel fijn zijn als je foutmeldingen meegeeft of wat duidelijker bent in wat er waar precies fout gaat. Nu moeten we die hele code doorspitsen opzoek naar 'iets' dat 'fout' gaat.
http://www.pfz.nl/forum/topic/7502-sql-update-form-een-pagina/ geven ze ook aan dat het script wel enige verbetering behoeft...
Op