-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/

このページを検討してください。必要なことを教えてくれます。

基本的に、get/post データを送信できるサーバー上のスクリプトを参照する関数を呼び出し、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 がコメントで提案しています。これにより、フォームの内容 (古いパスワードと 2 つの新しいパスワード) がサーバーに送信され、そこでハッシュ チェックが行われ、結果が返されます。

確かに、これは標準形式で行う方が簡単なので、JavaScript を完全に使用せずに行うことができます。ただし、このクライアント側を実行する場合は、おそらく AJAX が適しています。

于 2013-06-01T14:06:05.197 に答える