Переменные внутри строк возвращают 1

Я делал тестовую страницу, на которой у меня есть форма с методом post и страницей назначения. Основная цель состояла в том, чтобы вывести отправленные значения в файл с именем UserInfo.txt,

Это сработало, но когда я посмотрел в файл, все переменные, которые я поместил в строку, которая была выведена в файл, были 1s.

Мой код:

$fname = $_POST['fname'];
$lname = $_POST['lname'];
$age = $_POST['age'];
$email = $_POST['email'];
$emailb = $_POST['emailb'];

$UserInfo = <<<EOT
[NAME] = $fname, $lname
[AGE] = $age
[EMAIL] = $email
EOT;
file_put_contents("UserInfo.txt", $UserInfo, FILE_APPEND);

Вывод файла был:

[NAME] = 1, 1
[AGE] = 1
[EMAIL] = 1

HTML-форма:

<form action="7_dest.php" method="POST">
<p>First name:<input type="text" name="fname" step=0> </p>
<p>Last name:<input type="text" name="lname" step=0> </p>
<p>Age:<input type="number" name="age"> </p>
<p>E-mail:<input type="email" name="email" step=0> </p>
<p>Confirm E-mail:<input type="email" name="emailb" step=0> </p>
<p><input type="submit"> </p>
</form>

2

Решение

Я нашел виновника после некоторых исследований и простого тестирования.
Между битом назначения переменной и синтаксисом heredoc была if заявление.
поскольку if заявления используют область видимости локальной переменной и значения были назначены в область видимости глобальной переменной переменные НЕ были назначены внутри if заявление.
В результате переменные не были назначены и поэтому не могли быть использованы.
Я исправил это, скопировав назначающий бит и вставив его в if statement,

Вот как выглядит код сейчас:

<?php
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$age = $_POST['age'];
$email = $_POST['email'];
$emailb = $_POST['emailb'];
if (){ //I had a lot of tests here, removed them for the sake of a nice page
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$age = $_POST['age'];
$email = $_POST['email'];
$emailb = $_POST['emailb'];
$UserInfo = <<<EOT
[NAME] = $fname, $lname
[AGE] = $age
[EMAIL] = $email
EOT;
file_put_contents("UserInfo.txt", $UserInfo, FILE_APPEND);
} else {
echo "Something went wrong";
} ?>
0

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

Других решений пока нет …

По вопросам рекламы [email protected]