【问题标题】:why am i getting undefined indexs when i use enctype="multipart/form-data"为什么我在使用 enctype="multipart/form-data" 时会得到未定义的索引
【发布时间】:2015-10-01 05:53:40
【问题描述】:

为什么我的表单中出现未定义的索引是因为我使用的编码类型,如果是这样,我可以做些什么来解决这个问题以正确发布我的变量

<form enctype="multipart/form-data" name="pmForm" id="pmForm" method="post"                action="personalspage.php"><br>
<b>Age</b> <input type="text" name="age" id="age" cols="4"><br><br>
<b>University</b> <select name="university" id="university" onfocus="emptyElement('status')">
                    <option disabled selected>select one...</option>
                    <option value="Algoma">Algoma University</option>
                    <option value="york">York University</option>
                 </select><br><br>
<b>Headline</b> <input type="text" name="headline" id="headline"><br><br>
<b>Message</b> <textarea name="message" id="message" rows="6" cols="50"></textarea><br><br>
<b>Add a picture</b> <input type="file" name="photo" id="photo" accept="image/*"><br><br>
<input type="hidden" name="mysex" id="mysex" value="<?php echo $_POST["mysex"]; ?>">
<input type="hidden" name="lookingfor" id="lookingfor" value="<?php echo $_POST["lookingfor"]; ?>">
<center><input type="submit" name="adSubmit" id="adSubmit" value="Post It"></center>
</form>   

我知道从说 page1 发布到此表单的变量正在通过,因为我有一个带有 isset() 变量的 if 语句,如果没有设置,则使其标题到另一个页面。此表单代码来自 page2

我在 page3 上使用此代码接收表单数据

$mysex = $_POST['mysex'];
$lookingfor = $_POST['lookingfor'];
$uni = $_POST['university'];

所以当我将所有变量从这个表单发布到另一个页面时,我得到了

Notice: Undefined index: mysex in C:\xampp\htdocs\Website\personalspage.php on line 4

Notice: Undefined index: lookingfor in C:\xampp\htdocs\Website\personalspage.php on line 5

Notice: Undefined index: university in C:\xampp\htdocs\Website\personalspage.php on line 6

我仔细检查并确保我所有的方法都在使用 post,我唯一能想到的为什么这不起作用是因为回显输入值和 enctype 的某种组合。如果有人可以帮助我,将不胜感激。

【问题讨论】:

  • 这个 print_r($_POST) 的输出是什么
  • 您是否有可能使用 javascript 提交表单?您的选择中有onfocus="emptyElement('status')",是否有可能影响您的代码?
  • @Sean onfocus 函数不应该在那里删除它,uuniveristy 的价值通过它的“mysex”和“价值”,我认为这可能与呼应价值
  • @shammon 输出什么都不是我所做的是从 page1 我将值发布到 page2 并获取这些值添加一些新值并将它们发布回 page1 之后 print_r($_POST) 没有显示任何内容我回到page1
  • 某处可能存在错误。 var_dump(file_get_contents('php://input'));var_dump($_POST); 有什么有趣的表现吗?您正在运行什么网络服务器(和版本)?哪个版本的 PHP?

标签: php forms encoding multipartform-data undefined-index


【解决方案1】:

我有两个选择
第一:

error_reporting(0);

第二:

<input type="hidden" name="mysex" id="mysex" 
value="<?php if(isset($_POST["mysex"])){ echo $_POST["mysex"]; }?>">
<input type="hidden" name="lookingfor" id="lookingfor" 
value="<?php if(isset($_POST["lookingfor"])){ echo $_POST["lookingfor"]; }?>">

【讨论】:

    【解决方案2】:

    未定义的变量大学意味着您没有选择任何选项来修复,您可以将任何选项设置为selected,对于隐藏变量的问题是值不存在。固定代码在这里

    <form enctype="multipart/form-data" name="pmForm" id="pmForm" method="post"                action="personalspage.php"><br>
    <b>Age</b> <input type="text" name="age" id="age" cols="4"><br><br>
    <b>University</b> <select name="university" id="university" onfocus="emptyElement('status')">
                        <option disabled selected value="" selected>select one...</option>
                        <option value="Algoma">Algoma University</option>
                        <option value="york">York University</option>
                     </select><br><br>
    <b>Headline</b> <input type="text" name="headline" id="headline"><br><br>
    <b>Message</b> <textarea name="message" id="message" rows="6" cols="50"></textarea><br><br>
    <b>Add a picture</b> <input type="file" name="photo" id="photo" accept="image/*"><br><br>
    <input type="hidden" name="mysex" id="mysex" value="<?php if(isset($_POST["mysex"])) echo $_POST["mysex"];else echo ""; ?>">
    <input type="hidden" name="lookingfor" id="lookingfor" value="<?php if(isset($_POST["lookingfor"]))echo $_POST["lookingfor"];else echo ""; ?>">
    <center><input type="submit" name="adSubmit" id="adSubmit" value="Post It"></center>
    </form> 
    

    【讨论】:

    • 你愿意分享为什么 OP 应该Try this code
    • @Dhinju Divakaran 如果发布变量需要检查它们是否已设置,我知道 100% 将它们发布到带有表单的页面
    • @Sean 我不明白你的意思是什么你愿意分享为什么 OP 应该试试这个代码?
    • @JeremySills 首次发布此答案时,它只是Try this code 和代码块,这是一个模糊的答案。请参阅stackoverflow.com/posts/31375457/revisions 我试图鼓励发布者分享为什么他们的代码块是您问题的答案。
    • @Dhinju Divakaran 是的,我尝试了它仍然无法正常工作的代码
    猜你喜欢
    • 2014-01-14
    • 2018-04-07
    • 2010-11-05
    • 2022-06-25
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多