Проблема с enctype = 'multipart / form-data' - PullRequest
0 голосов
/ 15 июня 2011

У меня есть следующая форма:

echo "<br><form action ='maketext.php' method='post' enctype='multipart/form-data'>
                <br>
                $table <br><br><br>
                <b>$subject</b> <br>
                Сообщение: <b>$message</b> <br>
                <input name='userfile[]' type='file' /><br />
                <input name='userfile[]' type='file' /><br />
                <input name='userfile[]' type='file' /><br />
                <input type ='submit' name ='Send' size = '10' value = 'Send'>
                <input type ='hidden' name ='subject' value=$subject>
                <input type ='hidden' name ='sms' value=$flagSms>
                <input type ='hidden' name ='email' value=$flagEmail>
                <input type ='hidden' name ='message' value=$message>
                </form>";

У меня нет проблем с файлами, но у меня проблема с кодировкой $subject и другими переменными. Я думаю, потому что enctype='multipart/form-data'. Это правда и переменные и файлы проходят через одну форму?

Ответы [ 2 ]

2 голосов
/ 15 июня 2011

Я думаю, что ваша основная проблема в том, что ваши переменные $ subject и т. Д. Не помещены в

' '

. Попробуйте это

echo "<br><form action ='maketext.php' method='post' enctype='multipart/form-data'>
                <br>
                $table <br><br><br>
                <b>$subject</b> <br>
                Сообщение: <b>$message</b> <br>
                <input name='userfile[]' type='file' /><br />
                <input name='userfile[]' type='file' /><br />
                <input name='userfile[]' type='file' /><br />
                <input type ='submit' name ='Send' size = '10' value = 'Send'>
                <input type ='hidden' name ='subject' value='$subject'>
                <input type ='hidden' name ='sms' value='$flagSms'>
                <input type ='hidden' name ='email' value='$flagEmail'>
                <input type ='hidden' name ='message' value='$message'>
                </form>";
1 голос
/ 15 июня 2011

У вас нет кавычек вокруг ваших входов. Если какое-либо из этих значений содержит пробелы или метасимволы html, ваша форма «сломается».

, например

$subject = "hi there";

будет производить

<input type='hidden' name='Subject' value=hi there />

Когда эта форма будет отправлена, вы получите Send=hi, и there не будет передано, так как рассматривается как неизвестный атрибут HTML во входном теге.

Вам нужно что-то вроде этого:

<?php ?>
<input type="hidden" name="Subject" value="<?php echo htmlspecialchars($send) " />

Две вещи на заметку:

  1. Я не делаю это в эхо. В то время как echo может выводить многострочные куски текста, это слишком болезненно, к тому же это пустая трата ресурсов процессора, чтобы проанализировать эту строку как код PHP и затем вывести ее. Вместо этого просто выйдите из режима PHP и выведите его непосредственно в виде необработанного HTML.

  2. Я обработал $ send через htmlspecialchars (). Это «экранирует» любые специальные символы, которые в противном случае могут рассматриваться как часть разметки HTML, а не как часть данных, которые вы передаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...