有什么方法可以在buttonclick上通过PHP传递变量吗?

时间:2020-05-29 08:35:56

标签: php html button

在将变量传递给PHP函数时遇到问题。因此,我在html或实际上在PHP中所做的事情,但是我使用PHP构成了HTML代码的一部分,是这样的:

<form action=\"\" method=\"post\">
    <textarea name=\"textarea\" rows=\"8\" cols=\"40\"></textarea>
    <button type=\"button\" class=\"button\" name=\"enterText\" value=\"".$row['Wagon_ID']."\">
        Enter
    </button>
</form>

现在,只要行数组中有更多Wagon_ID,这就会在while循环中进行。 我要具体做的是在此按钮单击上调用一个函数,但是我必须能够传递Wagon_ID。 我可以使用<input type="submit"...轻松地完成此操作,并将值设置为Wagon_ID,但是我的问题是因为值是Wagon_ID,因此按钮上的文本也将变为Wagon_ID,并且该文本需要保持输入状态。 因此,我尝试使用按钮类型并将其值设置为Wagon_ID,但是现在甚至没有调用PHP函数。 有谁知道一个窍门,以便我可以使用这种类型的按钮,或将我的“ Enter”文本保持在以前使用的按钮类型上? 预先感谢!

这就是我在PHP中调用按钮单击的方式:

if (isset($_POST['enterText'])) 
    {
        $text= $_POST['textarea'];
        $wagon=$_POST['enterText'];
        mysqli_query($_SESSION['conn'], "INSERT INTO description (Wagon_ID, textdescription) VALUES ('$wagon','$text')");
    }

1 个答案:

答案 0 :(得分:2)

我认为您的问题的关键部分在这里:

我可以通过使用<input type="submit“ ... 值Wagon_ID,但是我的问题是因为值是 Wagon_ID,则按钮上的文字也将变为 Wagon_ID和文本需要保持输入状态。

这种情况就是隐藏字段的用途。不要将实际的表单数据包装在按钮之类的UI元素中。像这样尝试:

echo '<form action="" method="post">
    <textarea name="textarea" rows="8" cols="40"></textarea>
    <input type="hidden" name="wagonID" value="'.$row['Wagon_ID'].'"/>
    <input type="submit" class="button" name="enterText" value="Enter text" />
</form>';

然后在PHP中进行更改

$wagon=$_POST['enterText'];

$wagon = $_POST['wagonID'];

有关隐藏字段的文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/hidden


P.S。如您所见,您可以通过在单引号内回显PHP中的字符串来摆脱双引号的所有混乱转义,它更具可读性,并且不易出错。


P.P.S。

警告::您的代码容易受到SQL Injection攻击。您应该使用参数化查询和准备好的语句来帮助防止攻击者通过使用恶意输入值来破坏数据库。 http://bobby-tables.com对风险进行了解释,并提供了一些示例,说明了如何使用PHP / mysqli安全地编写查询。 从不将未清除的数据直接插入SQL。现在,您编写代码的方式很容易有人窃取,错误地更改甚至删除您的数据。

https://phpdelusions.net/mysqli也包含使用mysqli编写安全SQL的好例子。参数化查询还可以大大降低由于未转义的输入值而导致的意外语法错误的风险。