有没有一种方法可以在Buttonclick上的PHP中传递变量?

问题描述 投票:0回答:1

我在将变量传递给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中调用buttonclick的方式:

if (isset($_POST['enterText'])) 
    {
        $text= $_POST['textarea'];
        $wagon=$_POST['enterText'];
        mysqli_query($_SESSION['conn'], "INSERT INTO description (Wagon_ID, textdescription) VALUES ('$wagon','$text')");
    }
php html button
1个回答
0
投票

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

我可以使用<input type="submit轻松完成此操作......值Wagon_ID,但是我的问题是因为值是Wagon_ID,即按钮上的文字也将成为Wagon_ID和文本需要保持输入。

这种情况是隐藏字段的用途。像这样尝试:

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'];

to

$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的好例子。参数化查询还可以大大降低由于输入值未转义而导致的意外语法错误的风险。

© www.soinside.com 2019 - 2024. All rights reserved.