我有下一个表格:
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'
。它真的通过一个表单传递变量和文件吗?
答案 0 :(得分:2)
我认为你的主要问题是你的变量$ 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 :(得分:1)
您的输入周围没有引号。如果这些值中的任何一个包含空格或html元字符,则表单将“中断”。
e.g。
$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) " />
有两点需要注意:
我不是在回声中这样做的。虽然echo可以输出多行文本块,但它太麻烦了,而且浪费CPU资源来将该字符串解析为PHP代码然后输出它。相反,只需退出PHP模式并将其直接输出为原始html。
我通过htmlspecialchars()处理了$ send。这可以“逃避”任何特殊字符,这些字符可能会被视为HTML标记的一部分,而不是您传递的数据的一部分。