ホームページ > バックエンド開発 > PHPチュートリアル > PHP_PHP チュートリアルのいくつかのエラー処理方法とテクニックの概要

PHP_PHP チュートリアルのいくつかのエラー処理方法とテクニックの概要

WBOY
リリース: 2016-07-21 14:58:38
オリジナル
1010 人が閲覧しました

1: 変数を取得できないのはなぜですか? ある Web ページから別の Web ページにデータ名を POST するのに、$name を出力するときに値を取得できないのはなぜですか?
PHP 4.2 以降のバージョンでは、register_globalデフォルトはオフです

別のページから送信された変数を取得したい場合:

方法 1:
PHP.ini で register_global を見つけて on に設定します。方法 2:
この extract($ を受信側 Web ページの先頭に置きます) _POST);extract($_GET);(extract($_SESSION) の前に Session_Start() が必要であることに注意してください) 方法 3:
変数を 1 つずつ読み取ります $a=$_GET["a"];$b = $_POST["b"] など この方法は面倒ですが、より安全です

2: プログラムのデバッグ

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


コードをコピーします

コードは次のとおりです:Session_Start();
Echo "
";このページで取得される変数は次のとおりです:"; <div class="codebody" id="code45322">Print_R($_GET); <BR>Echo "このページで取得される _POST 変数は次のとおりです:"; <BR>Print_R($_POST); <BR>Echo "このページで取得される _COOKIE 変数は次のとおりです:" ; <BR>Print_R($_COOKIE ); <BR>Echo "このページで取得される _SESSION 変数は次のとおりです:" <BR><BR><BR>; ------------------ -------------------------------- <BR>その後、php.ini に include_path = "c:/php" を設定し、このフォルダーに debug.php を置きます。<BR>将来的には、このファイルをすべての Web ページに含めて、取得した変数名と値を表示できるようになります。
<BR><BR>3: セッションの使用方法<BR></div> セッションに関連するすべてのことは、前に関数 session_start() を呼び出す必要があります。<BR> セッションの値の支払いは、次のように非常に簡単です。 <BR><BR></P><P> コードをコピーします<STRONG><BR> コードは次のとおりです。 </STRONG><BR><BR>Session_start() ; <div class="codetitle">$Name = "これはセッションの例です"; <span style="CURSOR: pointer"  onclick="doCopy('code37036')">Session_Register("Name");// 注意: Session_Register("$Name"); <U>Echo $_SESSION["Name "]; </U>// $_SESSION["Name"] の後は、「これはセッションの例です」 </span></div><div class="codebody" id="code37036">php4.2 以降では、セッション料金を直接支払うことができます: <BR><BR><BR><BR> コードをコピーします<BR><BR> コードは次のとおりです次のように: </div><BR><BR>Session_Start(); <div class="codetitle"> $ _Session ["name"] = "value"; <span style="CURSOR: pointer"  onclick="doCopy('code15010')"><U></U> セッションをキャンセルするには: </span></div><div class="codebody" id="code15010"><BR> コードは次のとおりです: <BR><BR></div>session_start () ; <BR>Sactive_unset (); <BR> php4.2 以降では、特定のセッション変数をキャンセルする際にバグがあります。 <div class="codetitle">1: Session_Start() を呼び出す前に出力を行うことはできません。 ============ =============================== <span style="CURSOR: pointer"  onclick="doCopy('code54531')">1行 <U>2行 [ php] </U>3行 Session_Start();//before 1行目にすでに出力があります </span>4行... </div>5行[/php] <div class="codebody" id="code54531">=============== ============== =============== <BR><BR>ヒント 1: <BR><BR>「...ヘッダーはすでに送信されました...」が表示されるたびに、ブラウザに情報を出力する前のSession_Start()です </div>出力を削除すると正常になります (COOKIEでもこのエラーが発生し、エラーの原因は同じです) <BR>
<BR><BR>ヒント 2: <BR><BR>Session_Start() がループ ステートメント内に配置されており、情報が以前にブラウザーに出力された場所を特定するのが難しい場合は、次のメソッドを使用できます: <BR>1 line [php] Ob_Start( ); [/ php] <BR>....これがあなたのプログラムです... <BR>2: このエラーは何ですか? <BR>警告: session_start(): open(/tmpsess_7d190aa36b4c5ec13a5c1649cc2da23f, O_RDWR) が失敗しました:.... <BR>セッション ファイルのストレージ パスが指定されていませんでした。
<BR><STRONG>解決策: <BR></STRONG>(1) C ドライブにフォルダー tmp を作成します <BR>(2) php.ini を開き、session.save_path を見つけ、それを session.save_path= "c:/tmp" に変更します </P><P><STRONG>4: 理由変数を別のWebページに転送すると、前半部分のみが取得され、スペースで始まる変数はすべて失われます<BR></STRONG><BR><BR><BR>コードをコピー<BR><BR> コードは次のとおりです:</P><P><FONT style="BACKGROUND-COLOR: #ffff00">$Var="hello php";//$Var= " Hello php"; に変更して結果を取得してみます<BR>$post= "receive.php?Name=".$Var; </FONT>header("location:$post"); <BR><br><br> accept.php の内容: <STRONG><BR></STRONG><div class="codetitle"> コードをコピーします <span style="CURSOR: pointer"  onclick="doCopy('code35968')"><U> コードは次のとおりです: </U></span></div>Echo "<pre class="brush:php;toolbar:false">"; <div class="codebody" id="code35968">Echo "
" ;


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


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

