运行以下更改密码脚本时出现此错误:
注意:未定义的变量:第21行的C:\ xampp \ htdocs \ oh \ change.php中的$ insert 密码未更改
<?php
include('db_connection.php');
include('crypt.php');
session_start();
if (isset($_POST['submit'])) {
$oldpassword = $_POST['current_password'];
$newpassword= $_POST['new_password'];
$confirm_password =$_POST['confirm_password'];
$user_name = $_SESSION['UserName'];
$old = decrypt($oldpassword);
$select = mysql_query("SELECT * FROM staff WHERE UserName='$user_name'");
$fetch = mysql_fetch_array($select);
$data_password = $fetch['password';
if ($newpassword == $confirm_password && $data_password == $old) {
$pass = encrypt($confirm_password);
$insert = mysql_query("UPDATE staff SET password='$pass' WHERE UserName='$user_name'");
}
if ($insert) {
echo "Password changed";
} else {
echo "Password not changed";
}
}
mysql_close($con);
?>
答案 0 :(得分:0)
嗯,这是因为您可能无法进入if
语句中设置$insert
。如果是$insert
不存在,则会收到此通知。
尝试检查变量是否存在,如:
if (isset($insert)) {
echo "Password changed";
} else {
echo "Password not changed";
}
答案 1 :(得分:0)
你应该在if语句之前定义$ insert,所以当你稍后引用时,肯定会定义它:
$insert = FALSE;
if ($newpassword == $confirm_password && $data_password == $old) {
$pass = encrypt($confirm_password);
$insert = mysql_query("UPDATE staff SET password='$pass' WHERE UserName='$user_name'");
}
if ($insert) {
echo "Password changed";
} else {
echo "Password not changed";
}
编辑:
还有另一个问题,因为旧密码可能会在数据库中加密,并且您将其与提供的$ oldpassword的解密版本进行比较。尝试将该行更改为:
$old = encrypt($oldpassword);
答案 2 :(得分:-1)
正在发生的事情是$ insert未在之前的“if”语句之外声明。 如果此语句为false,则$ insert未定义。 试试这个:
<?php
include('db_connection.php');
include('crypt.php');
session_start();
if (isset($_POST['submit'])) {
$oldpassword = $_POST['current_password'];
$newpassword= $_POST['new_password'];
$confirm_password =$_POST['confirm_password'];
$user_name = $_SESSION['UserName'];
$old = decrypt($oldpassword);
$select = mysql_query("SELECT * FROM staff WHERE UserName='$user_name'");
$fetch = mysql_fetch_array($select);
$data_password = $fetch['password';
if ($newpassword == $confirm_password && $data_password == $old) {
$pass = encrypt($confirm_password);
$insert = mysql_query("UPDATE staff SET password='$pass' WHERE UserName='$user_name'");
if ($insert) {
echo "Password changed";
} else {
echo "Password not changed";
}
}
}
mysql_close($con);
?>