我有一个通知:数组到字符串转换,但我无法解决它

时间:2015-10-15 16:18:23

标签: php

通知在include('connect-db.php')

之后的$ query行上

MyCode.PhP

function SignUp()
{
    if(!empty($_POST['email']))
    {
        include('connect-db.php');
    $query = mysqli_query  ($db, "SELECT * FROM admin WHERE email = '$_POST [email]'")
        or die(mysqli_error());
        if(!$row = mysqli_fetch_array($query) or die(mysqli_error()))
        {
            newuser();
            echo ("<SCRIPT LANGUAGE='JavaScript'>
    window.alert('Admin Registration Successful')
    window.location.href='adminhome.php';
    </SCRIPT>");

        } 
        else
        {
            echo ("<SCRIPT LANGUAGE='JavaScript'>
            window.alert('Sorry You are already a registered user!')
            window.location.href='adminhome.php';
    </SCRIPT>");


        }
    }

}

任何人都有任何想法如何解决这个问题。 代码仍然可以正常工作但我想摆脱它所以请不要建议关闭错误报告:)

“应注意通知,因此名称为” - Stack Overflow

提前致谢!

1 个答案:

答案 0 :(得分:2)

您容易受sql injection attacks攻击,并且查询字符串中有额外的空格:

$query = mysqli_query  ($db, "SELECT * FROM admin WHERE email = '$_POST [email]'")
                                                                       ^--here

由于$_POST[email]之间有空格,因此PHP会将array string视为array[key],而不是Array。字符串上下文中的数组只是单词a = ["foo", "boo"] for i, v in enumerate(a): print("{}: {}".format(i + 1, v)) ,您会收到该警告,因为 ARE 在字符串上下文中使用数组。