ホームページ  >  記事  >  バックエンド開発  >  PHP初心者の間違いセット

PHP初心者の間違いセット

巴扎黑
巴扎黑オリジナル
2016-11-23 10:34:291211ブラウズ

開発を行うときは、すべてのエラー プロンプトをオンにしてください: error_reporting = E_ALL | E_STRICT
エラー プロンプトをブロックすることは、耳を隠してベルを盗むことと同じです。
標準化された方法でコードを作成すると、エラーが半分に減ります。

1: 変数を取得できないのはなぜですか?

ある Web ページから別の Web ページにデータ名を POST するのに、$name を出力すると値を取得できないのはなぜですか?

PHP4.2 以降のバージョンの場合register_global のデフォルトは off です
別のページから送信された変数を取得したい場合:

方法 1: PHP.ini で register_global を見つけて on に設定します。
方法 2: この extract($_POST) を先頭に置きます。受信側 Web ページ; extract($_GET);(extract($_SESSION) の前に Session_Start() が必要であることに注意してください)。
//extract ( array $var_array [, int $extract_type [, string $prefix ]] )

//この関数は、配列から現​​在のシンボル テーブルに変数をインポートするために使用されます。連想配列 var_array を引数として受け入れ、キー //name を変数名として、値を変数の値として使用します。キーと値のペアごとに、 //extract_type パラメーターと prefix パラメーターの影響を受ける変数が現在のシンボル テーブルに作成されます。
//import_request_variables ( string $types [, string $prefix ] ) はスーパーグローバルであり、$_ $* に抜け穴があります

方法 3: 変数を 1 つずつ読み取る $a=$_GET["a"];$b= $_POST["b"] など。この方法は面倒ですが、安全です。

2: プログラムをデバッグする

実行時に特定の変数の値を知っておく必要があります。これが私がやったことです。debug.php ファイルを作成します。その内容は次のとおりです:

PHP コード: ------------------------ -------------------------------------------------- -- --

コードをコピー

Ob_Start();
Session_Start();
Echo "

";<br/> Echo "このページで取得される _GET 変数は次のとおりです:";<br/> Print_R($_GET);<br/> Echo " このページで取得される _POST 変数は次のとおりです: ";<br/> Print_R($_POST);<br/> Echo "このページで取得される _COOKIE 変数は次のとおりです: ";<br/> Print_R($_COOKIE);<br/> Echo "このページで取得される _SESSION 変数ページは :";<br/> Print_R($_SESSION);<br/> Echo "
";



---------------------- -------------------------------------------------- -- ----

次に、php.ini で include_path = "c:/php" を設定し、このフォルダーに debug.php を置きます。
今後はこのファイルをすべての Web ページに含めて、結果の変数を表示できます。名前と値。

3: session の使用方法

セッションに関連するすべてのものは、その前に関数 session_start() を呼び出す必要があります。

セッションの値の支払いは、次のように非常に簡単です:


PHP コード: ---- --- --------------------------------------------------- --- --------------------------

php4.2以降は、セッション料金を直接支払うことができます:

PHPコード:- ----- -------------------------------------- ----- ------------------------

[php]
Session_Start();
$_SESSION["name"]= "値";
[/php]

-------------------------------------- ---------- ----------------------------------

このようにセッションをキャンセルします:

PHP コード:---- -------------------------------------- ---------- ------------------------

[php]
session_start();
session_unset() ;
session_destroy();
[/php]

------------------------------------- ------------- ----------------------------------


php4.2 以降では、特定のセッション変数をキャンセルする際にバグがあります。



注:

1: Session_Start() を呼び出す前に出力を行うことはできません。たとえば、以下は間違っています。 ===================== ====================
1行
2行 [php]
3 行 Session_Start();//最初の行の前にすでに出力がありました
4 行....
5 行[/php]
================ ======================== ====


ヒント 1:

「...ヘッダーはすでに送信されました...」が表示されるたびに、これは、Session_Start()の前にブラウザに情報が出力されていることを意味します。
出力を削除すれば正常になります。 (このエラーはCOOKIEでも発生し、エラーの原因は同じです)

ヒント2:

Session_Start() がループ ステートメント内に配置されており、情報が以前にブラウザーに出力された場所を特定するのが難しい場合は、次の方法を使用できます。
1 line [php] Ob_Start();
....これがあなたのプログラムです...



2: エラーは何ですか?

警告: session_start(): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) が失敗しました:....
セッション ファイルの保存パスを指定します。

解決策:
(1) C ドライブに tmp フォルダーを作成します
( 2) php.ini を開き、session.save_path を見つけて、それを session.save_path= "c: /tmp"



4: 変数を別の Web ページに送信すると、変数の前半とスペースで始まる部分だけが取得されるのはなぜですか? すべてが失われています


PHP コード:----- -------------------------------------- ---------- ----------------------------

[php]
$Var="hello php ";//$Var に変更します=" hello php"; 結果を取得してみます。$post= "receive.php?Name=".$Var;
header("location:$post");
[/php]

----------------- -------------------------------------------------- -------------

receive.php 内容:

PHP コード:---------- ---- ------------------------------------------------ ---- --

[php]
Echo "
";<br/>Echo $_GET["Name"];<br/>Echo "
";
[/php]

--- ---- ------------------------------------------------ ---- ------------------------


正しい方法は次のとおりです:

PHP コード:---------- ----- -------------------------------------- ----- ---------------

[php]
$Var="hello php";
$post= "receive.php?Name=".urlencode($Var);
header ("location:$post");
[/php]

-------------------------------- -- ------------------------------------------------ -


受信ページで Urldecode() を使用する必要はありません。変数は自動的にエンコードされます。


5: "[/php]" で終わらずに指定された長さの中国語文字をインターセプトする方法、および余分な部分は "..." で終わります


一般に、インターセプトされる変数は Mysql からのものです。まず、フィールドの長さが十分な長さであることを確認します (通常は char(200))。これには 100 文字の中国語文字を保持できます。 、句読点を含む

PHP コード: --- -------------------------------------- ------------ ------------------------

[php]
$str="このキャラクターとても長いです、^_^";
$ Short_Str=showShort($str,4);//最初の 4 つの中国語文字をインターセプトすると、結果は次のようになります: この文字...
Echo "$Short_Str";
Function csubstr( $str,$start,$len)
{
$ strlen=strlen($str);
$clen=0;
for($i=0;$i{
if ($clen>=$start+$len)
break ;
if(ord(substr($str,$i,1))>0xa0)
{
if ($clen>=$start)
$tmpstr. =substr($str,$i,2);
$i++;
}
else
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,1);
}
}

return $tmpstr;
}
関数 showShort ($str,$len)
{
$tempstr = csubstr($str,0,$len);
if ($str<>$tempstr)
$ tempstr .= "..." //終わりについては、ここを変更するだけです。

return $tempstr;
}

------ -------------------------------------------------------- ----



6: SQL ステートメントを標準化します


キーワードの誤用によるエラーが発生しないように、テーブルやフィールドの前に「`」を追加します。
もちろん、使用することはお勧めしませんキーワード。

例:
$Sql="INSERT INTO `xltxlm` (`author`, `title`, `id`, `content`, `date`) VALUES ('xltxlm', 'use`', 1, 'criterion your SQL string ' , '2003-07-11 00:00:00')"

"`"入力方法は? TAB キーです。


7: Html/PHP 形式の文字列を防ぐ方法解釈されませんが、そのまま表示


PHPコード:------------------------------------- ---------- --------------------------------------

[php]
$str="";
Echo "解釈されました: ".$str."
処理されました:";
Echo htmlentities(nl2br($str)) ;
[/php]

nl2br() 関数は、文字列内の各改行 (n) の前に HTML 改行文字 (
) を挿入します。
htmlentities(string,quotestyle,character-set)


quotestyle はオプションです。一重引用符と二重引用符をエンコードする方法を指定します。

