ホームページ バックエンド開発 PHPチュートリアル CI フレームワークのソース コードの読み取り----------Input.php_PHP チュートリアル

CI フレームワークのソース コードの読み取り----------Input.php_PHP チュートリアル

Jul 14, 2016 am 10:09 AM
defined direct php フレーム ソースコード 読む

[php]

/** 
* コードイグナイター
*
* PHP 5.1.6 以降用のオープンソース アプリケーション開発フレームワーク
*
* @package CodeIgniter
* @author ExpressionEngine 開発チーム
* @copyright Copyright (c) 2008 - 2011, EllisLab, Inc.
* @license http://codeigniter.com/user_guide/license.html
* @link http://codeigniter.com
* @since バージョン 1.0
* @filesource
 */
// ----------------------------------------------- --- --------------------------
/** 
* 入力クラス
*
* セキュリティのためにグローバル入力データを前処理します
*
* @package CodeIgniter
* @subpackage ライブラリ
* @category 入力
* @author ExpressionEngine 開発チーム
* @link http://codeigniter.com/user_guide/libraries/input.html
 */
クラス CI_Input {
/**
* 現在のユーザーの IP アドレス
* 現在のユーザーの IP アドレス
* @var 文字列
*/
var $ip_address = FALSE;
/**
* 現在のユーザーが使用しているユーザーエージェント (Web ブラウザー)
* 現在のユーザー (Web ブラウザー) プロキシ
* @var 文字列
*/
var $user_agent = FALSE;
/**
* FALSE の場合、$_GET は空の配列に設定されます
* FALSE の場合、$_GET は空の配列に設定されます
* @var bool
*/
var $_allow_get_array = TRUE
/**
* TRUEの場合、改行は標準化されます
* TRURの場合、新しい行は正規化されます
*
* @var bool
*/
var $_standardize_newlines = TRUE
/**
* GET、POST、または COOKIE データが発生したときに XSS フィルターを常にアクティブにするかどうかを決定します
* 構成設定に基づいて自動的に設定されます
* GET、POST、COOKIE データで常に XSS フィルタリングを実行するかどうかを決定します
* 設定オプションで自動的にオンにするかどうかを設定します
*
* @var bool
*/
var $_enable_xss = FALSE;
/** 
* CSRF Coo​​kie トークンの設定を有効にします。 
* 構成設定に基づいて自動的に設定されます
* 允许CSRF cookie令牌
*
* @var bool
     */
var $_enable_csrf = FALSE;
/**
* すべてのHTTPリクエストヘッダーのリスト
* HTTPリクエストヘッダーのリスト
* @var 配列
*/
protected $headers = array();
/**
* コンストラクター
* XSS処理をグローバルに許可するかどうか、および$_GET配列の使用を許可するかどうかを設定します
* XSS処理をグローバルに有効にするかどうかを設定します
* そして $_GET 配列を許可するかどうか
*
* @return void
*/
パブリック関数 __construct()
{
Log_message('debug', "入力クラスが初期化されました");
// $_GET XSS フィルタリングと csrf 保護をグローバルに許可するかどうかを構成ファイルから取得します
$this->_allow_get_array = (config_item('allow_get_array') === TRUE);
$this->_enable_xss = (config_item('global_xss_filtering') === TRUE);
$this->_enable_csrf = (config_item('csrf_protection') === TRUE);
// globals_register をオンにすると、この設定をオフにすることと同じになります。
// セキュリティ保護をオンにする
グローバル $SEC
$this->security =& $SEC;
// UTF-8 クラスは必要ですか?
if (UTF8_ENABLED === TRUE)
グローバル $UNI
$this->uni =& $UNI;
}
// グローバル配列をサニタイズします
$this->_sanitize_globals();
}
// ----------------------------------------------- --- --------------------------
/**
* 配列から取得します
* $array から値を取得し、xss_clean が設定されている場合はフィルターします
* これはグローバル配列から値を取得するためのヘルパー関数です
* これはグローバル配列から取得するために使用されるヘルパー関数です
*
*@アクセス非公開
* @param配列
* @パラメータ文字列
* @param bool
* @戻り文字列
*/
関数 _fetch_from_array(&$array, $index = '', $xss_clean = FALSE)
{
if ( ! isset($array[$index]))
FALSE を返します。
}
if ($xss_clean === TRUE)
$this->security->xss_clean($array[ $インデックス]);
}
️ -- $ を返す配列[$index]
}
// ----------------------------------------------- --- --------------------------
/**
* GET 配列から項目を取得します
* フィルタリングされた GET 配列を取得します
* @アクセス公開
* @パラメータ文字列
* @param bool
* @戻り文字列
*/
関数 get($index = NULL, $xss_clean = FALSE)
{
// フィールドが提供されているかどうかを確認します
// フィールドが提供されているかどうかを確認します
if ($index === NULL AND ! emptyempty($_GET))
$get = array();
// _GET 配列全体をループします
// 遍历_GET数组
foreach (array_keys($_GET) as $key)
{
$get[$key] = $this->_fetch_from_array($_GET, $key, $xss_clean);  
}
$get; を返す  
}
return $this->_fetch_from_array($_GET, $index, $xss_clean);  
}
// ----------------------------------------------- ---------------------
/**
* POST 配列から項目を取得します
* フィルターされた $_POST 値を取得します
* @アクセス公開
* @パラメータ文字列
* @param bool
* @戻り文字列
*/
関数 post($index = NULL, $xss_clean = FALSE)
{
// フィールドが提供されているかどうかを確認します
if ($index === NULL AND ! emptyempty($_POST))
{
$post = array();  
// _POST 配列全体をループして返します
foreach (array_keys($_POST) as $key)
{
$post[$key] = $this->_fetch_from_array($_POST, $key, $xss_clean);  
}
$post を返します。  
}
return $this->_fetch_from_array($_POST, $index, $xss_clean);  
}
// ----------------------------------------------- ---------------------
/** 
* GET 配列または POST から項目をフェッチします
* 从get和post中获取值、post优先
* @access public
* @param string インデックスキー
* @param bool XSS クリーニング
* @return 文字列
   */
function get_post($index = '', $xss_clean = FALSE)
{
if ( ! isset($_POST[$index]) )
{
return $this->get($index, $xss_clean);  
}
その他
{
return $this->post($index, $xss_clean);  
}
}
// ----------------------------------------------- ---------------------
/**
* COOKIE 配列から項目を取得します
* フィルタリングされた COOKIE 値を返します
* @アクセス公開
* @パラメータ文字列
* @param bool
* @戻り文字列
*/
関数 cookie($index = '', $xss_clean = FALSE)
{
return $this->_fetch_from_array($_COOKIE, $index, $xss_clean);  
}
// ----------------------------------------------- ------------------------
/**
* クッキーを設定します
*
* 6 つのパラメータを受け入れるか、関連付けを送信できます
* すべての値を含む最初のパラメータの配列。
* 6つのパラメータを受け取るか、すべての値を含む連想配列を受け取ります
* @アクセス公開
* @param混合
* @param string クッキーの値
* @param 文字列は有効期限が切れるまでの秒数
* @param 文字列 Cookie ドメイン: 通常: .yourdomain.com
* @param クッキーのパスを文字列化します
* @param string Cookie プレフィックス
* @param bool true は Cookie を安全にします
* @return void
*/
関数 set_cookie($name = '', $value = '', $expire = '', $domain = '', $path = '/', $prefix = '', $secure = FALSE)
{
️ // 最初の値が配列の場合、配列内の値を残りのパラメーターに割り当てます
if (is_array($name))
// $$アイテムのためにループが壊れるので、常に「名前」を最後の場所に残してください。
foreach (array('value', 'expire', 'domain', 'path', 'prefix', 'secure', 'name') as $item)
$$item = $name[$item];
}
}
}
// パラメータがデフォルト値であるが、config.php の設定がデフォルト値ではない場合
F // config.php の設定値を使用します
if ($prefix == '' AND config_item('cookie_prefix') != '')
$prefix = config_item('cookie_prefix');
}
if ($domain == '' AND config_item('cookie_domain') != '')
$domain = config_item('cookie_domain');
}
if ($path == '/' AND config_item('cookie_path') != '/')
$path = config_item('cookie_path');
}
if ($secure == FALSE AND config_item('cookie_secure') != FALSE)
$secure = config_item('cookie_secure');
}
if ( ! is_numeric($expire))
$expire = time() - 86500;
}
その他
$expire = ($expire > 0) time() + $expire : 0;
}
setcookie($prefix.$name, $value, $expire, $path, $domain, $secure);
}
// ----------------------------------------------- --- --------------------------
/**
* SERVER 配列から項目を取得します
* フィルタリングされた $_SERVER 値を返します
* @アクセス公開
* @パラメータ文字列
* @param bool
* @戻り文字列
*/
関数サーバー($index = '', $xss_clean = FALSE)
{
return $this->_fetch_from_array($_SERVER, $index, $xss_clean);  
}
// ----------------------------------------------- ---------------------
/**
* IP アドレスを取得します
* 現在のユーザーの IP を返します。 IP アドレスが無効な場合は、IP 0.0.0.0 を返します:
* @戻り文字列
*/
パブリック関数 ip_address()
{
// 如果已经有了ip_address 则返
if ($this->ip_address !== FALSE)
{
$this->ip_address; を返す  
}
$proxy_ips = config_item('proxy_ips');  
if ( ! emptyempty($proxy_ips))
{
$proxy_ips =explode(',', str_replace(' ', '', $proxy_ips));  
foreach (array('HTTP_X_FORWARDED_FOR', 'HTTP_CLIENT_IP', 'HTTP_X_CLIENT_IP', 'HTTP_X_CLUSTER_CLIENT_IP') as $header)
{
if (($spoof = $this->server($header)) !== FALSE)
{
// 一部のプロキシは通常、IP チェーン全体をリストします
// クライアントが当社に連絡した際に経由したアドレス。  
// 例: client_ip、proxy_ip1、proxy_ip2 など
if (strpos($spoof, ',') !== FALSE)
{
$spoof =explode(',', $spoof, 2);  
$spoof = $spoof[0];  
}
if ( ! $this->valid_ip($spoof))
{
$spoof = FALSE;  
}
その他
{
休憩。  
}
}
}
$this->ip_address = ($spoof !​​== FALSE && in_array($_SERVER['REMOTE_ADDR'], $proxy_ips, TRUE))
? $spoof : $_SERVER['REMOTE_ADDR'];  
}
その他
{
$this->ip_address = $_SERVER['REMOTE_ADDR'];  
}
if ( ! $this->valid_ip($this->ip_address))
{
$this->ip_address = '0.0.0.0';  
}
$this->ip_address; を返す  
}
// ----------------------------------------------- ---------------------
/**
* IP アドレスを検証します
* 入力された IP アドレスが有効かどうかをテストし、ブール値 TRUE または FALSE を返します。
* 注: $this->input->ip_address() は、入力された IP アドレス自体の形式が有効かどうかを自動的にテストします。
* @アクセス公開
* @パラメータ文字列
* @param 文字列 ipv4 または ipv6
* @return bool
*/
パブリック関数 valid_ip($ip, $that = '')
{
$that = strto lower($that);  
// まず、filter_var が利用可能かどうかを確認します
if (is_callable('filter_var'))
{
switch ($that) {
case 'ipv4':
$flag = FILTER_FLAG_IPV4;  
休憩。  
case 'ipv6':
$flag = FILTER_FLAG_IPV6;  
休憩。  
デフォルト:
$flag = '';  
休憩。  
}
return (bool) filter_var($ip, FILTER_VALIDATE_IP, $flag);  
}
if ($どれ !== 'ipv6' && $どれ !== 'ipv4')
{
if (strpos($ip, ':') !== FALSE)
{
$that = 'ipv6';  
}
elseif (strpos($ip, '.') !== FALSE)
{
$that = 'ipv4';  
}
その他
{
FALSE を返します。  
}
}
$func = '_valid_'.$that;  
return $this->$func($ip);  
}
// ----------------------------------------------- ---------------------
/**
* IPv4 アドレスを検証します
* 验证ipv4地址
* Geert De Deckere によって提案された更新バージョン
*
* @access protected
* @param 文字列
* @return bool
*/
保護された関数 _valid_ipv4($ip)
{
$ip_segments =explode('.', $ip);  
// 常に 4 つのセグメントが必要
if (count($ip_segments) !== 4)
{
FALSE を返します。  
}
// IP を 0 で始めることはできません
if ($ip_segments[0][0] == '0')
{
FALSE を返します。  
}
// 各セグメントを確認します
foreach ($ip_segments を $segment として)
{
// IP セグメントは数字である必要があり、
// 3 桁より長い、または 255 より大きい
if ($segment == '' OR preg_match("/[^0-9]/", $segment) OR $segment > 255 OR strlen($segment) > 3)
{
FALSE を返します。  
}
}
TRUE を返します。  
}
// ----------------------------------------------- ---------------------
/**
* IPv6 アドレスを検証する
* IPv6 アドレスを確認します
* @access 保護されています
* @パラメータ文字列
* @return bool
*/
保護された関数 _valid_ipv6($str)
{
// 8 つのグループ、次のように区切られます:
// グループごとに 0 ~ ffff
// 連続する 0 グループの 1 セットは ::
に折りたたむことができます
$groups = 8;  
$collapsed = FALSE;  
$chunks = array_filter(
preg_split('/(:{1,2})/', $str, NULL, PREG_SPLIT_DELIM_CAPTURE)
);  
// 簡単なナンセンスを除外する
if (current($chunks) == ':' OR end($chunks) == ':')
{
FALSE を返します。  
}
// PHP は IPv4 にマップされた IPv6 アドレスをサポートしているため、それらも期待されます
if (strpos(end($chunks), '.') !== FALSE)
{
$ipv4 = array_pop($chunks);  
if ( ! $this->_valid_ipv4($ipv4))
{
FALSE を返します。  
}
$groups--;  
}
while ($seg = array_pop($chunks))
{
if ($seg[0] == ':')
{
if (--$groups == 0)
{
FALSE を返します。   // グループが多すぎます
}
if (strlen($seg) > 2)
{
FALSE を返します。   // 長い区切り文字
}
if ($seg == '::')
{
if ($collapsed)
{
FALSE を返します。   // 複数の折りたたみ
}
$collapsed = TRUE;  
}
}
elseif (preg_match("/[^0-9a-f]/i", $seg) OR strlen($seg) > 4)
{
FALSE を返します。 // 無効なセグメント
}
}
$collapsed OR $groups == 1; を返します。  
}
// ----------------------------------------------- ---------------------
/**
* ユーザーエージェント
* ユーザーが現在使用しているブラウザのユーザーエージェント情報を返します。 データが取得できない場合はFALSEを返します。
* 一般に、user_agent が空の場合、モバイルアクセス、またはカールクローリング、またはスパイダークローリングとみなされます
* @アクセス公開
* @戻り文字列
*/
関数 user_agent()
{
if ($this->user_agent !== FALSE)
{
return $this->user_agent;  
}
$this->user_agent = ( ! isset($_SERVER['HTTP_USER_AGENT'])) ? FALSE : $_SERVER['HTTP_USER_AGENT'];  
return $this->user_agent;  
}
// ----------------------------------------------- ---------------------
/**
* グローバルをサニタイズする
* グローバル配列をクリーンアップします
* この関数は次のことを行います:
* この関数は次の操作を実行します:
* $_GET データの設定を解除します (クエリ文字列が有効になっていない場合)
* $_GET を破棄します (クエリ文字列が有効になっていない場合)
* register_globals が有効な場合は、すべてのグローバルの設定を解除します
* register_globals がオンになっている場合は、すべてのグローバル配列を破棄します
*
* 改行文字を n に標準化します
* 標準化された改行文字 n
*@アクセス非公開
* @return void
*/
関数 _sanitize_globals()
{
// これらのグローバルのいずれかを設定解除するのは「間違っています」。  
// 以下の全局数セットは、危険です。
$protected = array('_SERVER', '_GET', '_POST', '_FILES', '_REQUEST',
to ️ 'system_folder'、'application_folder'、 、「外部」、
'CFG'、'URI'、'RTR'、'OUT'、'IN');
// 上記以外のグローバル配列を安全に破棄するために、セキュリティのグローバルの設定を解除します。
// これは事実上 register_globals = off と同じです
// この効果は register_globals と同じです
// 以下の処理後、保護されていないグローバル変数はすべて削除されます
foreach (array($_GET, $_POST, $_COOKIE) as $global)
if ( ! is_array($global))
if ( ! in_array($global, $protected))
グローバル $$グローバル
$$global = NULL;
}
}
その他
foreach ($global as $key => $val)
グローバル $$key
$$key = NULL; ️
}
}
}
// $_GET データは許可されますか? 許可されない場合は、$_GET を空の配列に設定します
// $_GET データは許可されますか? 許可されない場合は、$_GET を空の配列に設定します
if ($this->_allow_get_array == FALSE)
$_GET = array();
}
その他
if (is_array($_GET) AND count($_GET) > 0)
foreach ($_GET as $key => $val)
$_GET[$this->_clean_input_keys($key)] = $this->_clean_input_data($val);
}
}
}
// $_POST データをクリーンアップします
// $_POST 配列をフィルタリングします
if (is_array($_POST) AND count($_POST) > 0)
foreach ($_POST as $key => $val)
$_POST[$this->_clean_input_keys($key)] = $this->_clean_input_data($val);
}
}
// $_COOKIE データをクリーンアップ
// 过滤$_COOKIE数组
if (is_array($_COOKIE) AND count($_COOKIE) > 0)
{
// サーバーによって設定される可能性のある特別に処理された Cookie も削除します
// または、いずれにしても CI アプリケーションには役に立たない愚かなアプリケーション
// ただし、これが存在すると、「禁止されているキー文字」アラームが作動します
// http://www.ietf.org/rfc/rfc2109.txt
// 以下のキー名は一重引用符で囲まれた文字列であり、PHP 変数ではないことに注意してください
unset($_COOKIE['$Version']);  
unset($_COOKIE['$Path']);  
unset($_COOKIE['$Domain']);  
foreach ($_COOKIE as $key => $val)
{
$_COOKIE[$this->_clean_input_keys($key)] = $this->_clean_input_data($val);  
}
}
// PHP_SELF をサニタイズ
$_SERVER['PHP_SELF'] =trip_tags($_SERVER['PHP_SELF']);  
// HTTP リクエストの CSRF 保護チェック
// CSRF保护检测http请要求
if ($this->_enable_csrf == TRUE && ! $this->is_cli_request())
{
$this->security->csrf_verify();  
}
log_message('debug', "グローバル POST および COOKIE データはサニタイズされました");  
}
// ----------------------------------------------- ---------------------
/** 
* クリーンな入力データ
* 过滤入力データ
* これはヘルパー関数です。データをエスケープし、
* 改行文字を n に標準化します
*
* @access プライベート
* @param 文字列
* @return 文字列
   */
function _clean_input_data($str)
{
if (is_array($str))
{
$new_array = array();  
foreach ($str as $key => $val)
{
$new_array[$this->_clean_input_keys($key)] = $this->_clean_input_data($val);  
}
$new_array を返します。  
}
/* 一貫性を保つためにマジック引用符がオンになっている場合はスラッシュを削除します
バージョンが PHP5.4 未満で、get_magic_quotes_gpc が許可されている場合は、斜線を削除します。
注: PHP 5.4 では、get_magic_quotes_gpc() は常に 0 を返し、
将来のバージョンではおそらくまったく存在しなくなるでしょう。
注意: PHP5.4 以降のバージョン、get_magic_quotes_gpc() 将总是返0、
この機能は後続のバージョンで削除される可能性があります
if ( ! is_php('5.4') && get_magic_quotes_gpc())
$str = ストリップスラッシュ($str);
}
// サポートされている場合は UTF-8 をクリーンアップします utf8 のクリーンアップがサポートされている場合は
if (UTF8_ENABLED === TRUE)
$str = $this->uni->clean_string($str);
}
// 制御文字を削除します
$str = 非表示文字を削除($str);
// 入力データをフィルタリングする必要がありますか?
if ($this->_enable_xss === TRUE)
$str = $this->security->xss_clean($str);
}
// 必要に応じて改行を標準化します
if ($this->_standardize_newlines == TRUE)
if (strpos($str, "r") !== FALSE)
$str = str_replace(array("rn", "r", "rnn"), PHP_EOL, $str);
}
}
戻る
}
// ----------------------------------------------- --- --------------------------
/** 
* クリーンキー
* 过滤键值
* これはヘルパー関数です。悪意のあるユーザーを防ぐため
* キーを悪用しようとすることから、キーが
* 英数字テキストとその他のいくつかの項目のみで名前が付けられます。 
*
* @access プライベート
* @param 文字列
* @return 文字列
   */
関数 _clean_input_keys($str)
{
if ( ! preg_match("/^[a-z0-9:_/-]+$/i", $str))
exit('使用できないキー文字')
}
// サポートされている場合は UTF-8 をクリーンアップします
if (UTF8_ENABLED === TRUE)
$str = $this->uni->clean_string($str);
}
戻る
}
// ----------------------------------------------- --- --------------------------
/** 
* リクエストヘッダー
* 要求头(ヘッダー)の数を返します。
* Apache では、単純に apache_request_headers() を呼び出すことができますが、
* 他の Web サーバーを実行している人は、関数が未定義です。 
*
* @param bool XSS クリーニング
*
* @return 配列
     */
