-1

我知道 JavaScript 是客户端,PHP 是服务器端,但我如何从数据库中获取信息,然后在 JavaScript 函数中使用该信息?

我将其用于密码更改功能。

function validateForm()
{
var oldpassword = document.forms["senhaform"]["oldpassword"].value;
var password = document.forms["senhaform"]["password"].value;
var password2 = document.forms["senhaform"]["password2"].value;

if (oldpassword==null || oldpassword=="")
  {
  alert("Please enter your current password.");
  return false;
  }
if (password==null || password=="")
  {
  alert("Please enter your new password.");
  return false;
  }
if (password2==null || password2=="")
  {
  alert("Please type your new password again.");
  return false;
  }

if (oldpassword==<?php echo $oldpassword; ?>)
  {
      if ( password!==null && password == password2 ) {
         <?php $con->runQuery("UPDATE CLIENTES
                        SET CLIENTES_PASSWORD='{$password}'
                        WHERE CLIENTES_EMAIL='{$_SESSION['USER']}'");
                        ?>
  alert("Your password was altered");
  return false;
      }
      else {
          alert("Your new passwords do not match.");
          return false;
      }
  }
  else 
  {
  alert("Your current password does not match our records.");
  return false;
  }
}
4

3 回答 3

2

您将不得不在这里提取一些 AJAX 技能。

http://api.jquery.com/jQuery.ajax/

考虑这个页面。它会教你你需要什么。

基本上,您将不得不调用一个引用服务器上脚本的函数,您可以将获取/发布数据发送到该脚本,并让它以 JSON 或纯文本等格式返回信息。这就是你应该这样做的方式!

于 2013-06-01T14:10:15.657 回答
1

您需要让 PHP 解析此代码所在的文件。将您的 Web 服务器设置为解析 .js 文件(或您拥有的任何扩展名)或将此代码移动到将被解析的 .php 文件中,可能介于两者之间脚本标记之间HTML。

于 2013-06-01T14:13:07.373 回答
1

要使其正常工作,请尝试以下操作:

if (oldpassword === '<?php echo addslashes($oldpassword) ?>') {

这里发生的情况是您忘记使用通常在 JavaScript 中使用的引号,因此您会遇到客户端语法错误。

另外,我已经添加addslashes了,如果您的密码包含撇号或引号,它仍然会写出有效的 JavaScript。尝试设置$oldpassword为包含其中一个字符,然后查看源代码以了解我的意思。

现在,虽然这可以解决您的直接问题,但值得考虑的是$oldpassword从哪里来。您是否将其存储在数据库中?如果是这样,你不应该。密码应该以散列和加盐格式存储,而不是纯文本,所以如果你的数据库被盗(确实发生了),那么你就有了另一层保护(如果不停止的话,它会延迟盗贼滥用数据)。

确实,您可以在 JavaScript 中使用加盐和散列例程,以便可以在 JavaScript 中进行上述比较,但是当您达到这种复杂程度时,通常最好将其交给服务器。这就是 AJAX 的用武之地,这是 Matt 在评论中建议的。这会将表单的内容(旧密码和两个新密码)发送到服务器,在那里可以进行散列检查,并返回结果。

当然,以标准形式执行此操作更容易,因此您可以完全不使用 JavaScript。但是,如果你想做这个客户端,AJAX 可能是要走的路。

于 2013-06-01T14:06:05.197 回答