Значение электронной почты не отображается методом POST

У меня есть эта форма, в которой есть только одно поле, т. Е. «Идентификатор электронной почты», поэтому мне нужно сделать так, чтобы при вводе идентификатора электронной почты идентификатор электронной почты должен быть разделен на две части, например: user name а также domain name и должен отображаться в следующей форме.
Так что моя проблема в том, что моя вторая форма не отображает результат, однако, когда я использовал $_SESSION метод вместо $_POST(для получения значения поля электронной почты) оно принимает значение, а также разделяет его, но принимает только одно значение, поскольку я хочу получить несколько идентификаторов электронной почты.
Для лучшего понимания, пожалуйста, проверьте мой код.

<?php
session_start();
?>
<!Doctype html>
<html>
<head>
<title>PHP3</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="http://netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<div class="jumbotron">
<div class="container">
<form class="form-horizontal" method="post" action="screen3_controller.php">
<div class="form-group">
<label class="control-label col-sm-2" for="email_text">Email:</label>
<div class="col-sm-10">
<input type="email" class="form-control"  name="email_text" id="email_text">
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<input type="submit" name="submit" id="submit_button" class="btn btn-default" value="Submit">
</div>
</div>
</form>
</div>
</div>
<table class="table table-striped table-responsive">
<thead>
<tr>
<th>Email Id</th>
</tr>
</thead>
<tbody>
<?php
if(isset($_SESSION['all_post']) && !empty($_SESSION['all_post']))
{
foreach($_SESSION['all_post'] as $key=>$value)
{
?>
<tr>
<td><?php echo $value['email_text']; ?></td>
</tr>
<?php
}
}
?>
</tbody>
</table>
<div class="container">
<table class="table table-bordered">
<thead>
<tr>
<th>User Name</th>
<th>Domain Name</th>
</tr>
</thead>
<tbody>
<?php
$str = $_POST['email_text'];
$hello = explode("@", $str);
$_SESSION ['emails'] = $hello;
echo "<tr>";
foreach ($_SESSION ['emails'] as $value)
{
echo "<td>$value</td>";
}
echo "</tr>";
?>
</tbody>
</table>
</div>
</body>
</html>

контроллер:

<?php
session_start();
$data = $_POST;
if (isset($data['submit'])) {
$_SESSION['all_post'][] =  $data;
}
header('Location:screen3_2.php'); exit();
?>

1

Решение

Как я вижу,
В своем коде вы публикуете данные формы на контроллере, а не на второй странице.
Хотя вы храните свои данные в $_SESSION на странице вашего контроллера, вот как вы можете получить доступ к данным со второй страницы.

Решение :
либо получить доступ к данным на второй странице, используя $_SESSION, или же
Отправьте свою первую страницу прямо на вторую страницу и получите доступ к данным, используя $_POST,

1

Другие решения

Когда следующий код выполняется, он делает НЕ отправьте POST-переменные вместе с ним.
Они потеряны в этот момент. Однако вы сохранили данные в сеансе.

header('Location:screen3_2.php'); exit();

Также обратите внимание, что следующий код:

$str = $_POST['email_text'];
$hello = explode("@", $str);
$_SESSION ['emails'] = $hello;

Будут храниться две части ровно одного письма. Вы упомянули, что хотите хранить несколько электронных писем, и этот код этого не сделает.

Мне кажется, что вы хотите вернуться к той же странице и повторно использовать форму при сборе адресов электронной почты. Пожалуйста подтвердите.

Попробуй это:

Не используйте отдельный файл контроллера. Возьми этот код и убери перенаправление. Поместите этот код в верхней части файла. Таким образом, вы собираете
все адреса электронной почты от $ _POST.

<?php
// Taken from 'controller'
session_start();
// Only process post if it exists
if ( ! empty($_POST) ) {
$data = $_POST;
if ( isset($data['submit']) ) {
$_SESSION['all_post'][] =  $data;
}
}
// No redirect
?>
<?php // put the form here ?>
<form class="form-horizontal" method="post" >
<input type="email" class="form-control"  name="email_text" id="email_text">
<input type="submit" name="submit" id="submit_button" class="btn btn-default" value="Submit">
</form>

<?php
// output all the email addresses collected
if(isset($_SESSION['all_post']) && !empty($_SESSION['all_post'])) {
foreach($_SESSION['all_post'] as $key=>$value) {
$parts = explode('@', $value['email_text']);
?>
<tr>
<td><?= $parts[0] ?></td> <?php // before @ ?>
<td><?= $parts[1] ?></td> <?php // after @ ?>
</tr>
<?php
}
}
?>
</form>
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector