亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

將變數(shù)延遲傳遞給PHP頁面中的HTML元素,或用更新後的值取代它
P粉253800312
P粉253800312 2023-08-17 22:55:08
0
1
641
<p><br /></p> <pre class="brush:bash;toolbar:false;">/public/register.php ## [1] "public" 註冊(cè)表單 /public/js/checkout.js ## [2] "public" 付款處理 /src/register.php ## [3] "private" 附加處理 </pre> <ul> <li>[1] 透過 <code><script src="js/checkout.js"></script></code> 載入 [2]</li> <li>[1] 透過 <code>require __DIR__ . '/../src/register.php';</code> 包含 [3]</li> </ul> <p>[1] 包含一個(gè)HTML 元素(作為HTML 程式碼包含在PHP 檔案中,即在<code><php ... ?></code> 標(biāo)籤之外):</p> ; <pre class="brush:html;toolbar:false;"><div id="secret" style="display: none;"> <?php echo htmlspecialchars($secret_var); ?> </div> </pre> <p><code>$secret_var</code> 在 [3] 中宣告/實(shí)例化。 </p> <p>[2] 這個(gè) JS 檔案包含</p> <pre class="brush:js;toolbar:false;">var div = document.getElementById("secret"); var secret_var = div.textContent; console.log(secret_var) </pre> <p>[3] 包含</p> <pre class="brush:php;toolbar:false;">session_start(); // 付款合作夥伴處理程式碼,回應(yīng) $secret_var = json_encode(array(secret_var); $_SESSION['secret_var'] = $secret_var; </pre> <p><code>$secret_var</code> 作為一個(gè) <code>$_SESSION</code> 變數(shù)從 [3] 傳遞到 [1],[2] 在其中檢索它。 </p> <p>當(dāng)從JavaScript 檔案的<code>console.log</code> 語句中在瀏覽器中回顯<code>$secret_var</code> 時(shí),它會(huì)傳回<code>null</code> ;。 </p> <p>當(dāng)從<code>src/register.php</code> 中回顯<code>$secret_var</code>(在渲染的<code>registration.php</code> 頁面中顯示),它具有正確的(字串)值。 </p> <p>如何延遲將 <code>$secret_var</code> 傳遞給 HTML 的 <code>#secret</code> 元素,或用更新的(非空)值取代它? </p>
P粉253800312
P粉253800312

全部回覆(1)
P粉895187266

猜測(cè)您在執(zhí)行順序方面遇到了問題,例如在DOM中甚至還不存在<div id="secret">時(shí),[2]腳本就已經(jīng)執(zhí)行了。您可以在輸出<script src="js/checkout.js"></script>之前,簡(jiǎn)單地在[1]處添加類似於<script>var secret_var = <?= json_encode($secret_var); ?>;</script>的內(nèi)容,這樣它就在checkout.js執(zhí)行之前就是公開的並且已知的,而且已經(jīng)作為變數(shù)存在,無需讀取元素內(nèi)容。或只需使用事件,如window.onload來執(zhí)行[2]對(duì)元素的讀取。

如果該秘密值發(fā)生變化並且您需要進(jìn)行更新,您可以定期檢查變化,或者在使用之前更好地請(qǐng)求最新的值。

請(qǐng)注意,您輸出到客戶端的任何內(nèi)容都不再是秘密,如果您真的想保護(hù)某個(gè)值,您必須將其僅保留在伺服器端,這在像支付網(wǎng)關(guān)的API金鑰等情況下非常重要。伺服器端意味著將秘密儲(chǔ)存在資料庫或會(huì)話中。然後,每當(dāng)您需要與遠(yuǎn)端服務(wù)互動(dòng)時(shí),只需呼叫PHP腳本(例如ajax)在伺服器端執(zhí)行該任務(wù),這樣您就將秘密的使用分離到僅限伺服器端,然後您無需將其傳遞給客戶端或請(qǐng)求更新。

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板