開発を行うときは、すべてのエラー プロンプトをオンにしてください: 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 "";
";<br/>Echo $_GET["Name"];<br/>Echo "";
";<br>Echo "システムでサポートされているすべての関数とカスタム関数 phpn が表示されます";<br>print_r($arr);<br>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
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コード:----------- ---------------------------------------------------- --------------- ----