ホームページ php教程 php手册 PHP学習メモ ユーザー登録モジュールのユーザークラスと検証コードクラス

PHP学習メモ ユーザー登録モジュールのユーザークラスと検証コードクラス

Jun 13, 2016 pm 12:05 PM
php コード できる 勉強 バンドル モジュール ユーザー ユーザー登録 ノート 親切 再利用 確認する

したがって、将来の参照用と、困っている友人に提供するために、第 1 章の再利用可能なクラスのコードを投稿します。
: データベースの読み取りと設定、変更の保存などのユーザー クラス インタラクション

コードをコピー コードは次のとおりです:


class User{
private $uid;
プライベート $フィールド;
パブリック関数 __construct(){
$this->uid=null;
$this->fields=array('username'=>'','password'=>'','emailAddr'=>'','isActive'=>false);
}
public function __get($field){
if($field=='userId'){
return $this->uid;
}else{
return $this->fields[$field];
}
}
パブリック関数 __set($field,$value){
if(array_key_exists($field,$this->fields)){
$this->fields [$フィールド]=$値;
}
}
//ユーザー名が有効な場合は return format
public static function validateUsername($username){
return preg_match('/^[A-Z0-9]{2, 20}$/i',$ユーザー名);
}
//電子メール アドレスが有効な場合に戻ります。 format
public static function validateEmailAddr($email){
return filter_var($email,FILTER_VALIDATE_EMAIL);
}
//レコードのユーザー ID に基づいて設定されたオブジェクトを返します
public static function getById($user_id){
$user=new User();
$query=sprintf('SELECT USERNAME,PASSWORD,EMAIL_ADDR,IS_ACTIVE '.
'FROM %sUSER WHERE USER_ID=%d',DB_TBL_PREFIX,$user_id);
$result=mysql_query($query,$GLOBALS['DB']);
if(mysql_num_rows($result)){
$row=mysql_fetch_assoc($result);
$user->username=$row['USERNAME'];
$user->password=$row['PASSWORD'];
$user->emailAddr=$row['EMAIL_ADDR'];
$user->isActive=$row['IS_ACTIVE'];
ChromePhp::log($user_id);
$user->uid=$user_id;
}
mysql_free_result($result);
$user を返す;
}
//レコードのユーザー名に基づいて設定されたオブジェクトを返します
public static function getByUsername($username){
$user=new User();
$query=sprintf('SELECT USER_ID,PASSWORD,EMAIL_ADDR,IS_ACTIVE '.
'FROM %sUSER WHERE USERNAME="%s"',DB_TBL_PREFIX,mysql_real_escape_string($username,$GLOBALS['DB']) );
$result=mysql_query($query,$GLOBALS['DB']);
if(mysql_num_rows($result)){
$row=mysql_fetch_assoc($result);
$user->username=$username;
$user->password=$row['PASSWORD'];
$user->emailAddr=$row['EMAIL_ADDR'];
$user->isActive=$row['IS_ACTIVE'];
$user->uid=$row['USER_ID'];
}
mysql_free_result($result);
$user を返す;
}
//レコードをデータベースに保存します
public function save(){
//既存のユーザー情報を更新します
if($this->uid){
$ query = sprintf('UPDATE %sUSER SET USERNAME = "%s", ' .
'PASSWORD = "%s", EMAIL_ADDR = "%s", IS_ACTIVE = %d ' .
'WHERE USER_ID = % d'、
DB_TBL_PREFIX、
mysql_real_escape_string($this->ユーザー名、$GLOBALS['DB'])、
mysql_real_escape_string($this->パスワード、$GLOBALS['DB'])、
mysql_real_escape_string($this->emailAddr, $GLOBALS['DB']),
$this->isActive,
$this->userId);
return mysql_query($query, $GLOBALS['DB']);
}else{
// 新しいユーザーを作成します
$query=sprintf('INSERT INTO %sUSER(USERNAME,PASSWORD,' .
'EMAIL_ADDR,IS_ACTIVE) VALUES ("%s", "%s","%s",%d)'、
DB_TBL_PREFIX、
mysql_real_escape_string($this->ユーザー名,$GLOBALS['DB'])、
mysql_real_escape_string($this-> ;password,$GLOBALS['DB']),
mysql_real_escape_string($this->emailAddr,$GLOBALS['DB']),
$this->isActive);
if(mysql_query($query,$GLOBALS['DB'])){
$this->uid=mysql_insert_id($GLOBALS['DB']);
true を返します。
}else{
false を返す;
}
}
}
//レコードを非アクティブとして設定し、アクティベーション トークンを返します。
public function setInactive(){
$this->isActive=false;
$this->save();
$token=random_text(5);
$query=sprintf('INSERT INTO %sPENDING (USER_ID,TOKEN)' .
'VALUES (%d,"%s")',DB_TBL_PREFIX,$this->uid,$token);
return (mysql_query($query,$GLOBALS['DB']))?$token:false;
}
//ユーザーの保留ステータスをクリアし、レコードをアクティブとして設定します
public function setActive($token){
$query=sprintf('SELECT TOKEN FROM %sPENDING WHERE USER_ID=%d ' .
'AND TOKEN="%s"',DB_TBL_PREFIX,$this->uid,mysql_real_escape_string($token,$GLOBALS['DB']);
$result=mysql_query($query,$GLOBALS['DB']);
if(!mysql_num_rows(($result))){
mysql_free_result($result);
false を返します。
}else{
mysql_free_result($result);
$query=sprintf('DELETE FROM %sPENDING WHERE USER_ID=%d ' .
'AND TOKEN="%s"',DB_TBL_PREFIX,$this->uid,mysql_real_escape_string($token,$GLOBALS[ 'DB']));
if(!mysql_query($query,$GLOBALS['DB'])){
return false;
}else{
$this->isActive=true;
return $this->save();
}
}
}
}
?>


使用方法:

复制代码 代码如下:


// ユーザー インスタンスを作成します
$u=new User();
$u->username='jack'; ;password=sha1('gogo');
$u->emailAddr='zjczoo@gmail.com';
$u->save();// このユーザーを保存します
?> ;


コードをコピー コードは次のとおりです:

$ u=User ::getByUsername('jack');//user('jack') を更新
$u->password=sha1('newgogo');
$u->save(); //save new jack
?>

: 確認コードの種類: これは比較的簡単で、自分で画像を追加できます==

コードをコピーします コードは次のとおりです:

//セッションを開始または継続し、
の $_SESSION に CAPTCHA 文字列を保存する必要があります//他のリクエストでも利用できるようにする
if(!isset($_SESSION)){
session_start();
header('Cache-control:private');
// 65*20 ピクセルの画像を作成します
$width=65;
$image=imagecreate(65,20);
//画像の背景色を塗りつぶしますbg_color=imagecolorallocate($image, 0x33,0x66,0xFF);
imagefilledrectangle($image,0,0,$width,$height,$bg_color);
//ランダムなテキストを取得します
$text= random_text(5);
//テキストを中央に配置するための x 座標と y 座標を決定します
$font=5
$x=imagesx($image)/2-strlen($text)*imagefontwidth($font )/2;
$y=imagesy($image)/2-imagefontheight($font)/2;
//画像にテキストを書き込みます
$fg_color=imagecolorallocate($image,0xFF,0xFF, 0xFF);
imagestring ($image,$font,$x,$y,$text,$fg_color);
//後で比較するために CAPTCHA 文字列を保存します
$_SESSION['captcha']= $text;
/ / 画像を出力します
header('Content-type:image/png');
imagedestroy($image)>; ;


さらに、このクラスはrandom_text() 関数を使用します。コードは次のとおりです:



コードをコピーします


は次のとおりです:

< ;?php functionrandom_text($count,$rm_similar=false){ $chars=array_flip(array_merge(range(0,9),range ('A','Z'))); if($rm_similar){

unset($chars[0],$chars[1],$chars[2],$chars[5], $chars[8],$chars['B'], $chars['I'],$chars['O'],$chars['Q'],$chars['S'],$chars[' V'],$chars['Z']);

}
for($i=0,$text='';$i<$count;$i ){
$text.= array_rand($chars);
}
return $text;


データベース クラス:



コードをコピー

コードは次のとおりです:



// データベース接続とスキーマ定数 define('DB_HOST', 'localhost '); define('DB_USER', 'ユーザー名'); define('DB_SCHEMA', 'WROX_DATABASE'); 'DB_TBL_PREFIX', 'WROX_'); // データベースサーバーへの接続を確立します

if (!$GLOBALS['DB'] = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD))

{
die('エラー: データベース サーバーに接続できません。');
}
if (!mysql_select_db(DB_SCHEMA, $GLOBALS['DB']))
{
mysql_close($GLOBALS) ['DB']);
die('エラー: データベース スキーマを選択できません。');
}
?>


SQL ステートメント:



コードをコピーします

コードは次のようになります:

DROP TABLE IF EXISTS WROX_PENDING;
DROP TABLE IF EXISTS WROX_USER; ) NOT NULL, PASSWORD CHAR(40) NOT NULL、
EMAIL_ADDR VARCHAR(100) NOT NULL、

