Почему в письме отправленной формы указано другое значение cookie?

Здравствуйте,
Есть сайт, отслеживаем посетителей.
Делаем coockie "chel_code".
<?php
// шапка сайта

$today = time();
$rand = rand(0, 1000);
$chel_code = 'id_'.$rand.'-'.$today;

//создание временной cookie
if(!$_COOKIE["chel_code"]){
	setcookie("chel_code", $chel_code, time()+3600);
}
?>


Дальше на странице "контакты" есть форма.
В форме - поле "chel_code".
Подставляется значение сгенерированной куки "chel_code".
<?php
// форма на стр. 

$to = 'email@gmail.com';
$dayMail = strftime("%d.%m.%Y %H:%M:%S %p");

$subject = 'site.ru: '.$dayMail.' Заполнена форма';
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'To: user <email@gmail.com>' . "\r\n";

if(
	(isset($_POST['form_ok'])) 
	&& (!empty($_POST['form_name'])) 
	&& (!empty($_POST['form_email'])) 
	&& (!empty($_POST['form_phone']))
){


$form_surname = (String) trim(strip_tags($_POST['form_surname']));

$form_name = (String) trim(strip_tags($_POST['form_name']));

$form_email = (String) trim(strip_tags($_POST['form_email']));

$form_phone = (String) trim(strip_tags($_POST['form_phone']));




$message = '
<html>
<head>
  <title>Заполнена форма </title>
</head>
<body>
  <p>на странице <a href="https://site.ru/contacts.php" target="_blank">site.ru/contacts.php</a></p> 
  <table style="width: 100%;">
    <tr>
      <td><b>chel_code</b>: </td>
      <td>'.$chel_code.'</td>
    </tr>
    <tr style="background-color: #f8f8f8;">
      <td><b>Время</b>: </td>
      <td>'.$dayMail.'</td>
    </tr>
    <tr>
      <td><b>ФИО</b>: </td>
      <td>'.$form_name.' '.$form_surname.'</td>
    </tr>
    <tr style="background-color: #f8f8f8;">
      <td><b>E-mail</b>: </td>
      <td><a href="mailto:'.$form_email.'" title="написать">'.$form_email.'</a></td>
    </tr>
  </table>
</body>
</html>
';

mail($to, $subject, $message, $headers);
?>



			<!-- форма -->
			<div class="form_container">
				<div class="form_container__wrapper">
					<h2 class="form_container__title">Введите данные </h2>
					<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST" class="form form_container__forma">
						
						<div class="form__inp-container">
							<input name="chel_code" id="chel_code" type="text" class="forma__input" title="chel_code" required value="<?php echo $_COOKIE["chel_code"];?>">
						</div>

						<!-- rc -->
						<!-- проверка google recaptcha 3 -->
						<div class="forma__inp_hidden-container">
							<input name="g-recaptcha-response" id="g-recaptcha-response" type="hidden" class="forma__input forma__input_hidden" title="g-recaptcha-response">
						</div>
						<!-- rc -->
						<div class="form__inp-container">
							<input name="form_name" id="name" type="text" class="forma__input" title="имя" tabindex="1" autofocus="autofocus" required placeholder="Имя:">
						</div>
						<div class="form__inp-container">
							<input name="form_surname" id="surname" type="text" class="forma__input" title="фамилия" tabindex="2" required placeholder="Фамилия:">
						</div>

						
						<div class="form__inp-container">
							<input name="form_email" id="email" type="text" class="forma__input" tabindex="3" required placeholder="Электронная почта: ">
						</div>

						
						<div class="form__inp-container">
							<input name="form_phone" id="phone" type="text" class="forma__input" tabindex="4" required placeholder="Номер телефона: ">
						</div>

						
						<div class="form__inp-container">
							<input name="form_ok" type="submit" value="ok " id="form_ok" class="forma__submit">
						</div>

					</form>
				</div>
			</div>


Проверяю с помощью инспектора (chrome dev tools, инструменты разработчика mozilla) - значение куки в инспекторе и в форме совпадают.

Отправляю форму.

Но, когда получаю письмо с информацией о отправленной форме, там указано совсем другое значение куки.
Пожалуйста, помогите разобраться, почему так происходит?
  • Вопрос задан
  • 50 просмотров
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
Сергей Булгаков, Это все по тому что вы пропускаете часть работы, которая выполняется, и описываете только то что по вашему мнению происходит. А код делает не то что вы подразумеваете. а то что реально пишете.

Ну грубо говоря, захожу на сайт, мне генерируется кука. Например, ее значение такое id_407-1640605007.
Проверяю в инспекторе (chrome dev tools, инструменты разработчика мозилла). Там, (мозилла - инструменты разработчика - "хранилище" - просмотр всех кук), показывается такая же кука.
Заполняю форму.
Отправляю.

До сих пор все правильно, а далее пропущен момент где в заголовке у вас по новой генерируется кука, и из нее берется новое сгенерированное значение для письма, а значение которое вы отправляли через POST такое "Ну да, ну да, пошло я на**й...".

Смотрю почту.
Приходит письмо. Мои данные все такие, как в форме при заполнении.
Значение куки - совсем другое. Совсем.
Что логично, вы же ее не из формы взяли...

Не понимаю почему так.
По тому что важно проверять значения перед отправкой. Для этого и есть var_dump();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы