Моя PHP-форма ничего не возвращает из $_POST

У меня относительно простая форма PHP. Когда я использую print_r($_POST);, я ничего не получаю взамен. Только этот результат:

`Array
  (
  )
  1`

Моя форма довольно проста:

<form action = "" method = "post" enctype = "multipart/form-data" class = "zip-<?php echo $atts['class']; ?>">
        <div class = "row ">
            <div class = "<?php echo $column1; ?>" <?php echo $inlineStyle ?>>
                <div class = "lds-facebook hide"><div></div><div></div><div></div><div></div><div></div></div>
                <input type = "text" name = "zip" class = "zip">
            </div>
            <div class = "<?php echo $column2 ?>">
                <button type = "submit" class = "submit" name = "submit">
                  <?php echo $buttonValue; ?>
                  <i class='fa fa-caret-right' aria-hidden='true'></i>
                </button>
            </div>
        </div>
    </form>

Цель формы — просто опубликовать, а затем перенаправить на страницу в зависимости от значения, полученного на входе. Есть предположения?

public static function find_zip_widget( $atts, $content = null ) { 
    ini_set('display_errors', '1');

    extract(shortcode_atts(array(
    'class' => 'class'
), $atts));

    // Set classes for rows
    if ($atts['class'] == 'home'){
        $column1 = 'col-md-6 col-12 my-auto text-center border-underline';
        $column2 = 'col-md-6 col-12';
        $buttonValue = 'FIND HELP RIGHT NOW';
        $inlineStyle = '';
    }

    if ($atts['class'] == 'widget'){
        $column1 = 'col-md-5 col-5 offset-2 offset-md-0 my-auto';
        $column2 = 'col-md-7 col-5 my-auto';
        $buttonValue = 'SUBMIT';
        $inlineStyle = 'style = "border-bottom: 3px solid #9EA2A4 !important;min-height: 30px;"';
    }

    ?>
    <form action = "" method = "post" enctype = "multipart/form-data" class = "zip-<?php echo $atts['class']; ?>">
        <div class = "row ">
            <div class = "<?php echo $column1; ?>" <?php echo $inlineStyle ?>>
                <div class = "lds-facebook hide"><div></div><div></div><div></div><div></div><div></div></div>
                <input type = "text" name = "zip" class = "zip">
            </div>
            <div class = "<?php echo $column2 ?>">
                <button type = "submit" class = "submit" name = "submit">
                  <?php echo $buttonValue; ?>
                  <i class='fa fa-caret-right' aria-hidden='true'></i>
                </button>
            </div>
        </div>
    </form>

    <?php    
        echo "<pre>";
        echo "Before if: ";
        echo  print_r($_POST); 
        echo "</pre>";
    ?>

    <?php 
        $states = get_categories( array(
        'orderby' => 'name',
        'order'   => 'ASC',
        'hide_empty' => false,
        'taxonomy' => 'endeavors_location_state'
        ) );


        if (isset($_POST['submit'])) {
            $postalZip = $_POST["zip"];

            echo "<pre>";
            echo "After if: ";
            echo  print_r($_POST);
            echo "</pre>";

            echo '<br> <br> PostalZip: ' . $postalZip;

            ///REDIRECT FOR CITY, STATE, or other/////
            $ch = curl_init(); 
            curl_setopt($ch, CURLOPT_URL, "https://maps.googleapis.com/maps/api/geocode/json?address='.$postalZip.'&key=AIzaSyBX_0qZmGBtiHrZMcjZfv6yL7NAbLiwnjc");
            // curl_setopt($ch, CURLOPT_URL, "https://maps.googleapis.com/maps/api/geocode/json?address=78210&key=AIzaSyBX_0qZmGBtiHrZMcjZfv6yL7NAbLiwnjc");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            $output = curl_exec($ch);

            curl_close($ch);
            $jsonResults = json_decode($output, true);



            $cityName = $jsonResults['results'][0]['address_components'][1]['long_name'];
            $stateName = $jsonResults['results'][0]['address_components'][3]['long_name'];


            $cityName = strtolower(str_replace(" ","-",$cityName));
            $stateName = strtolower(str_replace(" ","-",$stateName));

            $args = array(
                'post_type' => 'endeavors_locations',
                'post_status' => 'publish',
              'numberposts' => -1
            );

            $cityFound = 0;
            $allCityLocations = get_posts( $args );
            foreach ($allCityLocations as $location) {
                $eachCity = strtolower(str_replace(" ","-",$location->post_name));
                echo $eachCity;

                if ($location->post_name === $cityName) {
                    $cityFound = 1;
                    echo $cityFound;
                }
            }

            if ($cityFound === 1) {
                wp_safe_redirect('/locations/'.$cityName);
                } else {
                foreach ($states as $state) {
                    if ($state->slug === $stateName) {
                         $stateFound = 1;
                    }
                }
                if ($stateFound === 1) {
                wp_safe_redirect('/state/'.$stateName);
                } else {
                    wp_safe_redirect('/all-locations/');
                }
            }
        }
    ///END OF REDIRECT FOR CITY, STATE, or other/////
    } //end function

