数组没有发布到php

时间:2013-10-17 10:00:47

标签: php html post

HTML

<link rel="stylesheet" type="text/css" href="<?php echo CSS_URL ?>modal.css" /> 
   <form id="postinfo" action="" method="POST">
    <input type="hidden" name="technician" value="<?php echo $technician; ?>">
       <input type="hidden" name="custnum" value="<?php echo    htmlentities(serialize($customerNum)); ?>">
       <input type="hidden" name="meternum" value="<?php echo htmlentities(serialize($meterNumbers)); ?>">
       <input type="hidden" name="remcred" value="<?php echo htmlentities(serialize($remCreditArray)); ?>">
       <input type="hidden" name="visitdate" value="<?php echo htmlentities(serialize($dateArray)); ?>">
        <a href ="<?php echo PROCESS_URL; ?>create_maint_token_excel.php" onclick="document.getElementById('postinfo').submit();">
                <img src="<?php echo IMAGE_URL ?>Excel.png" name="Print Excel" title="Print Excel" alt="Print Excel" /></a>

   </form>

PHP

$customerNum = unserialize($_POST['custnum']);
$meterNumbers = unserialize($_POST['meternum']);
$remCreditArray = unserialize($_POST['remcred']);
$dateArray = unserialize($_POST['visitdate']);
$technician = ($_POST['technician']); 

我已尝试过将这些数组发布到php页面的多种方法,但该页面一直告诉我custnummeternumremcredvisitdate未定义。< / p>

我尝试过使用表单操作和帖子,我尝试使用一段javascript而且我一直遇到同样的问题,为什么不发布?

我也尝试在php页面上使用$_GET代替$_POST无效。

5 个答案:

答案 0 :(得分:2)

<a href ="<?php echo PROCESS_URL; ?>create_maint_token_excel.php" onclick="document.getElementById('postinfo').submit();">

这不起作用,提交将进入必杀技,你将被带到没有变量的PHP页面。您正在同时执行两个请求,您的浏览器将转到没有表单变量的请求。

尝试将表单更改为:

<form id="postinfo" action="<?php echo PROCESS_URL; ?>create_maint_token_excel.php" method="POST">

您的链接:

<a href ="#" onclick="document.getElementById('postinfo').submit();">

这应该正确提交表格而不关注链接。

或者使用propper <input type="submit" />按钮,您可以使用CSS将图像添加到其中。

答案 1 :(得分:0)

为什么不使用表单提交按钮,而不是使用javascript让生活抱怨?但首先..调试,检查隐藏输入中的实际内容。

最好将所有这些细节保存在名为maintenance的表中,并且只将记录ID传递给网页。用户可以篡改的信息少得多。

此外,您可以使用规则网络链接链接以使用网址中的变量加载下一页(阅读GET),除非用户需要表格的某些输入,我们这样做不看。

答案 2 :(得分:0)

你应该尝试,

<?php foreach ($customerNum as $item): ?>
    <input type="hidden" name="custnum[]" value="<?php echo $item; ?>"/>
<?php endforeach ?>

php中你可以得到,

$customerNum = $_POST['custnum'];

使用,

<a href ="javascript:void(0)" onclick="document.getElementById('postinfo').submit();">

答案 3 :(得分:0)

<input type="hidden" name="technician" value="<?php echo $technician; ?>">
   <input type="hidden" name="custnum" value="<?php echo    htmlentities(serialize($customerNum)); ?>">
   <input type="hidden" name="meternum" value="<?php echo htmlentities(serialize($meterNumbers)); ?>">
   <input type="hidden" name="remcred" value="<?php echo htmlentities(serialize($remCreditArray)); ?>">
   <input type="hidden" name="visitdate" value="<?php echo htmlentities(serialize($dateArray)); ?>">
    <a href ="<?php echo PROCESS_URL; ?>create_maint_token_excel.php" onclick="document.getElementById('postinfo').submit();">
            <img src="<?php echo IMAGE_URL ?>Excel.png" name="Print Excel" title="Print Excel" alt="Print Excel" /></a>

只需替换为inpuit类型提交,或者您可以使用类型图像并将动作网址添加到表单的动作标记,然后您将通过post方法获取值,如下所示exa

                                            

答案 4 :(得分:0)

这是一个简化的测试用例:

<form id="postinfo" action="" method="post">
    <input type="hidden" name="foo" value="1">
    <a href="http://www.google.es" onclick="document.getElementById('postinfo').submit();">Submit</a>
</form>

如果您点击“提交”,您会看到您的浏览器会在您的JavaScript代码有机会向href网址发出POST请求之前打开action网址。

你可能想要其中一个:

<!-- No action href -->
<a href="javascript:;" onclick="document.getElementById('postinfo').submit();">Submit</a>

<!-- Cancel click event -->
<a href="http://www.google.es" onclick="document.getElementById('postinfo').submit(); return false;">Submit</a>

<!-- No link at all -->
<div onclick="document.getElementById('postinfo').submit();">Submit</div>

附注:如果您使用PHP序列化,请注意object injection