GET表单未正确传递

时间:2016-01-16 14:25:54

标签: php get

我在商店网站上有一张表格。这个想法是,当你点击“添加到购物车按钮”时,它会发送参数(4个中的3个已知,是用户输入的最后一个)。这里的问题是发送的URL不正确。

以下是一个产品表单的示例:

<div class='product'>
    <article class="produto_box">
        <h3>Salsa</h3>
        <img src='https://gnomo.fe.up.pt/~ee10174/trabalhosSiem/trabalhoPHP2/images/ervas/salsa'.'.png'>
        <br>
        <span class="preco"><b>Preço: </b>1€</span>
            <form method="GET" action="https://gnomo.fe.up.pt/~ee10174/trabalhosSiem/trabalhoPHP2/actions/produtos/add_to_cart.php?preco=1&qtd=qtd&id=4&nome=Salsa>
                <input type="hidden" name="encomendar[4][preco]"  value="1" />
                Qtd (1-10): <input type="number" name="qtd" min="1" max="10"><br>
                <input type="submit" name="encomendar[4]" value="Adicionar ao Carrinho">
            </form>
    </article>
</div>

生成者:

{foreach $produtos as $produto}
    <div class='product'>
        <article class="produto_box">
            <h3>{$produto.nome}</h3>
            <img src='{$BASE_URL}/images/{$produto.tipo}/{$produto.ref}'.'.png'>
            <br>
            <span class="preco"><b>Preço: </b>{$produto.preco}€</span>
            {if $TIPO == 'cliente'}
                <form method="GET" action="{$BASE_URL}/actions/produtos/add_to_cart.php?preco={$produto.preco}&qtd=qtd&id={$produto.id}&nome={$produto.nome}>
                    <input type="hidden" name="encomendar[{$produto.id}][preco]"  value="{$produto.preco}" />
                    Qtd (1-10): <input type="number" name="qtd" min="1" max="10"><br>
                    <input type="submit" name="encomendar[{$produto.id}]" value="Adicionar ao Carrinho">
                </form>
            {/if}
        </article>
    </div>
{/foreach}

而不是所需的网址,我得到了这个传递:

(...)add_to_cart.php?qtd=3&encomendar%5B4%5D=Adicionar+ao+Carrinho

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:0)

您需要对URL进行编码,但如果您想接受任何输入,则应该使用POST而不是GET。使用GET会遇到很多编码问题。

答案 1 :(得分:0)

我不习惯使用smarty,所​​以你可能需要修改一下我的语法,但我认为这大概就是你所需要的:

{assign var="url" value="{$BASE_URL}/actions/produtos/add_to_cart.php?preco={$produto.preco}&qtd=qtd&id={$produto.id}&nome={$produto.nome}" }
<form method="GET" action="{$url|urlencode}">