我有一个modifypassword表单,可以为用户修改平面文件中的密码。(我知道它不安全等)。
所以问题是:每当我点击我网站上的修改密码时,我都会收到一个要求输入新密码的提示。一切都很好,之后它会提交表格。但我无法以某种方式输入变量。我想$ _GET [' newpw']所以我可以用它来调整我的平面文件。
所以我有一个这样的表格:
echo "<td> <form action=\"admin.php\" method=\"GET\" onsubmit=\" modifyPassword();\">
这是modifyPassword函数:
<script type="text/javascript">
function modifyPassword() {
var newpw=prompt("Enter a new password");
if(newpw !== null) {
$.ajax({
type: "GET",
url: "admin.php",
data: {data: newpw},
success: function(data) {
console.log(data);
}
});
}
}
</script>
当表单实际提交时,我希望从输入的内容中获取值,如下所示:
echo $_GET['data'];
这都在同一个文件中。 $ _GET [&#39;数据&#39;]的输出没有显示任何内容。 当我选择静态密码时,其余的工作正常:&#34; test&#34;。它会更新我的平面文件,但我希望获得用户输入来更改密码。
有人能告诉我我做错了吗?
答案 0 :(得分:0)
我认为基本问题可能是,你有onsubmit事件处理程序,但无论如何都要提交表单。所以实际的提示没有机会执行。
您应该添加return false;
或管理modifyPassword()
方法中的逻辑。
例如,这可能有助于停止提交表单:
echo "<td> <form action=\"admin.php\" method=\"GET\" onsubmit=\"modifyPassword(); return false;\">"
或强>
如果您想以标准方式提交表单,只需更改密码,只需更改输入值即可。
修改表单:echo "<td> <form action=\"admin.php\" method=\"GET\" onsubmit=\"modifyPassword(this)\"><input type=hidden name=newpw />"
然后更改javascript:
<script type="text/javascript">
function modifyPassword(passForm)
{
var newpw = prompt("Enter a new password");
if (newpw !== null)
{
passForm.newpw.value = newpw;
}
}
</script>
然后你应该在$_GET['newpw']
中使用php中的值。
答案 1 :(得分:0)
您当前的PHP代码:
}elseif (isset($_GET['Modify'])){ echo $_GET['data'];
但是根据Ajax请求代码,您不会发送Modify
参数,因此$_GET['Modify']
未设置,因此条件返回false
并且永远不会到达echo $_GET['data']
{1}}部分。
您需要向data
添加另一个参数,如下所示:
<强> JS 强>
<script type="text/javascript">
function modifyPassword(){
var newpw=prompt("Enter a new password");
if(newpw !== null){
$.ajax({
type: "GET",
url: "admin.php",
data: {action: 'modifypass', data: newpw}, //Added another parameter.
success: function(data)
{
console.log(data);
}
});
}}
</script>
<强> PHP 强>
elseif (isset($_GET['action']) && $_GET['action'] == "modifypass"){
echo $_GET['data'];