更改管理员帐户的密码也会影响员工帐户

时间:2014-11-25 02:04:37

标签: php html web admin

我需要一点帮助。我目前正在开发我公司的网站,一切顺利,直到我测试了管理帐户(我使用的)的更改密码功能。我已经为员工设置了一个单独的帐户,该帐户有自己的更改密码功能。我的问题是每当我更改密码时,它也会将员工帐户的密码更改为同一密码。

这是更改密码的PHP代码:

<?php
session_cache_limiter("private");
$cache_limiter = session_cache_limiter();
session_cache_expire(180);
$cache_expire=session_cache_expire();
session_start();
if(isset($_SESSION['acc_uname'],$_SESSION['acc_pword']))
{
$acc_uname=$_SESSION['acc_uname'];
$acc_pword=$_SESSION['acc_pword'];
require_once('/home/a9440778/public_html/registration/connect.php');
function escape_data($data)
{
global $dbc;
if(ini_get('magic_qoutes_gpc'))
{
$data=stripslashes($data);
}
return mysql_real_escape_string($data,$dbc);
}
error_reporting(E_ALL & ~E_NOTICE);
echo"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1' />
<title>
Natuna Scean Manpower Corporation
</title></head>";
if(empty($_POST['acc_pword1']))
{
$acc_pword1=false;
echo"<b>Old Password</b> Contains null value<br>";
$retry=1;
}
else if($_POST['acc_pword1_err']=='1')
{
$acc_pword1=false;
echo"<b>Old Password</b> Contains invalid value<br>";
$retry=1;
}
else
{
$acc_pword1=md5(escape_data($_POST['acc_pword1']));
}
if(empty($_POST['acc_pword2']))
{
$acc_pword2=false;
echo"<b>New Password</b> Contains null value<br>";
$retry=1;
}
else if($_POST['acc_pword2_err']=='1')
{
$acc_pword2=false;
echo"<b>New Password</b> Contains invalid value<br>";
$retry=1;
}
else
{
$acc_pword2=md5(escape_data($_POST['acc_pword2']));
}
if(empty($_POST['acc_pword3']))
{
$acc_pword3=false;
echo"<b>Retype Password</b> Contains null value<br>";
$retry=1;
}
else if($_POST['acc_pword3_err']=='1')
{
$acc_pword3=false;
echo"<b>Retype Password</b> Contains invalid value<br>";
$retry=1;
}
else
{
$acc_pword3=md5(escape_data($_POST['acc_pword3']));
}
if($acc_pword3!=$acc_pword2)
{
$acc_pword3=false;
$acc_pword2=false;
echo"<b>New Passwords</b> do not match each other<br>";
$retry=1;
}
if($acc_pword1!=$acc_pword)
{
$acc_pword1=false;
echo"<b>Old Password</b> does not match<br>";
$retry=1;
}
if($retry=='1')
{
echo"<br><br><a href='javascript:history.go(-1)' target='middle'>retry encoding</a>";
}
else
{
echo"<script>

alert('Password Update Successful!');
window.location='http://natunascean.site88.net/admin/adminhome.php';
</script>";

/* echo"
<br><b>You had successfully updated your account</b><br><br>
<a href='' onclick='window.adminhome.php.reload(true)'>Done</a>"; */
$query=mysql_query("update account set acc_pword='$acc_pword2' where acc_pword='$acc_pword';")or die("JBSOFTWARES 1".mysql_error());
$_SESSION['acc_uname']="$acc_uname";
$_SESSION['acc_pword']="$acc_pword2";
$_SESSION['acc_type']="$acc_type";
}
}
else
{
echo"<center><br><br><img src='ops.png'></center>";
}
?>

我刚刚编辑了&#34; window.location&#34;和onClick部分,其中adminhome.php为Admin,crewhome.php为Staff

3 个答案:

答案 0 :(得分:1)

$query=mysql_query("update account set acc_pword='$acc_pword2' where acc_pword='$acc_pword';")or die("JBSOFTWARES 1".mysql_error());

此行会使用密码$acc_pword更新所有和所有帐户。您需要将更新限制为当前登录的用户。

答案 1 :(得分:0)

我建议使用用户帐户,而不是在WHERE子句中使用密码本身。然后就无法更改错误的密码。

变化:

$query=mysql_query("UPDATE account SET acc_pword='$acc_pword2' 
           WHERE acc_pword='$acc_pword';")or die("JBSOFTWARES 1".mysql_error());

要:

$query=mysql_query("UPDATE account SET acc_pword='$acc_pword2' 
           WHERE acc_uname='$acc_uname';")or die("JBSOFTWARES 1".mysql_error());

答案 2 :(得分:0)

第一个答案是正确的,并回答您的后续问题。你只需要了解你的查询条件..

变化

$query=mysql_query("update account set acc_pword='$acc_pword2' where acc_pword='$acc_pword';")or die("JBSOFTWARES 1".mysql_error());

$query=mysql_query("update account set acc_pword='$acc_pword2' where user_id = currentUser;")or die("JBSOFTWARES 1".mysql_error());