ENT_COMPAT - デフォルト。二重引用符のみがエンコードされます。
ENT_QUOTES - 二重引用符と一重引用符をエンコードします。
ENT_NOQUOTES - 引用符をエンコードしません。

character-set

ISO-8859-1 - デフォルト。西ヨーロッパ。
ISO-8859-15 - 西ヨーロッパ (ユーロ記号とフランス語とフィンランド語の文字を追加)。
UTF-8 - ASCII 互換のマルチバイト 8 ビット Unicode
cp866 - DOS 固有のキリル文字セット
cp1251 - Windows 固有のキリル文字セット
cp1252 - Windows 固有の西ヨーロッパ文字セット
KOI8-R - ロシア語
GB2312 - 簡体字中国語、国の標準文字セット
BIG5 - 繁体字中国語
------------------------------------------------- ----- --------------------------------------



8:関数内での取得方法 関数外の変数値


PHPコード:-------------------------------- ------------------------ -------------------------------------------- ---

[php]
$a= "PHP";
foo();
Function foo()
{
global $a;//ここを削除して結果を確認してください
Echo "$a";
}
[/php]

---- ------------------------------------- ------------- ------------------------



9: 何をどうやって知ることができますかシステムがデフォルトでサポートする関数


PHP コード:---- ---------------------------------- ---------------- ------------------------

[php]
$arr = get_dependent_functions();
Function php() {
}
echo "
";<br>Echo "システムでサポートされているすべての関数とカスタム関数 phpn が表示されます";<br>print_r($arr);<br>echo "
";
[/php]
-------- -- ------------------------------------------------ -- ----------


10: 2 つの日付の差を比較する方法


PHP コード:----------- - ------------------------------------------------- - --------------------

[php]
$Date_1="2003-7-15";//次のようにすることもできます:$Date_1="2003- 6-25 23:29:14";
$Date_2="1982-10-1";
$Date_List_1=explode("-",$Date_1);
$Date_List_2=explode("-",$Date_2);
$d1=mktime(0,0,0,$Date_List_1[1],$Date_List_1[2],$Date_List_1[0]);
$d2=mktime(0,0,0,$Date_List_2[1],$ Date_List_2[2],$Date_List_2[0]);
$Days=round(($d1-$d2)/3600/24);
エコー "$Days 日間苦労しました^_^";
[/php ]

(strtotime($Date_1) - strtotime($Date_2))/3600/24
------------------------------------- --- ----------------------------------------------- -


11: PHP をアップグレードした後、元のプログラムが全画面表示になったのはなぜですか 注意: 未定義の変数:


これは、変数が未定義であることが原因で発生する警告です。
php.ini を開いて一番下の error_reporting を見つけ、error_reporting に変更します。 = E_ALL & ~E_NOTICE

解析エラー error
error_reporting(0) をオフにすることはできません。
エラー プロンプトをオフにしたい場合は、php.ini を開いて、display_errors を見つけ、display_errors = Off に設定してください。プロンプトは表示されません

それでは、error_reportingとは何でしょうか?



12: ファイルの先頭と最後にファイルを追加したいのですが、1つずつ追加するのは非常に面倒です

1: phpを開きます。 ini ファイル
Set include_path= "c:"

2: 2 つのファイル
auto_prepend_file.php と auto_append_file.php を作成し、C ドライブに保存すると、各 php ファイルの先頭と末尾に自動的に添付されます

。 3: ini にあります:
PHP ドキュメントの前後にファイルを自動的に追加します。
auto_prepend_file = auto_prepend_file.php; 末尾に添付します

あなたの php ファイルは

PHP コードと同等になります:------------------------------------- ---------- --------------------------------

[php]
「」を含めるauto_prepend_file.php" ;

... ....//プログラムは次のとおりです


Include "auto_append_file.php";
[/php]

------------- ---------------------------------------------------- -------- --------




13: PHP を使用してファイルをアップロードする方法



PHP コード:------------ ----------- -------------------------------------- ----------- -------
[php]

