1

私はcodeigniterとjqueryを使用してログインフォームを構築しようとしています.クライアントがフォームを送信するときに私がやろうとしていたことは、jqueryの変更であり、パラメーターENCRYPTEDの両方を渡すwindow.location際に検証関数を呼び出すことです.controllersusernamepassword

これが私のコードです

window.location.href = "/resturant/codeigniter/index.php/welcome/checklogin/" +
<?php $this->load->library('encrypt');
echo $this->encrypt->encode("$('#username').val()"); ?> +
"/" + $("#password").val();

このコードは機能しません。

私の質問は、これがパラメーターを暗号化し、URL を介して渡す方法ですか?

アップデート

次のコードはうまく機能します。

window.location.href = "/resturant/codeigniter/index.php/welcome/checklogin/" +
<?php echo "$('#username').val()"; ?> + "/" + $("#password").val();
4

1 に答える 1

0

完全に不可能な方法で PHP と JavaScript を混在させています。PHP がサーバー上で実行され、コンテンツがブラウザに送信され、その後、かなりの時間が経過した後、クライアントのマシン上で JavaScript が実行されます。2 つは、このように相互作用することはできません。PHP と JavaScript が相互に作用するには、クライアントとサーバーの間で HTTP リクエストを介してデータを送信する必要があります。

より大きなスキームでは、PHP でサーバー側の暗号化を使用して、JavaScript でクライアント側で何かを暗号化することはできません。JavaScript からサーバーに何かを安全に通信したい場合は、SSL を使用する必要があります。

ユーザー名/パスワードを URL から除外したいだけの場合は、POSTリクエストではなくリクエストを使用する必要がありGETます。とにかく、ログインユーザーに対してこれを行う必要があります。

RE: あなたの最新情報

問題は、純粋に偶然に、2 番目の例が有効な JavaScript を出力し、たまたま望ましい結果が得られることです。

つまり、2番目の例では:

window.location.href = "/resturant/codeigniter/index.php/welcome/checklogin/" +
<?php echo "$('#username').val()"; ?> + "/" + $("#password").val();

PHPは、まだ存在しないフィールドの値ではなくechoを含む静的な文字列を出力しています。これは、PHP を使用しており、この時点ではブラウザさえ関与していないためです。PHP からの出力は次のようになりますが、これはたまたま正しく動作します。"$('#username').val()"#username

window.location.href = "/resturant/codeigniter/index.php/welcome/checklogin/" +
$('#username').val() + "/" + $("#password").val();

ただし、最初の例は完全に壊れています。この行:

echo $this->encrypt->encode("$('#username').val()");

リテラル文字列の暗号化された形式を出力しています"$('#username').val()"。結果はガベージと JavaScript 解析エラーになります。

このように PHP と JavaScript を混在させることはできません

于 2013-01-06T16:09:07.803 に答える