【问题标题】:Problem with enctype='multipart/form-data'enctype='multipart/form-data' 的问题
【发布时间】:2011-06-15 15:33:00
【问题描述】:

我有下一个表格:

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'。真的是通过一种形式传递变量和文件吗?

【问题讨论】:

  • 这里有什么问题?
  • 请告诉我们您是如何尝试访问 php 脚本中的数据的。
  • 您的值没有用引号括起来。

标签: php html forms


【解决方案1】:

我认为你的主要问题是你的变量 $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>";

【讨论】:

    【解决方案2】:

    您的输入没有引号。如果这些值中的任何一个包含空格或 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 代码然后输出很浪费 CPU 资源。相反,只需退出 PHP 模式并将其直接输出为原始 html。

    2. 我已经通过 htmlspecialchars() 处理了 $send。这会“转义”任何可能被视为 HTML 标记的一部分而不是您传递的数据的一部分的特殊字符。

    【讨论】:

      猜你喜欢
      • 2011-02-12
      • 1970-01-01
      • 1970-01-01
      • 2022-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      相关资源
      最近更新 更多