PHP ページの HTML 要素に変数を遅延渡すか、更新された値に置き換えます
P粉253800312
P粉253800312 2023-08-17 22:55:08
0
1
461


/public/register.php ## [1] "public" 登録フォーム /public/js/checkout.js ## [2] 「パブリック」決済処理 /src/register.php ## [3]「private」追加処理 
  • [1] 経由でロード [2]
  • [1] via require __DIR__ . '/../src/register.php'; contains [3]

[1] には HTML 要素が含まれます (PHP ファイル内の HTML コードとして、つまり タグの外側に含まれます):

;
 

$secret_var は [3] で宣言/インスタンス化されています。

[2] この JS ファイルには

が含まれています。
var div = document.getElementById("secret"); var Secret_var = div.textContent; console.log(secret_var) 

[3] には

が含まれています。
session_start(); // 支払いパートナーの処理コード、応答 $secret_var = json_encode(array(secret_var); $_SESSION['secret_var'] = $secret_var; 

$secret_var は、$_SESSION 変数として [3] から [1] に渡され、[2] がそれを取得します。

JavaScript ファイルの console.log ステートメントからブラウザで $secret_var をエコーすると、null が返されます。

src/register.php から $secret_var をエコーするとき (レンダリングされた registration.php ページに表示されます)。正しい (文字列) 値があります。

$secret_var を HTML の #secret 要素に渡すのを遅らせたり、更新された (null 以外の) 値に置き換えたりするにはどうすればよいですか?

P粉253800312
P粉253800312

全員に返信 (1)
P粉895187266

実行順序に問題が発生したと考えてください。たとえば、

が DOM に存在しないときに、[2] スクリプトが実行されました。= のコンテンツなので、checkout.jsが実行される前に公開されて既知となり、変数としてすでに存在します。要素の内容を読む必要はありません。または、window.onloadなどのイベントを使用して [2] 要素の読み取りを実行します。

シークレット値が変更され、それを更新する必要がある場合は、定期的に変更を確認するか、使用する前に最新の値をリクエストすることができます。

クライアントに出力するものはすべて秘密ではないことに注意してください。値を本当に保護したい場合は、サーバー側にのみ保持する必要があります。これは、支払いゲートウェイの API キーの場合には当てはまりません。など非常に重要です。サーバー側とは、シークレットをデータベースまたはセッションに保存することを意味します。その後、リモート サービスと対話する必要があるときはいつでも、PHP スクリプト (例: ajax) を呼び出してサーバー側でそのタスクを実行するだけです。これにより、シークレットの使用をサーバー側のみに分離することができ、その後、それをクライアント端末に渡すか、更新を要求します。

いいねを押す+0
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート
    私たちについて 免責事項 Sitemap
    PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!