Невозможно отобразить html <form> с помощью $ var с помощью POST

новичок в 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();
    }

 ?>

вы открыты для SQL-инъекций

treyBake 02.07.2018 17:20

а значение $_GET['token'] должно быть строкой?

treyBake 02.07.2018 17:20

Как выглядит ссылка, которую вы отправляете пользователю?

Jason K 02.07.2018 17:23

вам нужно использовать двойные кавычки

HamzaNig 02.07.2018 17:33
Стоит ли изучать 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 и хотите разрабатывать...
1
4
159
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Просто совет ... не повторяйте 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.'">

Хотя вышеуказанное будет работать, я рекомендую вам отправлять код формы без эха.

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