I'm building a very basic PHP/MySQL login script, and I'm working on allowing people to change details of their own account. Whenever I try to 'Update' the new contact info, however, the data doesn't update.
EDIT: I figured out how to get all the data into the database, except for the new password.
EDIT 2: Apparentely, all I needed was a break and to sit down and look again.
Problem was that in my UPDATE queries, I was trying to use $id before it was set.
<?php
include("dbinfo.inc.php");
//check for login cookie
if(isset($_COOKIE['ID_kyman_msgbrd']))
//check to see if the ID matches the user
{
$username=$_COOKIE['ID_kyman_msgbrd'];
$idcheck = mysql_query("SELECT * FROM users WHERE username = '$username'") or die(mysql_error());
while($info = mysql_fetch_array( $idcheck ))
{
if ($username != $info['username'])
{
header("Location: members.php");
}
else {
if (isset($_POST['submit'])) {
if (!$_POST['ud_username']) {
die('You did not fill in the required fields');
}
if (!get_magic_quotes_gpc()) {
$_POST['ud_username'] = addslashes($_POST['username']);
}
$usercheck = $_POST['ud_username'];
$check = mysql_query("SELECT username FROM users WHERE username= '$ud_username'") or die(mysql_error());
$check2 = mysql_num_rows($check);
//if the name exists, it gives an error
if ($check2 != 0) {
die('Sorry, that username is taken.');
}
//if password change is requested, encrypt it and process
if ($_POST['ud_password' != '']) {
$_POST['ud_password'] = md5($_POST['ud_password']);
if (!get_magic_quotes_gpd()) {
$_POST['ud_password'] = addslashes($_POST['ud_password']);
}
$updatepassword="UPDATE users SET password='$_POST[ud_password]' WHERE id='$id'";
mysql_query($updatepassword) or die(mysql_error());
echo "Password changed. <br />";
}
$_POST['ud_username'] = addslashes($_POST['ud_username']);
$_POST['ud_realname'] = addslashes($_POST['ud_realname']);
$_POST['ud_age'] = addslashes($_POST['ud_age']);
$_POST['ud_email'] = addslashes($_POST['ud_email']);
$_POST['ud_location'] = addslashes($_POST['ud_location']);
$ud_username = $_POST['ud_username'];
$ud_realname = $_POST['ud_realname'];
$ud_age = $_POST['ud_age'];
$ud_email = $_POST['ud_email'];
$ud_location = $_POST['ud_location'];
$queryupdate="SELECT * FROM users WHERE username='$username'";
$idupdate=mysql_query($queryupdate);
$idresult=mysql_result($idupdate,0,"ID");
$update = "UPDATE users SET username='$ud_username', realname='$ud_realname', age='$ud_age', email='$ud_email', location='$ud_location' WHERE id='$idresult'" or die(mysql_error());
$hour = time() + 3600;
setcookie(ID_kyman_msgbrd, $ud_username, $hour);
mysql_query($update) or die(mysql_error());
echo "Details changed <br /><a href=\"members.php\">Return to members area</a>";
}
$query="SELECT * FROM users WHERE username='$username'";
$result=mysql_query($query) or die(mysql_error());
$num=mysql_num_rows($result);
$i=0;
while ($i < $num) {
$id=mysql_result($result,$i,"ID");
$username=mysql_result($result,$i,"username");
$realname=mysql_result($result,$i,"realname");
$age=mysql_result($result,$i,"age");
$email=mysql_result($result,$i,"email");
$location=mysql_result($result,$i,"location");
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<table border=0>
<tr><td>ID:</td>
<td><? echo "$id"; ?></td></tr>
<tr><td>Username:</td>
<td><input type="text" name="ud_username" value="<? echo "$username"; ?>" /></td></tr>
<tr><td>Password:</td>
<td><input type="password" name="ud_password" /></td></tr>
<tr><td>Real Name:</td>
<td><input type="text" name="ud_realname" value="<? echo "$realname"; ?>"></td></tr>
<tr><td>Age:</td>
<td><input type="text" name="ud_age" value="<? echo "$age"; ?>"></td></tr>
<tr><td>E-mail Address:</td>
<td><input type="text" name="ud_email" value="<? echo "$email"; ?>"></td></tr>
<tr><td>Location:</td>
<td><input type="text" name="ud_location" value="<? echo "$location"; ?>"></td></tr>
</table>
<input type="Submit" name="submit" value="Update">
</form>
<?php
++$i;
}
}
}
}
else
{
header("Location: login.php");
}
?>