Установить имя файла с помощью введенной пользователем переменной в PHP

Мне просто интересно, как я могу использовать имя переменной для установки имени файла в PHP? Когда я запускаю следующий код:

<?php if ($_POST) { $filename = $_POST['firstName']; header("Content-Type: application/txt"); header('Content-Disposition: attachment; filename="$filename.txt"'); echo "Welcome, "; echo $_POST['firstName']. " " . $_POST['lastName']; exit; } else { ?> <form action="" method="post"> First Name: <input type="text" name="firstName" /><br /> Last Name: <input type="text" name="lastName" /><br /> <input type="submit" name="submit" value="Submit me!" /> </form> <?php } ?> 

Имя файла всегда равно « $filename.txt », но я бы хотел, чтобы это был Adam.txt или Brian.txt т. Д. В зависимости от ввода пользователя.

Related of "Установить имя файла с помощью введенной пользователем переменной в PHP"

Замените '' на "" так переменные работы замещения

 header("Content-Disposition: attachment; filename=\"$filename.txt\""); 

или если вы хотите использовать ''

 header('Content-Disposition: attachment; filename="'.$filename.'.txt"'); 

Только двойные кавычки позволяют вам интерполировать переменные:

 $a = "some text" $b = "another part of $a" //works, results in *another part of some text* $b = 'another part of $a' //will not work, result *in another part of $a* 

См. http://php.net/manual/en/language.types.string.php#language.types.string.parsing для получения дополнительной информации.

Это связано с тем, что вы используете одинарные кавычки для своих строк, а строки в одинарных кавычках не обрабатываются – см. Документацию .

Чтобы исправить это, вы можете сделать следующее:

 header('Content-Disposition: attachment; filename="'.$filename.'.txt"'); 

Использовать это:

 header('Content-Disposition: attachment; filename="'.$filename.'.txt"'); 
  <?php if ($_POST) { $filename = isset($_POST['firstName'])? $_POST['firstName'] :'general'; header("Content-Type: application/txt"); header('Content-Disposition: attachment; filename='.$filename.'.txt'); echo "Welcome, "; echo $_POST['firstName']. " " . $_POST['lastName']; exit; } else { ?> <form action="" method="post"> First Name: <input type="text" name="firstName" /><br /> Last Name: <input type="text" name="lastName" /><br /> <input type="submit" name="submit" value="Submit me!" /> </form> <?php } ?>