为什么当我使用 enctype=“multipart/form-data” 时会得到未定义的索引

why am i getting undefined indexs when i use enctype="multipart/form-data"

提问人:Jeremy Sills 提问时间:7/13/2015 最后编辑:Scott ArciszewskiJeremy Sills 更新时间:7/15/2015 访问量:564

问:

为什么我的表单会收到未定义的索引,这是因为我使用的编码类型,如果是这样,我该怎么做才能解决这个问题以正确发布我的变量

<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 语句,如果未设置,则将其标题指向另一个页面。此表单代码来自第 2 页

我在第 3 页使用此代码来接收表单数据

$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 的某种组合。如果有人能帮助我,将不胜感激。

PHP 表单 编码 multipartform-data undefined-index

评论

0赞 shamon shamsudeen 7/13/2015
这个print_r的输出是多少($_POST)
0赞 Sean 7/13/2015
您是否有可能使用 JavaScript 提交表单?在你的选择中,有没有机会影响你的代码?onfocus="emptyElement('status')"
0赞 Jeremy Sills 7/13/2015
@Sean onfocus 函数不应该在那里删除它,但 uuniveristy 的值会通过它没有经过的“mysex”和“value”,我认为可能与回显值有关
0赞 Jeremy Sills 7/13/2015
@shammon输出什么都不是,我从第 1 页开始,我将值发布到 Page2 并获取这些值,添加一些新值并将它们发布回第 1 页,将 print_r($_POST) 在我返回第 1 页后没有显示任何内容
0赞 Scott Arciszewski 7/15/2015
某处可能存在错误。是否或显示任何有趣的东西?您运行的是哪个 Web 服务器(和版本)?哪个版本的 PHP?var_dump(file_get_contents('php://input'));var_dump($_POST);

答:

0赞 Dhinju Divakaran 7/13/2015 #1

未定义的变量大学意味着您没有选择任何选项来修复,您可以设置任何 ptions 和隐藏变量的问题是值不存在。固定代码在这里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> 

评论

1赞 Sean 7/13/2015
你愿意分享为什么OP应该吗?Try this code
0赞 Jeremy Sills 7/13/2015
@Dhinju Divakaran 如果发布了变量,则需要检查它们是否已设置,我知道 100% 它们会发布到带有表单的页面上
0赞 Jeremy Sills 7/13/2015
@Sean我不明白你的意思,你愿意分享为什么 OP 应该尝试这段代码吗?
0赞 Sean 7/13/2015
@JeremySills当这个答案第一次发布时,它只是和代码块,这是一个模糊的答案。请参阅 stackoverflow.com/posts/31375457/revisions 我试图鼓励发帖人分享为什么他们的代码块可以回答您的问题。Try this code
0赞 Jeremy Sills 7/14/2015
@Dhinju Divakaran 是的,我尝试了代码,它仍然不起作用
0赞 Sagar Patel 7/13/2015 #2

首先,我有两个选择

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"]; }?>">