ホームページ バックエンド開発 PHPチュートリアル DEDECMS 検証コードの詳細を共有します。 SESSIONに関する質問を添付します

DEDECMS 検証コードの詳細を共有します。 SESSIONに関する質問を添付します

Jun 13, 2016 pm 12:59 PM
cookie nbsp session

DEDECMS 検証コードの詳細を共有します。 SESSION に関する質問を添付します

この投稿はデフォルトで 2012-12-01 15:54:51 に最後に編集されました。
問題: 提出が重複しています。フォームの送信は成功しました。ページを右クリックして前のページに戻ると、ブラウザーに「このページは使用できません」というメッセージが表示され、F5 キーを押して再度更新すると、送信は再び成功しました。その結果、 「更新を続ければ」、正常に送信し続けることができます。 確認コードの問題。
コード:

1

2

3

4

5

6

7

8

9

10

<br />

if($dopost == 'add'){<br />

  $svali = GetCkVdValue();<br />

  if(strtolower($vdcode)!=$svali || $svali=='')<br />

  {<br />

      ResetVdValue();<br />

      ShowMsg('验证码错误!', '-1');<br />

      exit();<br />

  }<br />

}<br />

ログイン後にコピー

解決策: 最初は ResetVdValue(); 関数の問題だと思いましたが、最終的には、ResetVdValue(); を決定するコードの前に問題があることがわかりました。送信された確認コードは正しいです。

1

2

3

4

5

6

7

8

9

10

<br />

if($dopost == 'add'){<br />

  $svali = GetCkVdValue();<br />

  ResetVdValue(); //位置移前<br />

  if(strtolower($vdcode)!=$svali || $svali=='')<br />

  {<br />

      ShowMsg('验证码错误!', '-1');<br />

      exit();<br />

  }<br />

}<br />

ログイン後にコピー




その後、検証コードの取得関数と破棄関数を確認した後、質問があります。
1. 未変更のファイル:/include/common.func.php、関数 GetCkVdValue() および ResetVdValue()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

<br />

/**<br />

 *  获取验证码的session值<br />

 *<br />

 * @return    string<br />

 */<br />

function GetCkVdValue()<br />

{<br />

    @session_id($_COOKIE['PHPSESSID']);<br />

    @session_start();<br />

    return isset($_SESSION['securimage_code_value']) ? $_SESSION['securimage_code_value'] : '';<br />

}<br />

<br />

/**<br />

 *  PHP某些版本有Bug,不能在同一作用域中同时读session并改注销它,因此调用后需执行本函数<br />

 *<br />

 * @return    void<br />

 */<br />

function ResetVdValue()<br />

{<br />

    @session_start();<br />

    $_SESSION['securimage_code_value'] = '';<br />

}<br />

ログイン後にコピー


2. 修正前の検証コード生成プログラム:/include/vdimgck.php の先頭に
が記述されている

1

2

3

4

5

6

7

8

<br />

$sessSavePath = DEDEDATA."/sessions/";<br />

<br />

// Session保存路径<br />

if(is_writeable($sessSavePath) && is_readable($sessSavePath)){ session_save_path($sessSavePath); }<br />

if(!empty($cfg_domain_cookie)) session_set_cookie_params(0,'/',$cfg_domain_cookie);<br />

<br />

session_start();<br />

ログイン後にコピー