アップロードファイルフォーム
< ;body>

ファイルを選択してください:








$upload_file=$_FILES[ 'upload_file']['tmp_name'];
$upload_file_name=$_FILES['upload_file']['name'];

if($upload_file){
$file_size_max = 1000*1000;//ファイルのアップロード最大数は 1M に制限されます容量(バイト)
$store_dir = "d: /";//アップロードしたファイルの保存場所
$accept_overwrite = 1;//同じファイルの上書きを許可するかどうか
//ファイルサイズを確認する
if ($upload_file_size > $ file_size_max) {
echo "申し訳ありませんが、ファイル容量が規制を超えています";
exit;
}

//ファイルの読み取りと書き込みを確認します
if (file_exists($store_dir . $upload_file_name) && !$accept_overwrite) {
Echo "同じファイル名のファイルが存在します";
exit;
}

//指定されたディレクトリにファイルをコピーします
if (!move_uploaded_file($upload_file,$store_dir.$upload_file_name)) {
echo "ファイルのコピーに失敗しました";
exit;
}

}

Echo "

アップロードしたファイル: ";
echo $_FILES['upload_file']['name'];
echo "
";
/ /クライアントマシンファイルの元の名前。

Echo "ファイルの MIME タイプは次のとおりです:";
echo $_FILES['upload_file']['type'];
//ファイルの MIME タイプ。ブラウザはこの情報をサポートする必要があります。 「画像/GIF」として。
echo "
";

Echo "アップロード ファイル サイズ:";
echo $_FILES['upload_file']['size'];
//アップロードされたファイルのサイズ (バイト単位)。
echo "
";

Echo "ファイルがアップロードされた後、次のように一時的に保存されます:";
echo $_FILES['upload_file']['tmp_name'];
//ファイルのアップロード後にサーバーに保存される一時ファイル名。
echo "
";


$Erroe=$_FILES['upload_file']['error'];
switch($Erroe){
1:

ケース 3: c Echo」ファイルのみアップロード済み"; ブレーク;
ケース 4:
エコー "ファイルはアップロードされていません"; ブレーク;
}
[/pHP]

--------------------- -------------------------------------------------- ------------------------------------------------- - ------------------------------------------------- - -------------------



14: GD ライブラリの設定方法


以下は私の設定プロセスです
1: dos コマンドを使用します (または、手動で実行し、dlls フォルダー内のすべての dll ファイルを system32 ディレクトリにコピーします) c:phpdlls*.dll c:windowssystem32 をコピーします
2: php.ini を開きます
extension_dir = "c:/php/extensions/";
3 を設定します:
extension =php_gd2.dll; php_gd2.dll がない場合は、このファイルが存在することを確認してください。 c:/php/extensions/php_gd2.dll
4 : 次のプログラムを実行して

PHP コードをテストします:------------------------------------- ----------- ----------------------------------

[php]
Ob_end_flush();
//注意、事前にブラウザに情報を出力することはできません。 auto_prepend_file が設定されているかどうかに注意してください。
header ("Content-type: image/png");
$im = @imagecreate (200, 100)
or die ("画像を作成できません" );
$background_color = imagecolorallocate ($im, 0,0, 0);
$text_color = imagecolorallocate ($im, 230, 140, 150);
imagestring ($im, 3, 30, 50, "単純なテキスト文字列", $text_color);
imagepng ($im);
[/php]

-------------- ------------------ -------------------------------- ------------------ -



ここをクリックして結果を表示します



15: UBB コードとは何ですか


UBB コードは HTML の変種です。 Ultimate Bulletin Board (海外の BBS プログラムであり、中国の多くの場所でもこのプログラムが使用されています) で採用されている特別なタグです。
HTML の使用が禁止されている場合でも、UBBCode を使用して実現できます。フォーラムで HTML の使用が許可されている場合でも、HTML の代わりに UBBCode を使用しますか? 使用するコードが少なく、安全であるためです。

Q3boy の UBB にはサンプルがあり、テストを直接実行できます