パブリック関数 request_headers($xss_clean = FALSE)
{
// Apache を見てみよう
if (function_exists('apache_request_headers'))
{
$headers = apache_request_headers();  
}
その他
{
$headers['Content-Type'] = (isset($_SERVER['CONTENT_TYPE'])) ? $_SERVER['CONTENT_TYPE'] : @getenv('CONTENT_TYPE');  
foreach ($_SERVER as $key => $val)
{
if (strncmp($key, 'HTTP_', 5) === 0)
{
$headers[substr($key, 5)] = $this->_fetch_from_array($_SERVER, $key, $xss_clean);  
}
}
}
// SOME_HEADER を取得して Some-Header に変換します
foreach ($headers as $key => $val)
{
$key = str_replace('_', ' ', strto lower($key));  
$key = str_replace(' ', '-', ucwords($key));  
$this->headers[$key] = $val;  
}
$this->headers を返します。  
}
// ----------------------------------------------- ---------------------
/**
* リクエストヘッダーを取得する
* リクエストヘッダー配列内の要素の値を返します
* ヘッダー クラス メンバーの単一メンバーの値を返します
*
* $this->headers の @param 文字列配列キー
* @param boolean XSS クリーンかどうか
* @return 失敗した場合は混合 FALSE、成功した場合は文字列
*/
パブリック関数 get_request_header($index, $xss_clean = FALSE)
{
if (emptyempty($this->headers))
{
$this->request_headers();  
}
if ( ! isset($this->headers[$index]))
{
FALSE を返します。  
}
if ($xss_clean === TRUE)
{
return $this->security->xss_clean($this->headers[$index]);  
}
return $this->headers[$index];  
}
// ----------------------------------------------- ---------------------
/** 
* ajaxリクエストですか?  
* ajax请要求であるかどうか判断します
* リクエストに HTTP_X_REQUESTED_WITH ヘッダーが含まれているかどうかをテストします
*
* @return boolean
     */