私は個人的にコードを次のように変更しました。 file/include/common.func.php
<br>
<br>
/**<br>
* 認証コードのセッション値を取得<br>
*<br>
* @戻り文字列<br>
​*/<br>
関数 GetCkVdValue()<br>
{<br>
$sessSavePath = DEDEDATA."/sessions/";<br>
If(is_writeable($sessSavePath) && is_readable($sessSavePath)){ session_save_path($sessSavePath) }<br>
If(!empty($GLOBALS['cfg_domain_cookie'])) session_set_cookie_params(0,'/',$GLOBALS['cfg_domain_cookie']);<br>
<br>
@session_id($_COOKIE['PHPSESSID']);<br>
@session_start();<br>
isset($_SESSION['securimage_code_value']) $_SESSION['securimage_code_value'] : '';<br> を返します。
}<br>
<br>
/**<br>
* PHP のバージョンによってはバグがあるため、同じスコープ内でセッションの読み取りとログアウトを同時に行うことができないため、この関数を呼び出した後にこの関数を実行する必要があります。
*<br>
* @return void<br>
​*/<br>
関数 ResetVdValue()<br>
{<br>
$sessSavePath = DEDEDATA."/sessions/";<br>
If(is_writeable($sessSavePath) && is_readable($sessSavePath)){ session_save_path($sessSavePath) } <br><div class="clear">;</div>
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

解決策: 組織では PIN を変更する必要があります。 解決策: 組織では PIN を変更する必要があります。 Oct 04, 2023 pm 05:45 PM

ログイン画面に「組織から PIN の変更を求められています」というメッセージが表示されます。これは、個人のデバイスを制御できる組織ベースのアカウント設定を使用しているコンピューターで PIN の有効期限の制限に達した場合に発生します。ただし、個人アカウントを使用して Windows をセットアップした場合、エラー メッセージは表示されないのが理想的です。常にそうとは限りませんが。エラーが発生したほとんどのユーザーは、個人アカウントを使用して報告します。私の組織が Windows 11 で PIN を変更するように要求するのはなぜですか?アカウントが組織に関連付けられている可能性があるため、主なアプローチはこれを確認することです。ドメイン管理者に問い合わせると解決できます。さらに、ローカル ポリシー設定が間違っていたり、レジストリ キーが間違っていたりすると、エラーが発生する可能性があります。今すぐ

Windows 11で明るさを調整する10の方法 Windows 11で明るさを調整する10の方法 Dec 18, 2023 pm 02:21 PM

画面の明るさは、最新のコンピューティング デバイスを使用する上で不可欠な部分であり、特に長時間画面を見る場合には重要です。目の疲れを軽減し、可読性を向上させ、コンテンツを簡単かつ効率的に表示するのに役立ちます。ただし、設定によっては、特に新しい UI が変更された Windows 11 では、明るさの管理が難しい場合があります。明るさの調整に問題がある場合は、Windows 11 で明るさを管理するすべての方法を次に示します。 Windows 11で明るさを変更する方法【10の方法を解説】 シングルモニターユーザーは、次の方法でWindows 11の明るさを調整できます。これには、ラップトップだけでなく、単一のモニターを使用するデスクトップ システムも含まれます。はじめましょう。方法 1: アクション センターを使用する アクション センターにアクセスできる

iPhoneのSafariでプライベートブラウジング認証をオフにする方法は? iPhoneのSafariでプライベートブラウジング認証をオフにする方法は? Nov 29, 2023 pm 11:21 PM

iOS 17 では、Apple はモバイル オペレーティング システムにいくつかの新しいプライバシーおよびセキュリティ機能を導入しました。その 1 つは、Safari のプライベート ブラウジング タブに対して 2 段階認証を要求する機能です。その仕組みとオフにする方法は次のとおりです。 iOS 17 または iPadOS 17 を実行している iPhone または iPad では、Safari でプライベート ブラウズ タブを開いていて、再度アクセスするためにセッションまたはアプリを終了する場合、Apple のブラウザでは Face ID/Touch ID 認証またはパスコードが必要になります。言い換えれば、ロックが解除されている iPhone または iPad を誰かが手に入れても、パスコードを知らなければプライバシーを閲覧することはできません。

Win10/11 デジタル アクティベーション スクリプト MAS バージョン 2.2 がデジタル アクティベーションを再サポート Win10/11 デジタル アクティベーション スクリプト MAS バージョン 2.2 がデジタル アクティベーションを再サポート Oct 16, 2023 am 08:13 AM

有名なアクティベーション スクリプト MAS2.2 バージョンでは、デジタル アクティベーションが再びサポートされています。このメソッドは @asdcorp とそのチームが考案したもので、MAS 作成者はそれを HWID2 と呼んでいます。 https://github.com/massgravel/Microsoft-Activation-Scripts から Gatherosstate.exe (オリジナルではなく、変更されたもの) をダウンロードし、パラメータを指定して実行し、AuthenticTicket.xml を生成します。まず元のメソッド: Gatherosstate.exePfn=xxxxxxx;DownlevelOriginalState=1 を確認し、次に最新のメソッド: Gatheros と比較します。

セッション失敗を解決する方法 セッション失敗を解決する方法 Oct 18, 2023 pm 05:19 PM

セッション障害は通常、セッションの有効期間の期限切れまたはサーバーのシャットダウンによって発生します。解決策: 1. セッションの有効期間を延長する; 2. 永続ストレージを使用する; 3. Cookie を使用する; 4. セッションを非同期的に更新する; 5. セッション管理ミドルウェアを使用する。

コンピューター上の Cookie はどこにありますか? コンピューター上の Cookie はどこにありますか? Dec 22, 2023 pm 03:46 PM

コンピュータ上の Cookie は、使用するブラウザとオペレーティング システムに応じて、ブラウザ上の特定の場所に保存されます。 1. Google Chrome、C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default \Cookies に保存されます。等

Cookie はどこに保存されますか? Cookie はどこに保存されますか? Dec 20, 2023 pm 03:07 PM

Cookie は通常、ブラウザの Cookie フォルダに保存されます。ブラウザの Cookie ファイルは通常、バイナリ形式または SQLite 形式で保存されます。Cookie ファイルを直接開くと、文字化けしたり判読できないコンテンツが表示される可能性があるため、使用することをお勧めします。 Cookie を表示および管理するためにブラウザによって提供される Cookie 管理インターフェイス。

PHP セッションのクロスドメイン問題の解決策 PHP セッションのクロスドメイン問題の解決策 Oct 12, 2023 pm 03:00 PM

PHPSession のクロスドメイン問題の解決策 フロントエンドとバックエンドの分離の開発では、クロスドメイン要求が標準になっています。クロスドメインの問題に対処するときは、通常、セッションの使用と管理が必要になります。ただし、ブラウザーのオリジンポリシーの制限により、デフォルトではセッションをドメイン間で共有できません。この問題を解決するには、いくつかの技術と方法を使用して、セッションのクロスドメイン共有を実現する必要があります。 1. ドメイン間でセッションを共有するための Cookie の最も一般的な使用法

See all articles