"注意:未定义的变量"

时间:2014-04-16 07:48:09

标签: php

运行以下更改密码脚本时出现此错误:

  

注意:未定义的变量:第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);
?>

3 个答案:

答案 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);
    ?>