Как исправить ошибку: syntax error, unexpected T_DOUBLE_ARROW

Рейтинг: 0Ответов: 1Опубликовано: 25.09.2014
Parse error: syntax error, unexpected T_DOUBLE_ARROW in Z:\home\localhost\www\php\scripts\auth\auth.php on line 18

<?php // Обработчик формы авторизации

    // Если нажата кнопка то обрабатываем данные
    if(isset($_POST['submit'])) {
        if(empty($_POST['email']))
            $err[] = 'Не введен Логин';

    if(empty($_POST['pass']))
        $err[] = 'Не введен Пароль';

    // Проверяем наличие ошибок и выводим пользователю
    if(count($err) > 0)
        echo showErrorMessage($err);
        else {
            //Создаем запрос на выборку из базы данных для проверки подлиности пользователя
            $sql = 'SELECT * FROM `'. BEZ_DBPREFIX .'reg` WHERE `login` = :login';
            $statement = $pdo->prepare($sql);
            $statement->execute( ':login'=>$_POST['email'] );
            $row = $statement->fetch(PDO::FETCH_OBJ);
                if($row !== false) {
                    if(md5(md5($_POST['pass'].$_POST['salt'])) === $row->pass) {

                        $_SESSION['user'] = true;
                        //Сбрасываем параметры
                        header('Location:'. BEZ_HOST .'/?mode=auth');
                        exit;
                    }
                    else
                        echo showErrorMessage('Неверный пароль!');
                }
            else
                echo showErrorMessage('Логин <b>'. $_POST['email'] .'</b> не найден!');
        }
    }

?>

Ответы

▲ 4Принят

Внимательно смотрим на восемнадцатую строку скрипта:

$statement->execute( ':login'=>$_POST['email'] );

Здесь мы видим не только форматирование против всех правил, но и забытое объявление массива:

$statement->execute(array(':login' => $_POST['email']));

текст ошибки - твой друг, %username%