новичок в php, поэтому прошу прощения, если решение очень простое. Я работаю над страницей сброса пароля, это будет страница, на которую пользователь попадет после щелчка по электронной почте с токеном. проблема в том, что форма не отправляет значение $ token, а просто отправляет строку.
<?php
if (isset($_GET["email"]) && isset($_GET["token"])) {
$connection = new mysqli("localhost", "USER", "PASSWORD", "USERDB");
$email = $connection->real_escape_string($_GET["email"]);
$token = $connection->real_escape_string($_GET["token"]);
$data = $connection->query("SELECT user_id FROM users WHERE user_email='$email' AND user_token='$token'");
if ($data->num_rows > 0) {
echo '<html>
<head>
<meta charset = "UTF-8">
<title>Change Password</title>
<link rel = "stylesheet" href = "../css/style.css" media = "screen" type = "text/css" />
</head>
<body>
<div class = "reset">
<h1>Password reset</h1>
<form action = "anotherpage.php" method = "POST">
<input type = "password" name = "pwd" placeholder = "Password">
<input type = "hidden" name = "token" value = "$token">
<input type = "submit" name = "submit" class = "submit" value = "Update">
</form>
</body>
</html>';
} else {
echo "Please check your link!";
}
} else {
header("Location: ../");
exit();
}
?>
а значение $_GET['token'] должно быть строкой?
Как выглядит ссылка, которую вы отправляете пользователю?
вам нужно использовать двойные кавычки






Просто совет ... не повторяйте htmltags ... Это не очень хорошая практика ... Вместо echo вы можете сделать это. А по поводу токена проблема будет решена вот так.
<?php
if (isset($_GET["email"]) && isset($_GET["token"])) {
$connection = new mysqli("localhost", "USER", "PASSWORD", "USERDB");
$email = $connection->real_escape_string($_GET["email"]);
$token = $connection->real_escape_string($_GET["token"]);
$data = $connection->query("SELECT user_id FROM users WHERE user_email='$email' AND user_token='$token'");
if ($data->num_rows > 0) {
?>
<html>
<head>
<meta charset = "UTF-8">
<title>Change Password</title>
<link rel = "stylesheet" href = "../css/style.css" media = "screen" type = "text/css" />
</head>
<body>
<div class = "reset">
<h1>Password reset</h1>
<form action = "anotherpage.php" method = "POST">
<input type = "password" name = "pwd" placeholder = "Password">
<input type = "hidden" name = "token" value = "<?php echo $token;?>">
<input type = "submit" name = "submit" class = "submit" value = "Update">
</form>
</body>
</html>
<?php
} else {
echo "Please check your link!";
}
} else {
header("Location: ../");
exit();
}
?>
Он отправляет строку $token, потому что PHP не будет анализировать переменные в одинарных кавычках ('). Вы должны использовать двойные кавычки ("), а затем избегать других двойных кавычек (используя \) или использовать одинарные кавычки в повторяющемся коде. Вы также можете использовать
<input type = "hidden" name = "token" value = "'.$token.'">
Хотя вышеуказанное будет работать, я рекомендую вам отправлять код формы без эха.
вы открыты для SQL-инъекций