Пожалуйста, добавьте соответствующие части скрипта PHP.

arkascha 07.04.2019 21:21

Я добавил всю функцию шорткода.

Lz430 07.04.2019 21:25

если можно, скопируйте html-код из инструментов разработчика, создайте новый php-файл и протестируйте его сам по себе, что может пролить свет

Talal 07.04.2019 21:51

Сделано-сделано.....до сих пор не вижу ничего нового.

Lz430 07.04.2019 22:45
Стоит ли изучать 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
4
67
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я только что запустил ваш скрипт (xampp, php 7.1.26, mac Mojave), и он печатает

Array ( [zip] => testvalue [submit] => )

Я добавил <?php print_r($_POST); ?> поверх тега (вы могли сделать то же самое), и для меня это сработало, как и ожидалось.

глупо, но неужели просто хотел узнать, отправили ли вы форму? если нет, он покажет пустой массив

я мог бы подумать, что переменная post как-то изменена. может использовать фреймворк или что-то в этом роде. я сделал именно то, что ты сделал, и я не имел в этом никакого смысла

Talal 07.04.2019 21:37

Спасибо вам обоим. Я на WPengine с php 7.2. Я не верю, что есть какие-то рамки. Я думаю, ради здравомыслия, нет ничего плохого в моей разметке формы или в чем-то еще, если вы, ребята, заставляете ее печатать, верно?

Lz430 07.04.2019 21:42

если честно, я заметил пометку, которая не имеет отношения к проблеме <i class='fa fa-caret-right' aria-hidden='true'></i> использовала одинарную кавычку: D

Talal 07.04.2019 21:47

Талал, возможно, это связано с wordpress. @Lz430 Lz430, вы можете попробовать следующие решения: 1. Измените входное имя с «zip» на что-то уникальное «yournamezip», просто чтобы проверить 2. измените действие <form action = "<?php the_permalink(); ?>" и посмотрите это помогает

cherankrish 07.04.2019 21:50

Хорошо, я сделал и то, и другое, и я все еще ничего не получаю. Я даже пробовал echo print_r($_POST['geoZip']); Для справки URL здесь: усилияdev1.wpengine.com/all-locations

Lz430 07.04.2019 22:06
Ответ принят как подходящий

Ваш скрипт отправляется на сервер просто отлично, но перед нажатием print_r($_POST) он перенаправляется в то же место. поэтому print_r($_POST) не был выполнен. Пожалуйста, обратитесь к изображению ниже для получения дополнительной информации. Есть два запроса, один пост с 302 редиректом. Я подозреваю, что может быть задействовано перенаправление javascript.

Итак, теперь я определенно вижу, как моя ценность отправляется. Так почему бы моему if (isset($_POST['submit_value'])) { не стрелять?

Lz430 07.04.2019 22:41

Это то, что вам нужно исследовать. Попробуйте добавить оператор die() после print_r($_POST), чтобы остановить дальнейшее выполнение php и рендеринг HTML, и сообщите нам, что вы получили :)

cherankrish 07.04.2019 22:48

Я добавил die(), и это, казалось, показало мне массив $_POST. Так что это хорошо. Похоже, он тоже попадает в if isset. Теперь у меня есть новая проблема, которую нужно решить. Всем спасибо!!!

Lz430 07.04.2019 23:04

@ Lz430 смотрит на часть isset($_POST['submit']), которую вы вызываете wp_safe_redirect, что означает, что $_POST будет пустым при перенаправлении.

Will B. 07.04.2019 23:18

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