IS_ACTIVE TINYINT(1) DEFAULT 0、主キー (USER_ID) ) ENGINE=MyISAM DEFAULT CHARACTER SET gb2312 COLLATE gb2312_chinese_ci AUTO_INCREMENT=0;

CREATE TABLE WROX_PENDING (

USER_ID INTEGER UNSIGNED PRIMARY KEY NOT NULL、
TOKEN NOT CHAR(10)
CREATED_DATE TIMESTAMP DEFAULT CU RRENT_TIMESTAMP、
FOREIGN KEY (USER_ID)
REFERENCES WROX_USER(USER_ID)
)
ENGINE=MyISAM デフォルト文字セット gb2312
COLLATE gb2312_chinese_ci >

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。

PHPでHTML/XMLを解析および処理するにはどうすればよいですか? PHPでHTML/XMLを解析および処理するにはどうすればよいですか? Feb 07, 2025 am 11:57 AM

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

Deepseekの公式ウェブサイトの入り口と最新のプロモーションアクティビティ Deepseekの公式ウェブサイトの入り口と最新のプロモーションアクティビティ Feb 19, 2025 pm 05:15 PM

Deepseekの公式Webサイトは現在、ユーザーにショッピングエクスペリエンスを提供するための複数の割引アクティビティを開始しています。新規ユーザーはサインアップして10ドルのクーポンを取得し、視聴者全員に15%の限定時間割引を享受します。友人は報酬を獲得することもできます。また、買い物時に贈り物を償還するためにポイントを蓄積することができます。イベントの締め切りは違う。

CakePHP の役立つリソース CakePHP の役立つリソース Sep 10, 2024 pm 05:27 PM

次のリソースには、CakePHP に関する追加情報が含まれています。より深い知識を得るためにぜひご活用ください。

母音を文字列にカウントするPHPプログラム 母音を文字列にカウントするPHPプログラム Feb 07, 2025 pm 12:12 PM

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

See all articles