$Var="hello php";
$post= "receive.php?Name=".urlencode($Var);

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

5: 「[/php]」で終わらずに指定した長さの中国語文字をインターセプトし、余分な部分を「...」に置き換える方法
一般的に言えば、インターセプトされる変数はMysqlから取得されます。フィールドの長さは最初に確認する必要があります。通常は char(200) で、句読点を含めて 100 文字の中国語文字を保持できます。

コードをコピーします コードは次のとおりです。 ="この文字は長いです ^_^"; $Short_Str=showShort($str,4);//最初の 4 つの中国語文字をインターセプトすると、結果は次のようになります: この文字...
Echo "$Short_Str";
関数 csubstr($str,$start,$len)
{
$strlen=strlen($str);
for($i=0;$i<$strlen;$i++,$clen++ )
{
if ($clen>=$start+$len)
Break;
if(ord(substr($str,$i,1))>0xa0)
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,2);
}
else
{
if ($clen>=$start)
$tmpstr.=substr($str,$i,1) );
}
}
return $tmpstr;
}
関数 showShort ($str,$len)
{
$tempstr($str,0,$len)
if ($str<> )
$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 "; Echo "Interpreted: ".$str."
Processed:";
Echo htmlentities(nl2br($str));

8: 関数の外部で関数を取得する方法function 変数の値

コードをコピーします

コードは次のとおりです:
Function foo()
{
global $a;//削除結果を見るにはここをクリックしてください Echo "$a";
9: デフォルトでシステムでサポートされている機能を確認するにはどうすればよいですか? ) { } echo "
"; Echo "システムでサポートされているすべての関数がここに表示されます。 print_r($arr)"; 


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




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

$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);
Echo "$Days 日間苦労しました^_^";
11: PHP をアップグレードした後、元のプログラムが全画面表示になったのはなぜですか 注意: 未定義の変数:
これは変数が未定義であるために発生する警告です
php.ini を開き、一番下にある error_reporting を見つけてください。変更します。 error_reporting = E_ALL & ~E_NOTICE の場合
解析エラー エラーの場合
error_reporting(0) をオフにすることはできません
エラー プロンプトをオフにしたい場合は、php.ini を開き、display_errors を見つけて、display_errors = Off に設定します。今後エラーが発生してもプロンプトは表示されません
それでは、error_reporting とは何ですか?

12: ファイルの先頭と末尾にファイルを追加したいのですが、いちいち追加するのは面倒です

1: php.ini ファイルを開きます
include_path= "c:" を設定します

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

3: php.ini にあります:

auto_prepend_file = auto_prepend_file.php を先頭に追加します auto_append_file = auto_append_file.php を末尾に追加します
将来的には、各 php ファイルは

コードをコピーする

コードは次のとおりです:「auto_prepend_file.php」を含める ....//これがあなたのプログラムです。
「auto_append_file .php」を含める



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


