通过HTML按钮传递一个PHP函数(带参数)
Passing a PHP Function (With parameters) through an HTML Button
基本上,我正在尝试创建一个登录系统,并且我正在使用我所谓的"动态",这意味着它包含在我的其他文件中,如果我想使用不同的数据库,我只需将该数据库传递给登录函数。在默认情况下我知道如何做到这一点,但一旦使用按钮,我就有点困惑了。
这是我最基本的形式。
<?php
createLogin('test', 'test2');
function createLogin($SQLConnection, $SQLConfig) {
echo "<h1> You are currently not logged in!</h1>";
echo "<form action='handleLogin(".$SQLConnection.",".$SQLConfig.") method='post'>";
echo "<div align='center'>";
echo "<table style='width: 475px'>";
echo "<thead>";
echo "<th>";
echo "<tr>Enter your e-mail and password.</tr>";
echo "</th>";
echo "</thead>";
echo "</table>";
echo "<input type='submit' value='Login' />";
echo "</form>";
}
function handleLogin($foo, $bar) {
echo $foo . " || " . $bar;
}
?>
当我点击提交按钮时,它只是把我带到这里…
http://localhost/handleLogin%28test,test2%29%20method=
现在,我读到使用Javascript来做这个,并做一些像
<script>
function processLoginRequest($SQLConnection, $SQLConfig) {
alert("<?php handleLogin($SQLConnection, $SQLConfig) ?>");
}
</script>
那么我可以使用
echo "<form action='processLoginRequest(".$SQLConnection.",".$SQLConfig.") method='post'>";
但是,该代码会导致整个php脚本死亡。(没有错误)
您错误地使用了action
,结果与预期的一样。action
存储将提交表单的页面。所以,是的,当你点击提交时,它会把你带到一个叫做handleLogin%28test,test2%29%20method=
的页面,因为这是你的动作要做的。
您所能做的就是将该操作留空,这将把表单提交到当前页面。然后,在该页面上检查表单是否已提交,如果已提交,则调用您的函数。
在创建表单的函数中进行以下更改:
function createLogin() {
...
echo "<form action='' method='post'>";
....
echo "<input type='submit' value='Login' name='login'/>";
}
然后,在呈现表单的页面顶部添加如下内容:
// Check if login form has been submitted - if so, handle
if (isset($_POST['login'])) {
handleLogin($SQLConnection, $SQLConfig);
}
// Render login form. No need to pass config parameters here.
createLogin();
如果你真的想把所有的东西都放在一个函数里,我想你也可以这样做:
function createLogin($SQLConnection, $SQLConfig) {
if (isset($_POST['login'])) {
handleLogin($SQLConnection, $SQLConfig);
}
else {
echo "<h1> You are currently not logged in!</h1>";
echo "<form action='' method='post'>";
echo "<div align='center'>";
echo "<table style='width: 475px'>";
echo "<thead>";
echo "<th>";
echo "<tr>Enter your e-mail and password.</tr>";
echo "</th>";
echo "</thead>";
echo "</table>";
echo "<input type='submit' value='Login' name='login'/>";
echo "</form>";
}
}
你不想传递你的SQL配置参数回JavaScript,因为任何人都可以看到你的JavaScript代码,当他们浏览你的页面,然后他们将有他们需要的一切连接和玩在你的数据库。
你必须传递某种标志到你的表单,让你的PHP代码知道(当它接收到表单的数据后)什么样的SQL设置应该使用。
的例子:
<form method="POST" ...>
<type input="hidden" name="loginMode" value="<?php echo $loginMode; ?>" />
</form>
同样,不要在那里传递任何敏感数据,只需在$loginMode或其他选项中使用一些独特的值,例如"mySql"。
然后,当你在PHP中处理HTTP POST时:if ($_POST['loginMode'] == 'mySql')
{
// ... create connection based on $SQLConnection, $SQLConfig
}
else if ($_POST['loginMode'] == 'otherMethod') ...
您的JavaScript可能因为$SQLConnection
和$SQLConfig
的内容而失败。如果其中有双引号,则会失败。
另外,设计和实现一个安全可靠的登录系统实际上是相当困难的,你应该选择使用一个经过长期测试的框架。
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 如何将JavaScript变量的数据传递到另一个php页面
- 将javascript变量传递到下一个php页面
- 将php页面URL中的变量传递给JavaScript和另一个php
- 如何使用javascript/jquery将变量从一个PHP文件传递到另一个PHP文件
- 将一个php变量从js传递到php,并返回内容问题
- 通过AJAX将从AJAX获取的值发送到另一个PHP文件
- 使用 Ajax 将 Javascript 变量提交到另一个 PHP 文件
- 从 PHP 表中选择值并将其传递给另一个 PHP 页面
- 我需要将一个 php 变量传递给 DataTables.Editable sUpdateURL
- 如何通过选择下拉列表中的选项从另一个 php 文件中获取数据
- 我想在 javascript 中调用一个 php 函数,并在其中传递两个数组作为参数
- 将值从一个 Php 文件传递到另一个 Php 文件
- php中的mysql查询不起作用,但它在另一个php文件中起作用
- 我们可以用grunt设置一个php/mysql环境吗
- 如何在另一个php文件中从ajax获取变量
- 调用另一个php脚本生成图表时出现问题
- 在循环中,将一个php-var传递给javascript,其中包含该变量的值
- 如果jquery脚本's在另一个php页面的php-include语句中使用
- 如何使用wp_localize_script从另一个php文件传递参数