Не работает код на PHP

Не знаю, в чём проблема, код не запускается, жалуется на символ «;».

<?php
include "global.php";

if ($_POST ['login'] == null || $_POST['password'] == null || $_POST ['hwid'] == null)
    die();

$controller = new mysqli(DB_HOST,DB_LOGIN,DB_PASSWORD,DB_NAME);

$u_login = $_POST ['login'];
$u_password = $_POST ['password'];
$u_hwid = $_POST['hwid'];

$rsp = $controller->query("SELECT * FROM users WHERE login='$u_login' AND password='$u_password'");
if($rsp->num_rows == 0)
    [
        $controller->close();
        die("2");
]

$u_data = $rsp->fetch_assoc();
$id = $u_data['id'];
$db_hwid = $u_data ['hwid'];

    if($db_hwid == null)[
    $controller->query("UPDATE users SET hwid='$u_hwid' WHERE id='$id'");
    $controller->close();
    die("3");
]

if($db_hwid != $u_hwid)
    [
        $controller->close();
    die("4");
]
$controller->close();
die("1");

Ответы (1 шт):

Автор решения: Simon

Как я и писал в комментарии в условиях if у Вас спутаны {} с []. Там где у вас должны быть фигурные скобки, почему-то используются квадратные.

У Вас условие выглядит:

if (...) [
    ...
]

а должно быть:

if (...) {
    ...
}

Попробуйте сделать таким образом:

<?php
include "global.php";

if ($_POST ['login'] == null || $_POST['password'] == null || $_POST ['hwid'] == null)
    die();

$controller = new mysqli(DB_HOST,DB_LOGIN,DB_PASSWORD,DB_NAME);

$u_login = $_POST ['login'];
$u_password = $_POST ['password'];
$u_hwid = $_POST['hwid'];

$rsp = $controller->query("SELECT * FROM users WHERE login='$u_login' AND password='$u_password'");
if($rsp->num_rows == 0) {
    $controller->close();
    die("2");
}

$u_data = $rsp->fetch_assoc();
$id = $u_data['id'];
$db_hwid = $u_data ['hwid'];

if($db_hwid == null) {
    $controller->query("UPDATE users SET hwid='$u_hwid' WHERE id='$id'");
    $controller->close();
    die("3");
}

if($db_hwid != $u_hwid) {
    $controller->close();
    die("4");
}

$controller->close();
die("1");
→ Ссылка