コードは次のとおりです:
;title>ファイルフォームをアップロード
ファイルを選択してください:
/body> $upload_file=$_FILES['upload_file']['tmp_name'];
$upload_file_name=$_FILES['upload_file']['name'];
$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 "同じファイル名のファイルが存在します"
終了
}
//指定されたディレクトリにファイルをコピーします
if (!move_uploaded_file($upload_file,$) store_dir.$upload_file_name)) {
echo "ファイルのコピーに失敗しました";
}
}
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){
case 0:
アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウトout‐‐‐‐‐‐‐‐アップロード‐ケース :
使う 使う 使う 使う 使う アウト アウト オフ アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト スルー スルー スルー ' ‐to ‐ ‐‐‐‐‐‐と
​ ​
14: GD ライブラリを構成する方法
以下は私の構成プロセスです
1: dos コマンドを使用します (手動で実行することもできます。dlls フォルダー内のすべての dll ファイルを system32 ディレクトリにコピーします) copy c:phpdlls* .dll c: windowssystem32
2: php.ini を開きます
extension_dir = "c:/php/extensions/";
3:
extension=php_gd2.dll; 拡張子の前にあるカンマを削除します。 dll についても同様です。このファイル c:/php/extensions/php_gd2.dll が存在することを確認してください

4: 次のプログラムを実行してテストします

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

Ob_end_flush()
//これより前にブラウザに情報を出力できないことに注意してください。 auto_prepend_file が設定されているかどうか。
$im = @imagecreate (200, 100)
$background_color = imagecolorallocate ($) im, 0,0, 0) ;
$text_color = imagecolorallocate ($im, 230, 140, 150);
imagestring ($im, 3, 30, 50, "単純なテキスト文字列", $text_color); ($im);



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

UBB コードは、Ultimate Bulletin Board (海外の BBS プログラムでも使用されています) で使用される特別な TAG です。中国)
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> フラッシュ権限


方法 5

SET PASSWORD ステートメントを使用します,

mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit'); PASSWORD() 関数も使用する必要があります,
使用する必要はありませんフラッシュ特権。


方法6

GRANT... IDENTIFIED BY ステートメントを使用する

mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit' ここでの PASSWORD() 関数は不要です。フラッシュ権限を使用しました。
注: PASSWORD() は、Unix パスワード暗号化と同じ方法でパスワード暗号化を実行しません。


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


コードをコピーします

コードは次のとおりです://出力するにはスーパー接続を介して入力する必要がありますEcho $ _SERVER['HTTP_REFERER'] ;
18: データをデータベースに入れてページに表示するときに注意すべき点は何ですか? データベースに入るとき
$str=addslashes($str);
$sql="insert into ` tab` (`content`) value(' $str')";
エクスポート時
$str=stripslashes($str);
表示時
$str=htmlspecialchars(nl2br($str));

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

コードをコピーします コードは次のとおりです:
$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";


20: 戻るボタンをクリックしたのですが、なぜ以前に入力した内容が消えてしまったのですか? 解決策:


コードをコピーします
コードは次のとおりです: session_cache_limiter('private,must-revalidate'); ..


21: 画像にIPアドレスを表示する方法



コードをコピーします
コードは次のとおりです:
Header("Content-type: image/png") $img = ImageCreate(180,50); $ip = $_SERVER['REMOTE_ADDR']; ImageColorTransparent($img,$bgcolor); //背景色
$shadow = ImageColorAllocate($img, 250,0 ,0); // 影の色
$textColor = ImageColorAllocate($img, oxff,oxff,oxff) // フォントの色
ImageTTFText($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);



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



