I am building members area for my site.
i have a problem which i cant solve, so here i am.
when user is logged in, in user panel i have an option to change password other personal info.
the problem is: once user is registered, hre can chnage his data as well as data of other users !!!
Is there any way that i could prevent this ?
how to protect data of other users ?
code for login script:
<?php include("theader.php"); ?>
<?php
$timeoutseconds = 1000; // length of gaps in the count
//get the time
$timestamp = time();
$timeout = $timestamp-$timeoutseconds;
$sql = "select * from users where login = '$login' and password = '$password'";
$result = mysql_query($sql ,$db);
if ($myrow = mysql_fetch_array($result)) {
do {
$uid = $myrow["userid"];
$uname = $myrow["login"];
} while ($myrow = mysql_fetch_array($result));
$loggedin = true;
$upwd = $password;
$msg = "Welcome $uname, logged in. <a href=index.php>Click here</a> for return to main page.";
//$query2 = "update users set logged_in='Y' where userid = $uid and password = '$upwd'";
$query2 = "update users set timestamp='$timestamp',logged_in='Y' where userid = $uid and password = '$upwd'";
$mysqlresult2 = mysql_query($query2);
} else {
$loggedin = false;
$upwd = "";
$uid = "";
$uname = "";
$msg = "Error, user name and password arent correct. ";
}
session_register("loggedin");
session_register("upwd");
session_register("uid");
session_register("uname");
?>
now my code to update users data is like this.
<?php include("theader.php"); ?>
<?php
if (isset($_POST['submit'])){
$error = false;
$errormessage = "";
if (strlen($email) < 1) {
$error = true;
$errormessage .= "<li><b>Error. No email.</b><br>\n";
}
if (strlen($login) < 1) {
$error = true;
$errormessage .= "<li><b>Error. No login.</b><br>\n";
}
if (strlen($password) < 1) {
$error = true;
$errormessage .= "<li><b>Error. No password.</b><br>\n";
}
if ($error) {
$errormessage .= "<br>Please fix this<br>\n";
$msg = $errormessage;
} else {
$query2 = "update users set email='$_POST[email]',login='$_POST[login]', password='$_POST[password]' where userid='$_GET[id]'";
$mysqlresult2 = mysql_query($query2);
$loggedin = false;
$upwd = "";
$uid = "";
$uname = "";
$msg = "Data saved. To be logged in, enter new data\n";
}
}
?>
<TD align="left" valign="top" >
<table border="0" cellpadding="0" cellspacing="0" width="447">
<tr>
<td background="text/text_r2_c1.gif"> </td>
<td><span class="style1">
<?
if (logincheck($uid, $upwd)) {
// i think this is the line that is wrong, need to check user agains this
$query = "Select * from users where userid='$_GET[id]'";
$mysqlresult = mysql_query($query);
echo mysql_error();
echo "<span class=\"style1\">User settings</span>\n";
while($row = mysql_fetch_array($mysqlresult)){
echo "<form action=update.php?id=$uid method=post > \n";
echo "<table border=0>\n";
echo "<tr><td><span class=\"style5\">Your email</span></td>\n";
echo "<td><input style=\"font-size: 10px; height: 16px\" size=\"60\" name='email' type='text' size='80' value='$row[email]' /></td></tr>\n";
echo "<tr><td><span class=\"style5\">login</span></td>\n";
echo "<td><input style=\"font-size: 10px; height: 16px\" size=\"60\" name='login' type='text' size='80' value='$row[login]' /></td></tr>\n";
echo "<tr><td><span class=\"style5\">password</span></td>\n";
echo "<td><input style=\"font-size: 10px; height: 16px\" size=\"60\" name='password' type='text' size='80' value='$row[password]' /></td></tr>\n";
echo "<tr><td colspan=2><input style=\"font-size: 9px; height: 19px\" type='submit' name='submit' value='Submit changes'></td></tr>\n";
echo "</table>\n";
}
} else {
printf("<font size=2 face='Arial, Helvetica, sans-serif'><br>You will need to login</font>");
}
?>
Can any1 help ?
Thanks