Задать имя файла с помощью введенной пользователем переменной в 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 и т. д. В зависимости от ввода пользователя.

656   5  

5 ответов:

Замените "на", чтобы переменная подстановка работала

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 } ?>

Comments

    Ничего не найдено.