Я новичок в 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";
}
}
?>






У вас есть точка с запятой (;), отсутствующая в строке перед этим, в 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().
@RioAblas, в вашем коде есть другие проблемы. Пожалуйста, проверьте отредактированный ответ через пару минут.
аааа да, я только что заметил часть mysql. спасибо хе-хе
вау, это так глупо с моей стороны. Спасибо