16: MySQL のユーザーとパスワード

まず最初に、MySQL を変更するには mysql の root 権限が必要であることを宣言しなければなりません
そのため、管理者に要求しない限り、一般ユーザーはパスワードを変更できません

方法 1
phpmyadmin を使用します。最も簡単な方法は、mysql ライブラリのユーザー テーブルを変更することです
ただし、PASSWORD 関数を使用することを忘れないでください。

方法 2
mysqladmin を使用する、これは前述した特殊なケースです。
Mysqladmin -u root -p password mypasswd
このコマンドを入力した後、root の元のパスワードを入力する必要があり、root のパスワードが mypasswd に変更されます。
コマンド内のrootを自分のユーザー名に変更すると、自分のパスワードを変更できます。
もちろん、mysqladmin が mysql サーバーに接続できない場合、または mysqladmin を実行できない場合、
この方法は無効です。
そしてmysqladminはパスワードをクリアできません。

以下のメソッドはすべて mysql プロンプトで使用され、mysql root 権限が必要です:
メソッド 3
mysql> INSERT INTO mysql.user (Host,User,Password)
VALUES('%','jeffrey', PASSWORD( 'biscuit'));
mysql> FLUSH PRIVILEGES
正確には、ユーザー名 jeffrey とパスワード biscuit のユーザーを追加します。
「mysql中国語リファレンスマニュアル」にこの例があったので書き出してみました。
PASSWORD機能を使用してからFLUSH PRIVILEGESを使用することに注意してください。

方法 4
REPLACE ステートメントを使用するだけで、方法 3 と同じです
Mysql> REPLACE INTO mysql.user (Host,User,Password)
VALUES('%','jeffrey',PASSWORD('biscuit')); mysql> FLUSH PRIVILEGES

方法 5
SET PASSWORD ステートメントを使用します
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit');
PASSWORD()関数も使う必要があります
ただし、FLUSH PRIVILEGESを使う必要はありません。

方法6
GRANT... IDENTIFIED BYステートメントを使用する
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit';
ここではPASSWORD()関数は不要です。フラッシュ権限を使用します。

注: PASSWORD() は、Unix パスワード暗号化と同じ方法でパスワード暗号化を実行しません。


17: 彼がどの Web サイトからこのページに接続したのか知りたいです



PHP コード:-------------------------- -------------------------------------------------- ----

[php]
//出力するにはスーパー接続経由で入力する必要があります
Echo $_SERVER['HTTP_REFERER'];
[/php]

---------- -------------------------------------------------- -- ------------------



18: データをデータベースに入れて、それを取り出してページに表示するときに注意することは何ですか

ときデータベースに入るとき
$str=addslashes($str) ;
$sql="「タブ」(`コンテンツ`) 値に挿入('$str')";
ライブラリを離れるとき
$str=stripslashes($str) );
表示時
$str=htmlspecialchars(nl2br( $str)) ;



addslashes()関数は、指定された定義済み文字の前にバックスラッシュを追加します。

これらの事前定義された文字は次のとおりです:

