【问题标题】:Two image buttons or two submits两个图像按钮或两个提交
【发布时间】:2011-06-12 00:28:20
【问题描述】:

我是一名 .NET 开发人员,几乎放弃了使用 PHP 的个人项目。

我想要以下 PHP 页面:

具有两个随机图像(由代码标识)的表单,用户在其中进行选择,然后刷新表单,注意选择。很简单。

我已经完成了随机图像部分(将 URL 存储在表格中。我计划在将来更改它,但现在这不是问题),所以我必须进行“选择”部分。我想让这两个图像都可以点击,或者在它们下方放置两个按钮,并使用相同的文本。

在 PHP 中,我无法理解这种“提交”的工作方式,主要是因为我太习惯于 ASP.NET。

我尝试过使用两个普通的提交按钮,但我不希望它们都有不同的文本,但是用于区分两个按钮的相同属性也用于编写按钮的文本:值。更不用说整个 PHP_SELF 以及在页面加载开始时检查值似乎太 hacky。

然后我考虑过制作两个表单,每个表单都有一个通过查询字符串发送代码的操作,但我不希望那样。我不希望(普通)用户只需输入 URL 就可以执行操作。

记住:因为我在刷新页面时丢失了变量值,所以我必须一起发送所选图像的代码(而不是通过查询字符串)。

这种冲突让我考虑放弃这个项目。当我自己学习 ASP.NET 时,这非常简单、直观,而且我很快就明白了。

【问题讨论】:

    标签: php image forms button submit


    【解决方案1】:

    给提交按钮两个不同的名字怎么样:

    <input type="submit" name="submit1" value="submit" />
    <input type="submit" name="submit2" value="submit" />
    

    然后你可以用 php 做以下检查:

    if (isset($_REQUEST['submit1']) && $_REQUEST['submit1'] == "submit") {
        //its image 1
    } else if (isset($_REQUEST['submit2']) && $_REQUEST['submit2'] == "submit") {
        //its image 2
    }
    

    顺便说一句,您不必使用 $_REQUEST 数组,您可以根据您的表单操作使用 $_GET 或 $_POST。我不确定你使用的是哪一个,所以我在这里放了 $_REQUEST,它涵盖了两者。

    【讨论】:

    • 好的,我会尝试的,但不要忘记我必须发送图像代码.. 我如何动态构建每个提交以便发送代码至少稍微隐藏方式(阅读:不是查询字符串)?
    • 通过 POST 提交表单将确保它不会显示为查询字符串。
    • @Angelo R. 我如何在 PHP 中做到这一点?你(或任何人)会写一个补充答案吗?这大约是答案的一半
    • 通过 POST 提交表单不是 php 的事情,它是 html 的事情。在
      标记中,您要设置 method="post"。有意义吗?
    • 我已经通过隐藏字段发送了我必须发送的所有内容!
    【解决方案2】:

    所以首先您需要创建要通过 POST 而不是 GET 提交的表单:

    <form name="myform" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
        <button type="submit" name="submitButton" value="image1"><img src="xxx"></button>
        <button type="submit" name="submitButton" value="image2"><img src="xxx"></button>
    </form>
    

    现在在 PHP 方面:

    if(isset($_POST['submitButton'])) {
        $image = $_POST['submitButton']; 
    }
    

    如果用户点击一个按钮,那段代码就会被触发。

    这是一个完整的例子,说明 tis 如何组合在一起:

    <?php
    if(isset($_POST['submitButton'])) {
        echo $_POST['submitButton'];
    }
    ?>
    <html>
        <body>
            <form name="myform" action="<?php $_SERVER['PHP_SELF']; ?>" method="post">
                <button type="submit" name="submitButton" value="image1"><img src="xxx"></button>
                <button type="submit" name="submitButton" value="image2"><img src="xxx"></button>
            </form>
        </body>
    </html>
    

    【讨论】:

      【解决方案3】:

      对于提交按钮的问题,可以使用提交按钮的name属性来判断点击的是哪个按钮。

      这个被点击的按钮会激发一个键出现在 $_POST 数组中。这样,您可以区分这些值,但仍然具有相同的文本/值。

      【讨论】:

        【解决方案4】:

        只有一种形式。这就是你所需要的。

        为提交按钮赋予相同的名称和不同的值。

        <input type="submit" name="submit" value="Option1" />
        <input type="submit" name="submit" value="Option2" />
        

        表单发布后,您可以检查$_POST['your_submit_value_name'] 的每个值。

        此外,如果您将&lt;form action="" method="post" enctype="multipart/form-data"&gt; 留空,它将发布到自己。因此,当您加载页面时,只需检查:

        if (!empty($_POST)) { 
            if ($_POST['submit'] == 'value1') {
                // Do A
            } else if ($_POST['submit'] == 'value2') {
                // Do B
            }
        }
        

        别忘了验证用户数据!

        【讨论】:

        • 这样每个按钮不会显示不同的文字吗?因为提交是不同的(并且显示的是提交内容,而不是名称)
        • value 属性是显示文本,而不是名称。
        猜你喜欢
        • 1970-01-01
        • 2011-11-07
        • 1970-01-01
        • 2014-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-25
        • 2013-12-06
        相关资源
        最近更新 更多