无法获取$ _POST变量

时间:2012-11-28 15:42:01

标签: php html multi-upload

它应该是图片的多重上传表格

我获取上传表单的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> 

表格链接到uploaded.php。但我得到了:

Notice: Undefined index: existAlbum in E:\xampp\htdocs\fotokurs\upload\upload.php on line 11

Notice: Undefined index: newAlbum in E:\xampp\htdocs\fotokurs\upload\upload.php on line 12

这是upload.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:\xampp\htdocs\fotokurs\upload\upload.php on line 20

Notice: Undefined variable: exist_album in E:\xampp\htdocs\fotokurs\upload\upload.php on line 21

Notice: Undefined variable: new_album in E:\xampp\htdocs\fotokurs\upload\upload.php on line 22

Notice: Undefined variable: exist_album in E:\xampp\htdocs\fotokurs\upload\upload.php on line 23

5 个答案:

答案 0 :(得分:2)

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

您有<option>Select Album</option>没有与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 does not support the placeholder attribute

编辑2

这是我的快速测试页面,它运行test.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> 

upload.php的

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

结果

Array
(
    [existAlbum] => noAlbum
    [newAlbum] => 
)
Array
(
    [uploads] => Array
        (
            //Contents here
        )
)

答案 1 :(得分:0)

如果未选择select,则根本不会得到它(您希望它为空,这不是真的)。你必须先检查

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

和复选框相同。

newAlbum事情应该有效,因为文本输入始终存在。参见

print_r($_POST);

看看那里真的是什么,在我的情况下是 - 在“空”提交我得到:

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

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

答案 2 :(得分:0)

尝试设置值existsAlbum,因为如果没有选择任何值,它将不会返回任何值。你可以给existsAlbum选择器一个默认值='1'或者其他东西:

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

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

答案 3 :(得分:0)

您没有选择选择相册的值,即使您不打算使用该选项给它一个值,例如0,这样它将始终在POST变量中设置。

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

答案 4 :(得分:0)

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

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