一重引用符 (')
二重引用符 (")
バックスラッシュ()
NULL

stripslashes() 関数は、addslashes() 関数によって追加されたバックスラッシュを削除します。
htmlspecialchars( ) 関数は、いくつかの事前定義された文字を変換しますHTML エンティティへの変換

19: 現在のアドレスバー情報を読み取る方法



PHP コード:---------------------- -------- ------------------------------------------ -------- --

[php]
$s="http://{$_SERVER['HTTP_HOST']}:{$_SERVER["SERVER_PORT"]}{$_SERVER['SCRIPT_NAME' ]}";
$se= '';
foreach ($_GET as $key => $value) {
$se.=$key."=".$value."&";
}
$se =Preg_Replace("/(.* )&$/","$1",$se);
$se?$se="?".$se:"";
echo $s."?$se";
[/php]
-- ------------------------------------------------ -- ----------------------------------




20: 戻るボタンをクリックしました。なぜ前に入力された項目がありません

これはセッションを使用したためです。
解決策:

PHP コード:-------------------------- - ------------------------------------------------- - --

[php]
session_cache_limiter('private,must-revalidate');
session_start();
.......
.......
[ /php 】

---------------------------------------------- - ----------------------------------



21: 写真にIPアドレスを表示する方法


PHPコード:---------------------------------------------- -- ----------------------------------

[php]
Header("Content-type: image /png ");
$img = ImageCreate(180,50);
$ip = $_SERVER['REMOTE_ADDR'];
ImageColorTransparent($img,$bgcolor);
$bgColor = ImageColorAllocate($img, 0x2c,0x6D) ,0xAF ); // 背景色
$shadow = ImageColorAllocate($img, 250,0,0); // 影の色
$textColor = ImageColorAllocate($img, oxff,oxff,oxff); // フォントの色
($ img,10,0,78,30,$shadow,"d:/windows/fonts/Tahoma.ttf",$ip); //背景を表示
ImageTTFText($img,10,0,25,28, $textColor ,"d:/windows/fonts/Tahoma.ttf","あなたの IP は".$ip); // IP を表示
ImagePng($img);
imagecreatefrompng($img);
ImageDestroy($img); ;
[/php]

------------------------------------------ -------- -----------------------------------



22:ユーザーの実際の IP を取得する方法


PHP コード:------------------------------------- ----------- ----------------------------------

[php]
function iptype1 () {
if (getenv( "Http_client_ip") {
Return Getenv ("http_client_ip"); Forwarded_For ")) {
Return Getenv ("HTTP_X_FORWARDED_FOR");
}
else {
return "none";
}
}
function iptype3 () {
if (getenv("REMOTE_ADDR")) {
return getenv("REMOTE_ADDR");
}
else {
Return "none";
}
}
function ip() {
$ip1 = iptype1();
$ip2 = iptype2();
$ip3 = iptype3();
if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") {
return $ip1;
}
elseif (isset($ip2) && $ip2 != "none" && $ ip2 != "不明") {
return $ip2;
}
elseif (isset($ip3) && $ip3 != "なし" && $ip3 != "不明") {
return $ip3;
}
else {
return "none";
}
}

Echo ip();
[/php]
------------------------------------- -------------------------------------------------- ----



23: データベースから 3 日以内のすべてのレコードを読み取る方法

まず第一に、時刻を記録するにはテーブルに DATETIME フィールドが必要です
形式は '2003-7- 15 16:50:00'

SELECT * FROM `xltxlm` WHERE TO_DAYS(NOW()) - TO_DAYS(`date`) <= 3;


24: MySQL データベースにリモート接続する方法


は、ユーザーが追加される mysql テーブルのホスト フィールドです。これを「%」に変更するか、リモートから呼び出すことができるように、接続を許可する IP アドレスを指定します。

$link=mysql_connect("192.168.1.80:3306","root","");


25: 正規表現の使用方法

ここをクリック
正規表現内の特殊文字


26: 後に使用Apache、ホームページに文字化けが表示される


方法1:
AddDefaultCharset ISO-8859-1をAddDefaultCharset offに変更

方法2:
AddDefaultCharset GB2312
================ ==== ======================================
ヒント:
GB2312について説明しますみんながコードを投稿したら

これに変更すればそんなことは起こりません
GB2312

10: 2つの日付間の日数を比較する方法(より単純なアルゴリズム)


PHPコード:----- --- --------------------------------------------------- --- -----------------------

[php]
$Date_1="2003-7-15";//次の場合もあります: $Date_1="2003 -7-15 23:29:14";
$Date_2="1982-10-1";
$d1=strtotime($Date_1);
$d2=strtotime($Date_2);
$ Days=round(( $d1-$d2)/3600/24);
エコー "$Days 日間苦労しました^_^";
[/php]

----------- --------------------- ---------------------------- ------------------------ ---------------
round(123.456,2) = 123.46
ROUND ( numeric_expression , length )

round(123.456,-2) =100

length が正の数の場合、 numeric_expression は length で指定された小数点以下の桁数に丸めます。 length が負の場合、numeric_expression は Length で指定された小数点の左側に基づいて計算されます。 .45)、CEILING(0.0)

以下は結果セットです:

--- ------ ========================================== ====== ================

27: 受付ページで一重引用符と二重引用符が ('") になるのはなぜですか


解決策:
方法 1 : php.ini の設定: magic_quotes_gpc = Off
方法 2: $str=stripcslashes($str)


28: 30 秒以上経過してもプログラムを停止せずに実行し続ける方法


set_time_limit(60)//最大実行時間 1 分
set_time_limit(0)//プログラムが自動的に終了するまで実行するか、手動で停止します


29: 現在オンラインの人数を計算します

例 1: テキストを使用して実装します

PHP コード:- ---------------------------------------------------- --------- -------------------

[php]
//まず、ファイルの読み取りと書き込みの権限が必要です
//これプログラムは直接実行できますが、最初はエラーが報告されます。後で実行できます
$online_log = "count.dat" //人数分のファイルを保存します
$timeout = 30; 30 秒以内にアクションがない場合、オフラインとみなされます
$entries = file($online_log);

$temp = array();

for ($i=0;$i$entry =explode(",",trim($entries[$i]));
if (($entry[0] != getenv('REMOTE_ADDR')) && ($entry[1] > time() )) {
array_push($temp,$entry[0].",".$entry[1]."n"); //他のビューアの情報を取得し、タイムアウトしたものを削除し、$temp に保存します
}
}

array_push($temp,getenv('REMOTE_ADDR').",".(time() + ($timeout))."n") // 視聴者の時間を更新します
$users_online = count( $ temp); //オンラインの人数を計算します

$entries = implode("",$temp);
//ファイルに書き込みます
$fp = fopen($online_log,"w");
flock($ fp,LOCK_EX) ; //flock() は NFS およびその他のネットワーク ファイル システムでは正しく動作しません
fputs($fp,$entries);
flock($fp,LOCK_UN);
fclose($fp);

echo "現在「.$users_online."人在中" があります。」;

[/php]
---------------------------- ---- --------------------------------------

例 2:
データベースを使用してオンライン ユーザーを実装する


30: テンプレートとは何か、その使用方法


テンプレートに関するいくつかの記事があります

私は phplib テンプレートを使用します
いくつかの関数の使用法を次に示します

$T- >Set_File("任意の定義", "テンプレート ファイル.tpl");

$T->Set_Block("set_file で定義", "" ,"自由に定義like");

$T->Parse("Set_Block で定義","",true);

$T->Parse( "結果を出力しますwill", "set_File で定義されています");

ループ形式を次のように設定します:



テンプレートからの静的 Web ページ

PHP コード:-------------------------------------- ------ --------------------------------------

[php ]
//ここでphplibテンプレートを使用します
$ tpl->get("output");// $output は Web ページのコンテンツ全体です


function wfile($file,$content,$mode='w') {
$oldmask = umask(0);
$fp = fopen($file, $mode);
if (!$fp) return false;
fwrite($fp,$content);
fclose($fp);
umask($oldmask);
return true;
}
// ファイルに書き込みます
Wfile($FILE,$output);
header("location:$FILE");// 生成された Web ページにリダイレクトします
}
[/php]
--- -------------------------------------- ---------- ------------------------



phplibダウンロードアドレスsmartyダウンロードアドレス


31 : phpを使用して文字を解釈する方法

例: 2+2*(1+2)を入力すると、自動的に8が出力されます
eval関数を使用できます

PHPコード:----------- ---------------------------------------------------- --------------- ----


< ;input type="submit">

[php]
$str=$_POST['str'];
eval("$o=$str;");
Echo "$o" ;
[/php]

------ ------------------------------------ ------------------------------------------


また、ご利用の際は特にご注意ください。この関数!!
次の形式を入力すると結果はどうなりますか: d:?

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