Неожиданная переменная T в PHP

Я новичок в PHP, и мне нужна небольшая помощь. Я почти уверен, что это, вероятно, одна из самых распространенных проблем, и ее легко исправить, но я пытался. и я буду так глуп

Хорошо, вот моя проблема: каждый раз, когда я иду на свой локальный хост, чтобы попытаться открыть свой сайт PHP, этого не произойдет, потому что я каждый раз получаю эту ошибку.

"Parse error: syntax error, unexpected '$db' (T_VARIABLE) in C:\xampp\htdocs\exam\register.php on line 4"

вот мой PHP-код.

    <?php
    session_start()

    $db = mysqli_connect("localhost", "root", "", "authentication");

    if (isset($_POST['register_btn'])) {
        session_start();
        $username = mysql_real_escape_string($_POST['username']);
        $emailaddress = mysql_real_escape_string($_POST['emailaddress']);
        $password = mysql_real_escape_string($_POST['password']);
        $password2 = mysql_real_escape_string($_POST['password2']);

        if ($password == $password2) {
            $password = md5($password);
            $sql = "INSERT INTO users(username, email, password) VALUES ('$username', '$emailaddress', '$password')";
            mysql_query($db, $sql);
            $_SESSION['message'] = "You are now registered!";
            $_SESSION['username'] = $username;
            header("location: home.php");
        }else {
            $_SESSION['message'] = "The two passwords do not match";
        }   
    }
?>
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
378
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

У вас есть точка с запятой (;), отсутствующая в строке перед этим, в session_start(). Поэтому парсер не может распознать переменную $db в следующей строке.

session_start(); // <-- this semicolon is needed

$db = mysqli_connect("localhost", "root", "", "authentication");

But there are other problems in your code as well. You are mixing between mysql_ и расширения mysqli_. Для подключения к базе данных вы используете mysqli_connect; в то время как для экранирования строк вы используете mysql_real_escape_string и mysql_query. Так не пойдет.

В первую очередь,, пожалуйста, избавьтесь от расширения mysql_ *. Он устарел в PHP 5 и полностью удален в PHP 7.

Теперь ваш код открыт для атак, связанных с SQL-инъекция. Пожалуйста, научитесь использовать вместо этого Подготовленные заявления. Вы можете использовать mysqli или PDO для того же самого.

Во-вторых,, пожалуйста, не используйте md5 для шифрования ваших паролей. Он старый и вызывает проблемы. Используйте стандартные функции PHP password_hash() и password_verify(). Читать: Безопасный хэш и соль для паролей PHP

В-третьих, вы дважды звонили в session_start(). Избавьтесь от второго вызова функции session_start().

вау, это так глупо с моей стороны. Спасибо

Rio Ablas 07.10.2018 13:34

@RioAblas, в вашем коде есть другие проблемы. Пожалуйста, проверьте отредактированный ответ через пару минут.

Madhur Bhaiya 07.10.2018 13:35

аааа да, я только что заметил часть mysql. спасибо хе-хе

Rio Ablas 07.10.2018 13:38

Другие вопросы по теме