パブリック関数 is_ajax_request()
{
return ($this->server('HTTP_X_REQUESTED_WITH') === 'XMLHttpRequest');  
}
// ----------------------------------------------- ---------------------
/**
* クリリクエストですか?
* リクエストが cli からのものであるかどうかを判断します
* リクエストがコマンドラインから行われたかどうかを確認するテスト
*
* @return bool
*/
パブリック関数 is_cli_request()
{
return (php_sapi_name() === 'cli' OR generated('STDIN'));  
}
}
/* ファイルの終わり Input.php */
/* 場所: ./system/core/Input.php */

http://www.bkjia.com/PHPjc/477658.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/477658.html技術記事 [php] ?php if ( !定義(BASEPATH)) exit(スクリプトへの直接アクセスは許可されません); /** * CodeIgniter * * PHP 5.1.6 以降用のオープンソース アプリケーション開発フレームワーク * * @packag...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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 にアップグレードする方法について説明します。

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 は、

今まで知らなかったことを後悔している 7 つの PHP 関数 今まで知らなかったことを後悔している 7 つの PHP 関数 Nov 13, 2024 am 09:42 AM

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

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

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

JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 JSON Web Tokens(JWT)とPHP APIでのユースケースを説明してください。 Apr 05, 2025 am 12:04 AM

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

母音を文字列にカウントする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元があります

PHPでの後期静的結合を説明します(静的::)。 PHPでの後期静的結合を説明します(静的::)。 Apr 03, 2025 am 12:04 AM

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? PHPマジックメソッド(__construct、__destruct、__call、__get、__setなど)とは何ですか? Apr 03, 2025 am 12:03 AM

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。

See all articles