使用magento安全网址进行操作时,表单提交无效

时间:2012-03-07 14:40:27

标签: php magento

我有一个来自提交运行一点点php以将数据导出到csv。 php看起来像:

$out = '';
if (isset($_POST['csv_hdr'])) {
$out .= $_POST['csv_hdr'];
$out .= "\n";
}

if (isset($_POST['csv_text'])) {
$out .= $_POST['csv_text'];
}

$filename = "z_".date("Y-n-d",time());
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-n-d") . ".csv");
header("Content-disposition: filename=".$filename.".csv");
print $out;
exit;

如果我执行php文件的正常路径,这可以正常工作,如:

<form name="export"  action="http://website.com/getcsv.php"  method="post"> 

我正在尝试将此php函数移动到控制器中并以此方式调用它。我正在研究magento管理模块,所以我必须使用安全密钥传递url。所以我将该函数移动到控制器中的一个动作中:

public function getcsvAction(){
    $out = '';
    ...
}

然后我可以通过以下方式获取网址:

<?php echo Mage::helper("adminhtml")->getUrl("module/index/getcsv/");?>

这给了我一个关键的链接,如:

http://website.com/module/index/getcsv/key/7431c859914c40d3f66dfcd1530813b3/

如果我将该链接粘贴到浏览器中,它会执行php罚款。但是,当我在表单操作中替换它时,它不再有效,只是重定向到仪表板。我看不出任何错误输出,我不确定发生了什么。关于如何使用安全路径作为操作来使这个POST工作的任何想法?

2 个答案:

答案 0 :(得分:3)

我发现它归功于this post

我需要将其添加到表单中:

<input type="hidden" name="form_key" value="<? echo $this->getFormKey(); ?>" /> 

答案 1 :(得分:1)

您的网址缺少adminhtml区域。试试这个:

Mage::helper("adminhtml")->getUrl("*/module/index/getcsv/");