コードをコピー
コードは次のとおりです:
function iptype1 () { if (getenv("HTTP_CLIENT_IP")) { Return getenv("HTTP_CLIENT_IP") ; } else {
return "none";
}
function iptype2 () {
if ("HTTP_X_FORWARDED_FOR") {
return getenv("HTTP_X_FORWARDED_FOR");
戻ります」なし";
}
}
function iptype3 () {
if (getenv(
);
$ip3 = iptype3();
if (isset($ip1) && $ip1 != "none" && $ip1 != "unknown") {
return $ip1;
}
elseif (isset($ip2 ) && $ip2 != "none" && $ip2 != "unknown") {
return $ip2;
elseif (isset( $ip3) && $ip3 != "none" && $ip3 != "unknown" ) {
$ip3 を返す
}
else {
return "none"
}
Echo ip();
23: データベースから 3 日以内のすべてのレコードを読み取る方法

まず、テーブルには時刻を記録する DATETIME フィールドがあります。
形式は '2003-7-15 16:50:00' です
SELECT * FROM `xltxlm` WHERE TO_DAYS(NOW()) - TO_DAYS(`date`)
24: MySQL データベースにリモートで接続する方法

mysql テーブルにはホスト フィールドがあり、ユーザーを追加するか、「%」に変更するか、接続を許可する IP アドレスを指定して、それを遠隔で。
$link=mysql_connect("192.168.1.80:3306","ルート","");

25: 正規表現の使用方法

正規表現内の特殊文字


26: Apache を使用した後、ホームページが文字化けして表示されます


方法 1:
AddDefaultCharset ISO-8859-1 を AddDefaultCharset オフに変更しました
方法 2:
AddDefaultCharset GB2312
========== == =============================================
ヒント:

コードを投稿すると GB2312 は?????? と解釈されます このように変更すると GB2312 ではなくなります

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


コードをコピーします

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


$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 日間苦労しました^_^ " ;


27: 承認ページで一重引用符と二重引用符が ('") になるのはなぜですか? : $str=ストリップスラッシュ($str)
28: 30 秒以上経過してもプログラムを停止せずに実行し続ける方法 set_time_limit(60)//最大実行時間は 1 分です
set_time_limit(0)//プログラムが自動的に終了するまで実行するか、停止します手動で
29: 現在オンラインになっている人の数を計算します
例 1: テキストを使用して実装します


コードをコピーします

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


//まず、ファイルの読み取りと書き込みの権限が必要です。
//このプログラムは直接実行できます。初めてエラーを報告した後、次のことができます。
$online_log = "count.dat"; // 人数のファイルを保存します。

$timeout = 30; 30 秒以内にアクションがなければ、オフラインとみなされます $entries = file($ online_log); 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"); ($fp,LOCK_EX); //flock() は NFS および他のネットワーク ファイル システムでは正しく動作しません。 Work
fputs($fp,$entries)
fclose($fp);
echo "現在、".$users_online."人々はオンラインです"


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


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

私は phplib テンプレートを使用します
以下はいくつかの関数の使用法です
$T->Set_File("Any Definition", "Template file.tpl"); $ T->Set_Block("set_file で定義","","好きなように定義");
$T->Parse("Set_Block で定義", " >",true);
$T->Parse("結果を自由に出力します", "Set_File で定義");
ループ形式を次のように設定します:
< ! --(複数のスペース) BEGIN $handle (複数のスペース)--> テンプレートから静的 Web ページを生成する方法

コードは次のとおりです: //ここでは phplib テンプレートが使用されています
................................. $ TPL- & GT ; PARSE ("OUTPUT", "HTML"); get("output");// $output は Web ページのコンテンツ全体です
function wfile($file,$content,$mode='w') {
$oldmask = umask(0);
$fp = fopen($mode);
fwrite($fp,$content);
umask($) oldmask);
return true
}
// ファイルに書き込みます
Wfile($FILE,$output);
header("location:$FILE");// 生成された Web ページにリダイレクトします

31: php を使用して文字を解釈する方法
例: 2 +2*(1+2) を入力すると、自動的に 8 が出力されます
eval 関数を使用してコードをコピーできます



コードは次のとおりです以下のように:




[php]
$str=$_POST['str'];
eval("$o=$str ;");
------------------------------------------------- --------------------
さらに、この関数を使用するときは特に注意する必要があります
形式: d: を入力すると結果はどうなりますか?

http://www.bkjia.com/PHPjc/328192.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/328192.html技術記事 1: 変数を取得できないのはなぜですか? ある Web ページから別の Web ページにデータ名を POST するときに、$name を出力するときに値を取得できないのはなぜですか? PHP 4.2 以降のバージョンでは、register_global がデフォルトでオフになります。もしそうなら…
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート