ホームページ >バックエンド開発 >PHPチュートリアル >PHP_PHP チュートリアルのいくつかのエラー処理方法とテクニックの概要
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"] など この方法は面倒ですが、より安全です。
実行時に特定の変数の値を知っておく必要があります。これが私がやったことです。debug.php ファイルを作成します。その内容は次のとおりです:
PHP コード:--------------------------- -- -------
コードをコピーします
";このページで取得される変数は次のとおりです:"; <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 "" ;
5: 「[/php]」で終わらずに指定した長さの中国語文字をインターセプトし、余分な部分を「...」に置き換える方法
一般的に言えば、インターセプトされる変数はMysqlから取得されます。フィールドの長さは最初に確認する必要があります。通常は char(200) で、句読点を含めて 100 文字の中国語文字を保持できます。
コードをコピー
コードは次のとおりです。 PHP "; Echo "Interpreted: ".$str."
Processed:";
Echo htmlentities(nl2br($str));
"; Echo "システムでサポートされているすべての関数がここに表示されます。 print_r($arr)";
12: ファイルの先頭と末尾にファイルを追加したいのですが、いちいち追加するのは面倒です。
1: php.ini ファイルを開きます
include_path= "c:" を設定します
2: 2 つのファイル
auto_prepend_file.php と auto_append_file.php を作成し、C ドライブに保存します。これらは各 php ファイルの先頭と末尾に自動的に添付されます。
auto_prepend_file = auto_prepend_file.php を先頭に追加します auto_append_file = auto_append_file.php を末尾に追加します
将来的には、各 php ファイルは
コードをコピーする
ファイルをアップロードしました:"
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: 次のプログラムを実行してテストします
まず最初に宣言しておきますが、ほとんどの場合、MySQL を変更するには mysql の root 権限が必要です。そのため、一般のユーザーは管理者に要求しない限りパスワードを変更できません 。
方法 1
ただし、PASSWORD 関数を使用することを忘れないでください。
方法 2
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
mysql> SET PASSWORD FOR jeffrey@"%" = PASSWORD('biscuit'); PASSWORD() 関数も使用する必要があります,
使用する必要はありませんフラッシュ特権。
方法6
mysql> GRANT USAGE ON *.* TO jeffrey@"%" IDENTIFIED BY 'biscuit' ここでの PASSWORD() 関数は不要です。フラッシュ権限を使用しました。
注: PASSWORD() は、Unix パスワード暗号化と同じ方法でパスワード暗号化を実行しません。
17: 彼がこのページに接続した Web サイトを知りたいです
コードをコピーします
19: 現在のアドレスバー情報を読み取る方法
コードを投稿すると GB2312 は?????? と解釈されます このように変更すると GB2312 ではなくなります
コードは次のとおりです:
$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"; // 人数のファイルを保存します。
コードは次のとおりです: //ここでは 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 ページにリダイレクトします