ホームページ >バックエンド開発 >PHPチュートリアル >thinkphp セッションが確認コードを取得できません

thinkphp セッションが確認コードを取得できません

WBOY
WBOYオリジナル
2016-06-23 14:13:131045ブラウズ

thinkphp セッション検証コード

。 public function verify(){
import("@.ORG.Image");
$image=new Image();検証コード t 静的関数 ShowAdvverify ($ Type = 'PNG', $ width = 40, $ VerifyName = 'VerifyCode') {
$ RAND = Range ',' Z ');
= $verifyCode;
省略。 。 。 。 。 。 。


ディスカッションへの返信(解決策)

session_start(); を追加していませんか?

1. プログラム ファイルに BOM ヘッダーがないことを確認します
2. TP が提供するメソッドを使用して操作する必要がありますセッション
3. コードと作業プロセスを確認します TP 契約と一致しています

TP は検証コード生成クラスを提供し、フォーム検証も提供します。コードを自分で記述する必要はありません。パラメーターを入力するだけです。

1. BOM は特別な方法を使用して削除されています。
2. セッションを操作する場合、$_SESSION[''] は代入と読み取りに使用されます。これは正しいはずです。
3. 検証コードの生成方法は、thinkphpを呼び出すことで提供される方法です。 また、xuzuning が言及した作業プロセスには何か問題があると思います。
これは私のプロジェクト構造です

以下は、index.php の内容です

define('APP_NAME','Myapp')
define('APP_PATH','./Myapp/');
require 'ThinkPHP/ThinkPHP.php';
?>
アクセスする場合は http://localhost:8080/huhaoweb/index.php/ にアクセスするので、index.php を記述する必要はありません。

あと一つは、メソッド内でセッションを代入して取得すると出力できるのですが、他のメソッドにジャンプすると取得できないことです。サーバーに再ログインするようなものです。セッションは空です。

19.1 セッションサポート
システムはセッションの管理と操作を完全にサポートしており、すべての操作は組み込みのセッション機能を通じて完了できます。

セッションは、セッションの設定、取得、削除、管理操作に使用されます

使用法
session($name, $value='')

パラメータ
name (必須): 配列が渡された場合、セッションの初期化を意味しますnull を入力することは、現在のセッションをクリアすることを意味します。文字列の場合は、セッションの割り当て、取得、または操作を意味します。

値 (オプション): 設定されるセッション値。null が渡された場合、デフォルトは空の文字列です

戻り値
詳細を参照 (特定の使用法に従って異なる値を返します)。


セッション関数は、次の関数を含む、さまざまなパラメーターを渡すことでさまざまな機能操作を完了できる多様な操作関数です。

セッション初期化設定

セッション メソッドの name パラメータが配列に渡される場合、それはセッション初期化設定を意味します。例:

session(array('name'=>'session_id','expire'= >3600)) ;

サポートされる受信セッション パラメータは次のとおりです:

パラメータ名
説明

id
session_id 値

名前
session_name 値

パス
session_save_path 値

プレフィックス
セッション ローカリゼーション スペース プレフィックス

有効期限切れ
session.gc_maxlifetime 設定値

ドメイン
session.cookie_domain 設定値

use_cookies
session.use_cookies 設定値

use_trans_sid
session.use_trans_sid 設定値

タイプ
セッションハンドラタイプ、ハンドラドライバ拡張機能を使用できます


セッション初期化設定メソッド 手動で呼び出す必要はありません。通常、プロジェクトは SESSION_OPTIONS パラメータを設定するだけで済みます。サポートされているインデックスは、です。名前は前のセッション初期化パラメータと同じです。

デフォルトでは、システムは初期化後にセッションを自動的に開始します。システムがセッションを自動的に開始しないようにするには、SESSION_AUTO_START を false に設定します。たとえば、次のように設定します。自動起動をオフにするには、プロジェクト ファイルのパブリック設定を設定するか、コントローラーで session_start または session('[start]') を手動で呼び出してセッションを開始できます。



セッションの割り当て

セッションの割り当ては比較的簡単で、直接使用します:

session('name','value'); value = session('name');



session deletion

session( 'name',null); // 名前を削除します

すべてのセッションを削除するには、以下を使用できます:

session(null) // 現在のセッションをクリアします



セッションの値が存在するかどうかを判断します。設定されている場合は、

session('?name'); を使用できます



セッション管理

name という名前のセッション値が設定されているかどうかを判断するために使用されます。 session メソッドは、いくつかの簡単なセッション管理操作をサポートします。

session('[操作名]');

サポートされる操作名は次のとおりです:

操作名
意味

start
セッションの開始

一時停止
セッションの書き込みの一時停止

破棄
セッションの破棄

regenerate
セッション ID を再生成


使用例は次のとおりです。

session('[pause]'); // セッションの書き込みを一時停止します

session( '[start]'); // セッションを開始します

session( '[destroy]'); // セッションを破棄

session('[regenerate]'); // セッション ID を再生成



ローカリゼーション サポート

セッション設定の初期化時にプレフィックス パラメータを渡す場合、 SESSION_PREFIX パラメータを個別に使用すると、ローカライズされたセッション管理サポートを有効にすることができます。ローカライズされたセッションを開始すると、すべての割り当て、値の取得、削除、および判定の操作が自動的にローカライズされたセッションに対応します。

ローカライズされたセッションのサポートがオンになった後、生成されるセッション データ形式は元の

$_SESSION['name'] から $_SESSION['prefix'] ['name'] に変更されます



セッション ハンドラーのサポート

セッション設定を初期化するときに、type パラメーターが渡されると、対応するハンドラー ドライバーが自動的に導入されます。ドライバー拡張ディレクトリは、Extend/Driver/Session ディレクトリの下にあります (詳細については、拡張セクションを参照してください)。 。

これが鍵かもしれません
認証コードが生成されるたびに、この認証コードのmd5以降の文字列情報がSESSIONを通じて記録されるので、認証コードが正しいかどうかを確認するだけで済みます。次のコードを使用します:

if($_SESSION['verify'] != md5($_POST['verify'])) {

$this->error('検証コード エラー!'

}

ここでの検証名は、検証コードの verifyName パラメーターの値に依存することに注意してください。

session_start();

session_start(); php+mysql ではまだ役に立ちますが、デフォルトでは自動的に有効になります。

他の人が使用していたコンピューターはphp mysqlを使用していました。 。自分で設定します。統合開発環境wampを使用しているため、セッションを保存するパスがphp5以下となっており、セッションの読み込みでエラーが発生します。そこで、php5を削除し、サーバーセッションを再起動して、最終的に値を渡すことができました

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。