У меня относительно простая форма 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
Я добавил всю функцию шорткода.
если можно, скопируйте html-код из инструментов разработчика, создайте новый php-файл и протестируйте его сам по себе, что может пролить свет
Сделано-сделано.....до сих пор не вижу ничего нового.






Я только что запустил ваш скрипт (xampp, php 7.1.26, mac Mojave), и он печатает
Array ( [zip] => testvalue [submit] => )
Я добавил <?php print_r($_POST); ?> поверх тега (вы могли сделать то же самое), и для меня это сработало, как и ожидалось.
глупо, но неужели просто хотел узнать, отправили ли вы форму? если нет, он покажет пустой массив
я мог бы подумать, что переменная post как-то изменена. может использовать фреймворк или что-то в этом роде. я сделал именно то, что ты сделал, и я не имел в этом никакого смысла
Спасибо вам обоим. Я на WPengine с php 7.2. Я не верю, что есть какие-то рамки. Я думаю, ради здравомыслия, нет ничего плохого в моей разметке формы или в чем-то еще, если вы, ребята, заставляете ее печатать, верно?
если честно, я заметил пометку, которая не имеет отношения к проблеме <i class='fa fa-caret-right' aria-hidden='true'></i> использовала одинарную кавычку: D
Талал, возможно, это связано с wordpress. @Lz430 Lz430, вы можете попробовать следующие решения: 1. Измените входное имя с «zip» на что-то уникальное «yournamezip», просто чтобы проверить 2. измените действие <form action = "<?php the_permalink(); ?>" и посмотрите это помогает
Хорошо, я сделал и то, и другое, и я все еще ничего не получаю. Я даже пробовал echo print_r($_POST['geoZip']); Для справки URL здесь: усилияdev1.wpengine.com/all-locations
Ваш скрипт отправляется на сервер просто отлично, но перед нажатием print_r($_POST) он перенаправляется в то же место. поэтому print_r($_POST) не был выполнен. Пожалуйста, обратитесь к изображению ниже для получения дополнительной информации. Есть два запроса, один пост с 302 редиректом. Я подозреваю, что может быть задействовано перенаправление javascript.
Итак, теперь я определенно вижу, как моя ценность отправляется. Так почему бы моему if (isset($_POST['submit_value'])) { не стрелять?
Это то, что вам нужно исследовать. Попробуйте добавить оператор die() после print_r($_POST), чтобы остановить дальнейшее выполнение php и рендеринг HTML, и сообщите нам, что вы получили :)
Я добавил die(), и это, казалось, показало мне массив $_POST. Так что это хорошо. Похоже, он тоже попадает в if isset. Теперь у меня есть новая проблема, которую нужно решить. Всем спасибо!!!
@ Lz430 смотрит на часть isset($_POST['submit']), которую вы вызываете wp_safe_redirect, что означает, что $_POST будет пустым при перенаправлении.
Пожалуйста, добавьте соответствующие части скрипта PHP.