无法获取 $_POST 变量



它应该是图片的多重上传形式

我得到了上传表单的 HTML 代码:

<form action="upload.php" method="post" id="uploadform" name="uploadform" enctype="multipart/form-data">  
        <label id="filelabel" for="fileselect">Choose the Pictures</label>
        <input type="file" id="fileselect" class="fileuplaod" name="uploads[]" multiple />
        <span class="text">Exist Album</span><br />
        <select id="existAlbum" name="existAlbum" size="1">
            <option value="noAlbum">SELECT ALBUM</option>       
        </select>
        <span class="text">OR</span>
        <span class="text">New Album</span><br />
        <input id="newAlbum" name="newAlbum" type="text" maxlength="20" placeholder="ALBUM NAME"/>
        <input type="submit">
    </form> 
指向

上传.php的表单链接。但是我得到:

Notice: Undefined index: existAlbum in E:xampphtdocsfotokursuploadupload.php on line 11
Notice: Undefined index: newAlbum in E:xampphtdocsfotokursuploadupload.php on line 12

以下是上传.php:

<?PHP  
$allowedExtensions = array('png', 'jpg', 'jpeg'); 
$maxSize = 20971520;  
$i = 0;  
$first = 0;
$exist_album = $_POST['existAlbum']; 
$new_album = $_POST['newAlbum'];

我的错在哪里?我找不到它...

编辑在我的代码中添加以下内容:

if( isset( $_POST['existAlbum'] ) or isset( $_POST['newAlbum'] ) ){
    $exist_album = $_POST['existAlbum']; 
    $new_album = $_POST['newAlbum'];
}else{
    echo 'no album <br />';
}
print_r($_POST);

新输出:

no album 
Array ( ) 
Notice: Undefined variable: new_album in E:xampphtdocsfotokursuploadupload.php on line 20
Notice: Undefined variable: exist_album in E:xampphtdocsfotokursuploadupload.php on line 21
Notice: Undefined variable: new_album in E:xampphtdocsfotokursuploadupload.php on line 22
Notice: Undefined variable: exist_album in E:xampphtdocsfotokursuploadupload.php on line 23

您的问题之一是existAlbum没有与之关联的实际值。

您有<option>Select Album</option>,它没有与选项元素关联的值。 如果没有关联的值,则不会将 select 元素发布到服务器。 应将其更改为:

<option value="">Select Album</option>

编辑

由于用户只需要提供其中一个,因此您应该使用以下方法来设置变量:

$existsAlbum = (isset($_POST['existAlbum']) && !empty($_POST['existAlbum'])) ? $_POST['existAlbum'] : 'defaultValue';
$newAlbum = (isset($_POST['newAlbum']) && !empty($_POST['newAlbum'])) ? $_POST['newAlbum'] : 'defaultValue';

需要注意的重要一点是,Internet Explorer 不支持占位符属性。

编辑 2

这是我的快速测试页面,可以测试.php:

  <form action="upload.php" method="post" id="uploadform" name="uploadform" enctype="multipart/form-data">  
    <label id="filelabel" for="fileselect">Choose the Pictures</label>
    <input type="file" id="fileselect" class="fileuplaod" name="uploads[]" multiple />
    <span class="text">Exist Album</span><br />
    <select id="existAlbum" name="existAlbum" size="1">
      <option value="noAlbum">SELECT ALBUM</option>       
    </select>
    <span class="text">OR</span>
    <span class="text">New Album</span><br />
    <input id="newAlbum" name="newAlbum" type="text" maxlength="20" placeholder="ALBUM NAME"/>
    <input type="submit" value="Submit">
  </form> 

上传.php

    <pre>
<?php print_r($_POST); ?>
<?php print_r($_FILES); ?>
    </pre>

结果

Array
(
    [existAlbum] => noAlbum
    [newAlbum] => 
)
Array
(
    [uploads] => Array
        (
            //Contents here
        )
)
尝试设置值

existAlbum,因为如果您没有选择任何内容,它不会返回任何值。你可以给现有的专辑选择器一个默认值='1'或其他东西:

 if isset($_POST['existAlbum']){
        echo 'yes';
 }
 else{
      echo 'no';
 }

我认为规则enctype="multipart/form-data"有问题。尝试删除它,它应该由您的浏览器自动设置。

选项选择专辑没有值,即使您不打算使用该选项,也要给它一个值,例如 0,以便它始终在 POST 变量中设置。

<option value="0">SELECT ALBUM</option>
<option value="some album">Some Album</option>
...

如果未选择 select,您将根本不会得到它(您希望它是空的,但事实并非如此)。你必须先检查

$exist_album = isset($_POST['existAlbum']) ? $_POST['existAlbum'] : '<DEFAULT VALUE>';

复选框也是如此。

newAlbum的事情应该工作,因为文本输入始终存在。看

print_r($_POST);

看看里面到底有什么,就我而言 - 在"空"提交时,我得到:

Array
(
    [existAlbum] => SELECT ALBUM
    [newAlbum] => 
)

顺便说一句:你应该使用<?php而不是<?PHP

使用 print_r($_POST); 打印 $_POST 数组 确保您的表单操作正确

无误
<form action="upload.php" method="post" id="uploadform" name="uploadform" enctype="multipart/form-data">

相关内容

  • 没有找到相关文章

最新更新