Попытка опубликовать через кнопку

Я пробовал много решений, опубликованных в переполнении стека, и ни одно из них не сработало.

Это мог быть только я, но я попробовал это в отдельном файле, и это сработало, но если я использую свой текущий сайт с хорошим CSS, это не сработает.

Я попробовал точный код на ЛАЭХП, и он сработал, но когда я добавил свой код, как вы можете видеть ниже, он ничего не отображает при нажатии кнопки и даже не обновляет страницу при нажатии.

<form action = "" method = "post">
    <div class = "form-group">
        <label>Username</label>
        <input class = "au-input au-input--full" type = "email" name = "target" placeholder = "Example">
    </div>

    <div class = "form-group">
        <label>API key</label>
        <input class = "au-input au-input--full" type = "text" name = "key" placeholder = "X7UI-9H2D-IZAS">
    </div>

    <?php

        $key= $_POST['key'];
        $send= $_POST['send'];

        if ($send) {
            if (!empty($key)) {
                echo 'The key you entered is ' . $key;
            }
            else {
                echo 'You did not enter a key. Please enter a key into this form field.';
            }
        }
    ?>

    <button class = "subscribe btn btn-primary btn-block" name = "send" type = "submit">Check Key</button>
</form>

"это не сработает" нам ни о чем не говорит. Что конкретно не работает? Каким образом не работает? Что делает произошло? Каково поведение ожидал? Какую отладку вы сделали? Если вы получаете ошибки, каковы точные сообщения об ошибках?

Patrick Q 01.04.2019 16:30

Нет сообщений об ошибках. Файл журнала ошибок не создан. Код ``` $key= $_POST['key']; $send= $_POST['отправить']; if ($send){ if (!empty($key)) { echo 'Вы ввели ключ ' . $ключ; } else { echo 'Вы не ввели ключ. Пожалуйста, введите ключ в это поле формы.'; } } ?> ``` Работает Но не в моем случае.

Verplix 01.04.2019 16:31

Он просто ничего не возвращает, как нажатие бесполезной кнопки. Но код на этом сайте Learningaboutelectronics.com/Статьи/… работает. Я даже пробовал это на своем сервере, и я вообще не получаю ответа.

Verplix 01.04.2019 16:32

То есть вы нажимаете на кнопку, и буквально ничего не происходит? Страница даже не обновляется?

M. Eriksson 01.04.2019 16:35

Нет, страница не будет обновляться при нажатии кнопки.

Verplix 01.04.2019 16:37

Не могли бы вы обновить свой вопрос, чтобы он соответствовал форме, которая у вас есть? В своем вопросе вы разделили html на разные блоки кода. Кстати. у вас есть какой-нибудь javascript, который прослушивает событие отправки или нажатия кнопки?

M. Eriksson 01.04.2019 16:37

Если форма вообще не отправляется, проверьте консоль Javascript вашего браузера. Кроме того, вы говорите, что не видите ошибок, но вы определенно должны получать неопределенные ошибки индекса из-за того, что вы выполняете свой PHP как при начальной загрузке страницы, так и при отправке. Что-то здесь не складывается.

Patrick Q 01.04.2019 16:40

У меня на сайте нет js, только php и html. я обновил свой вопрос и блоки кода

Verplix 01.04.2019 16:42

Патрик, я так и думал. я редко сталкиваюсь с ошибками, и самая простая вещь меня застряла. Я повторю попытку и отпишусь

Verplix 01.04.2019 16:43

Я думаю, что он подчиняется, но делает это быстро. Проблема, насколько я понимаю, заключается в том, что вы проверяете, отправлена ​​ли кнопка и не является ли она «ложной». Поскольку у вас нет значения для кнопки, это будет пустая строка, которая заставит if ($send) оцениваться как «ложь». Попробуйте добавить value = "send" к кнопке или измените свой чек на: if (isset($_POST['send'])). Вы также не должны делать $key = $_POST['key'];, пока не проверите, существует ли ключ.

M. Eriksson 01.04.2019 16:43

Спасибо всем. Решение, которое сработало, было от Магнуса. Спасибо за помощь. Извините за мою формулировку

Verplix 01.04.2019 16:47
Стоит ли изучать 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
11
51
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Переменная $send представляет собой null, когда форма отправляется в браузер, и пустую строку ("""), когда браузер отправляет форму. В PHP при преобразовании в логическое значение (как в вашем выражении if ($send)) обе они оценивают значение false, и код внутри оператора if не запускается.

Быстрое исправление состояло бы в том, чтобы изменить его на:

if ($send !== null) // the `!==` is for preventing the type juggling that `!=` does

Однако лучший метод — использовать функцию isset(), которая проверяет, существует ли переменная или ключ в массиве, например:

if (isset($_POST['send']))

Если вы включите полную отчетность об ошибках, вы можете получить уведомления о том, что переменные $_POST['key'] и $_POST['send'] не существуют. С моей рекомендацией, которая использует isset(), вам больше не понадобится переменная $send, а другое уведомление исчезнет, ​​если присвоить значение переменной $key после того, как вы проверите, установлена ​​ли переменная $_POST['send'].

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

Проблема, которую я вижу, заключается в том, что вы проверяете, была ли кнопка отправлена ​​​​и не является ли она «ложной». Поскольку у кнопки нет value-атрибута, это будет пустая строка, которая является «ложным» значением, а это означает, что первое if-утверждение никогда не будет оценено как истинное.

Попробуйте изменить код на:

<?php
// isset() is better since it check if the key exists and isn't null.
if (isset($_POST['send'])) {
    // If you rather put the values in separate variables,
    // you should do it here, inside the if-statement (where we know we
    // got a POST request)

    if (!empty($_POST['key'])) {
        echo 'The key you entered is ' . $_POST['key'];
    }
    else {
        echo 'You did not enter a key. Please enter a key into this form field.';
    }
}
?>

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