Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何解决未定义索引问题_Php_Mysql_Web - Fatal编程技术网

Php 如何解决未定义索引问题

Php 如何解决未定义索引问题,php,mysql,web,Php,Mysql,Web,我有一个这样的表单,如果我选择管理级别,则组合框部门被禁用,然后在选择员工级别时,组合框部门将处于活动状态并显示部门的选项,此方法有效,但在保存过程中选择管理级别时遇到错误,而且表单部门不活跃, 这是我的密码 <div class="form-group"> <label class="control-label col-sm-4" for="level">Level</label> <div c

我有一个这样的表单,如果我选择管理级别,则组合框部门被禁用,然后在选择员工级别时,组合框部门将处于活动状态并显示部门的选项,此方法有效,但在保存过程中选择管理级别时遇到错误,而且表单部门不活跃,

这是我的密码

    <div class="form-group">
            <label class="control-label col-sm-4" for="level">Level</label>
            <div class="col-sm-4"> 
              <select name="level" id="level" class="form-control">
              <option value="null">-- Level --</option>
              <option value="admin">Admin</option>
              <option value="staff">Staff</option>
              <option value="client">Client</option>
              </select>
            </div>
          </div>
          <div class="form-group">
            <label class="control-label col-sm-4" for="department">Department</label>
            <div class="col-sm-4"> 
              <select name="department" id="department" class="form-control">

              </select>
            </div>
          </div>
 $("#level").change(function(){

        // variabel dari nilai combo box provinsi
        var id = $("#level").val();


        // mengirim dan mengambil data
        $.ajax({
            type: "POST",
            dataType: "html",
            url: "search_level.php",
            data: "level="+id,
            success: function(msg){

                // jika tidak ada data
                if(msg == ''){
                  var x=document.getElementById("department")
                  x.value=""
                  x.disabled=true
                }               
                // jika dapat mengambil data,, tampilkan di combo box kota
                else{
                  var x=document.getElementById("department")
                  x.disabled=false
                    $("#department").html(msg);                                                     
                }
            }
        });    
    });

数量
--水平仪--
管理
工作人员
客户
部门
$(“#级别”).更改(函数(){
//variabel dari nilai组合盒提供
var id=$(“#level”).val();
//Mengrim和Mengabil数据
$.ajax({
类型:“POST”,
数据类型:“html”,
url:“search_level.php”,
数据:“level=“+id,
成功:功能(msg){
//jika tidak ada数据
如果(消息=“”){
var x=document.getElementById(“部门”)
x、 value=“”
x、 禁用=真
}               
//jika dapat提供数据,tampilkan di combo box kota
否则{
var x=document.getElementById(“部门”)
x、 禁用=错误
$(“#部门”).html(msg);
}
}
});    
});
代码保存散文

   <?php

include "../config/koneksi.php";

$name = $_POST['name'];
$user = $_POST['username'];
$password = md5($_POST['password']);
$level = $_POST['level'];
$deparment = $_POST['department'];

$status = '1';
$tgl_dibuat = date("Y-m-d h:i:s");

$query = mysqli_query($con, "INSERT INTO user (nama,user,password,level,department,tgl_dibuat,status) VALUES ('$name','$user',
'$password','$level','$deparment','$tgl_dibuat','$status')");

if ($query) {
    ?>
    <script language="JavaScript">
    alert('User Saved');

    </script>
    <?php
} else {
    ?>
    <script language="JavaScript">
    alert('Failed');
    document.location='user';
    </script>
    <?php
} 
?>

如果该字段被禁用,您将不会发送
$\u POST['department']so:

$deparment = $_POST['department'];
无法加载您的post请求的
“部门”
索引。你可以做:

$department = isset($_POST['department']) ? $_POST['department'] : "Default value";
请注意,您的代码是非常不安全的,因为您没有对值进行任何检查,也没有转义字符串,有人可能很容易在表单中插入一些SQL。看

我至少要摆脱你的束缚:

$name = mysqli_real_escape_string($_POST['name']);
$user = mysqli_real_escape_string($_POST['username']);
$password = md5($_POST['password']);
$level = mysqli_real_escape_string($_POST['level']);
$deparment = isset($_POST['department']) ? mysqli_real_escape_string($_POST['department']) : "Default value";

此外,正如@alexis所观察到的,使用它会更好。

基本上,这个错误告诉您,在第9行的文件“add_user.php”中,您试图打印实际上不存在的索引。 下面给出了这行代码


数据库表“department”中有哪些列?请不要使用
md5()
进行密码加密,有更好的调用。出于安全原因,您还应该使用准备好的语句。上述代码可能存在多个问题:如前所述,不要使用
md5
对密码进行散列,而是使用
password\u hash
/
password\u verify
。代码易受sql注入攻击-请改用
prepared语句
,并且在分配变量之前,您没有检查变量是否已设置-请使用
isset()
您的代码极易受到sql注入攻击!使用事先准备好的声明来完全保护您的数据免受这些攻击,并在您遇到这些攻击之前解决一系列其他潜在问题;但是不要用
mysqli_real_escape_string
手动引用,而是使用准备好的查询——它更健壮,使用起来也更简单:
$name = mysqli_real_escape_string($_POST['name']);
$user = mysqli_real_escape_string($_POST['username']);
$password = md5($_POST['password']);
$level = mysqli_real_escape_string($_POST['level']);
$deparment = isset($_POST['department']) ? mysqli_real_escape_string($_POST['department']) : "Default value";
<option value="<?php echo $data_prov["column_name"] ?>"><?php echo $data_prov["column_name"] ?></option><br`>