За последние 24 часа нас посетили 18926 программистов и 1609 роботов. Сейчас ищут 1069 программистов ...

Работа с формами и отправкой в php

Тема в разделе "PHP для новичков", создана пользователем Алексагдр, 2 мар 2024.

  1. Алексагдр

    Алексагдр Гость

    С нами с:
    2 мар 2024
    Сообщения:
    1
    Симпатии:
    1
    PHP:
    1. <?php
    2. $name=$_POST["name"];
    3. if ($name=="5") {
    4.     echo "<p class='text-success'>Правильно</p>";
    5. }else{
    6.     echo "Неправильно ";
    7. }
    8. if ($name==""){
    9.     echo "(Строка пуста)";
    10. }
    11. ?>
    12.  
    13.  
    14. <!doctype html>
    15. <html lang="en">
    16. <head>
    17.     <meta charset="utf-8">
    18.     <meta name="viewport" content="width=device-width, initial-scale=1">
    19.     <title>Bootstrap demo</title>
    20.     <link href="[URL]https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css[/URL]" rel="stylesheet" integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous">
    21. </head>
    22. <body>
    23. <script src="[URL]https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/js/bootstrap.bundle.min.js[/URL]" integrity="sha384-HwwvtgBNo3bZJJLYd8oVXjrBZt8cqVSpeBNS5n7C8IVInixGAoxmnlMuBnhbgrkm" crossorigin="anonymous"></script>
    24. <div class="mt-3">
    25.     <form action="" method="post">
    26.         <label for="exampleFormControlTextarea1" class="form-label mb-3" name="name">Решите уравнение x-5=0</label>
    27.         <input type="text" class="form-control" name="name">
    28.         <input type="submit" class="btn btn-primary mt-3">
    29.     </form>
    30. </div>
    31.  
    32. </body>
    33. </html>

    когда захожу на страницу сразу же есть "неправильно" видимо при заходе на страницу он уже отравляет запрос, как это можно исправить

    От модератора: код через кнопку </>
     
    #1 Алексагдр, 2 мар 2024
    Последнее редактирование модератором: 2 мар 2024
    Vagners нравится это.
  2. Dremax

    Dremax Активный пользователь

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Чтобы форма не срабатывала по умолчанию,я всегда прописываю так:
    PHP:
    1. if($_POST["name"]) {
    2. // сюда включай обратку формы
    3.  
    4.                                      }
    Можно кнопке submit назначить имя name="enter",и прописать так:
    PHP:
    1. if($_POST["enter"]) {
    2. // сюда включай обратку формы
    3.  
    4.                                      }
     
    #2 Dremax, 3 мар 2024
    Последнее редактирование: 3 мар 2024
    Vagners нравится это.
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.835
    Симпатии:
    651
    @Dremax, без обид, но вам пока рано отвечать на вопросы.
    --- Добавлено ---
    @Алексагдр, по методу запроса делайте ветвление:
    PHP:
    1. if ($_SERVER['REQUEST_METHOD']=='POST')
    2. {
    3.   // POST-обработка
    4.   exit; // или else ниже
    5. }
    Или на крайняк по наличию POST-параметра, который обязательно должен существовать (а иначе запрос не следует обрабатывать, как POST-):
    PHP:
    1. if (isset($_POST['param'])
    2. {
    3.   // POST-обработка
    4.   exit; // или else ниже
    5. }
     
    Serg197211 и Vagners нравится это.
  4. Dremax

    Dremax Активный пользователь

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Без обид,но я программирую с 9 класса,с 1993 года
    Заглядывай https://кибершахматы.рф

    if ($_SERVER['REQUEST_METHOD']=='POST') такую шизофрению я никогда не использую
     
  5. Vladimir Kheifets

    Vladimir Kheifets Новичок

    С нами с:
    23 сен 2023
    Сообщения:
    425
    Симпатии:
    79
    Адрес:
    Бавария, Германия
    Добрый день, Алексагдр!

    По сути, прав @miketomlin.
    Cравните на PHP v. 8.*
    PHP:
    1. <?
    2. if($_POST["name"]) { // так  Warning: Undefined array key "name" in ... on line 2
    3. // сюда включай обратку формы
    4. }
    5.  
    6. if (isset($_POST['param']) // Так чисто
    7. {
    8.   // POST-обработка
    9.   exit; // или else ниже
    10. }
    11. ?>
    Удачи!
     
  6. don.bidon

    don.bidon Активный пользователь

    С нами с:
    28 мар 2021
    Сообщения:
    914
    Симпатии:
    143
    Вы не программируете, скорее употребляете тяжёлые в-ва, без обид (
     
  7. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.835
    Симпатии:
    651
    Это основной способ роутинга по методу запроса. А для тех, кто не ищет легких путей, я показал доп. способ, близкий вашему (только там одной закрывающей круглой скобки не хватает). Выше показали, в чем ошибка вашего способа. Не верите нам, загляните в руководство и найдите в нем т.н. таблицу сравнения типов, про которую рассказывают даже новичкам, программирующим на PHP несколько дней. И не упустите из виду замечание про if ($x) на той же странице мана.
     
    #7 miketomlin, 4 мар 2024
    Последнее редактирование: 4 мар 2024
  8. Dremax

    Dremax Активный пользователь

    С нами с:
    13 фев 2015
    Сообщения:
    154
    Симпатии:
    4
    Сигареты и чай - не тяжелые вещества,миллионы людей курят и это не запрещено законом
    В каждой семье пьют чай,я горжусь,что не пью водку и пиво,а именно чай...В чате Чатовода я люблю повторять что алкаши лохи,но там в чате все пьют водку,и не замечают меня и мою шахматную программу
    --- Добавлено ---
    У меня на PHP 5.2 прекрасно работает функция if($_POST['name']) { }

    Примерно до 40 раз это прописано во всей программе
     
  9. Дюран

    Дюран Активный пользователь

    С нами с:
    9 мар 2018
    Сообщения:
    285
    Симпатии:
    21
    Это не функция ;)
    У вас просто отключен вывод ошибок, занижен его уровень, php прощает такое. Этот грязный код warning дает.
     
    Serg197211 нравится это.