十四条令PHP初心者頭痛問題大総括
4082 ワード
1、ページ間で変数を渡すことができない
get,post,sessionは最新のphpバージョンで自動グローバル変数が閉じているので、前のページからコミットされた変数を取得するには$GET['foo'],$_POST['foo'],$_SESSION['foo']を入手します.もちろん、自動グローバル変数をオンに変更することもできます(php.iniをregister_globals=Onに変更します).互換性を考慮して、新しい書き方に慣れるように強要したほうがいいです.
2、Win 32下apache 2 get方法で中国語パラメータを渡すとエラーになる
test.php?a=こんにちは&b=あなたも
パラメータを渡すと内部エラーが発生します
解決策:「test.php?a=」.urlencode"&b=".urlencode(あなたも)
3、win 32でのセッションが正常に動作しない
php.iniデフォルトのセッションsave_path =/tmp
これは明らかにlinuxの下の構成で、win 32の下のphpはsessionファイルを読み書きすることができなくてsessionが使用できないことを招きます
絶対パスに変えればいいsave_path = c:\windows\temp
4、エラーメッセージを表示
php.iniのdisplay_errors=Onおよびerror_reporting = E_ALLでは、すべてのエラーとプロンプトが表示されます.デバッグ時に開いてエラーを訂正したほうがいいです.以前のphpでエラー情報を書くと、定義されていない変数に関することが多い場合があります.変数は値を割り当てる前に呼び出され、解決策はプローブまたはシールドです.
例えば$fooを表示し、if(isset($foo))echo$fooまたはecho@$foo
5、Win 32下mail()は電子メールを送信できません
linuxで構成されたsendmailは送信可能であり、win 32ではsmtpサーバを呼び出して電子メールを送信しphpを変更する必要がある.iniのSMTP=ip//ipは認証機能を持たないsmtpサーバ(ネット上では見つけにくい)であり、phpがメールを送信する最善の解決策はsocketでサーバを転送せずに相手のemailサーバに直接送信することである.
6、初インストールのmysqlパスワードが設定されていない場合は、使用するべきです
update mysql.user set password="yourpassword"where user="root"
パスワードの変更
7、header already sent
このエラーは通常、HEADERを使用するときに発生します.彼はいくつかの原因かもしれません.1、HEADERを使用する前にPRINGやECHOを使用しました.現在のファイルの前に空の行があります.INCLUDEには、ファイルの末尾に空の行があるか、出力にもこのようなエラーが発生するファイルがある可能性があります.
8、phpを変更する.ini以降変化なし
IIS、ApacheなどのWebサーバを再起動してから、最新の設定が適用されます.
9、phpは2003の上にインストールする(ISAPIのインストール方法は上級者に教えてもらう)
PHP 4のphp 4 isapi.dllは2003と少し衝突しているようで、CGIモードでしかインストールできません.
ステップ1、まずwww.php.Netの下で1つのインストールプログラムで、私はインストールしたのです:php-4.2.3-installer.exe、あなたも最新のバージョンを探してphp-4.2をインストールすることができます.3-installer.exeの前にIIS 6を保証します.0が起動し、アクセスできます.インストールが完了したら、デフォルトのWebサイト-->アプリケーション構成;
ステップ2:Webサービス拡張をクリック-->Webサービス拡張を新規作成;
ステップ3:拡張子-->php、追加;
ステップ4:phpを見つける.exeのパスを追加します.
ステップ5:確定すればいい.
手順6:phpのサービス拡張を選択し、「許可」をクリックします.
10、sql文が機能せず、データベース操作に失敗する場合がある
最も簡単なデバッグ方法、echoのあのsql、変数の値が得られるかどうかを見てみましょう.
11、includeとrequireの違い
両者には大きな違いはありません.含めるファイルが存在しない場合、includeはnoticeをプロンプトし、次の文を実行し続けます.requireは致命的なエラーをプロンプトして終了します.私のテストによると、win 32プラットフォームの下では、先に含んでから実行されます.そのため、含まれているファイルの中で最もよくinclude文やrequire文があれば、ディレクトリが混乱します.もしかすると*nuxの場合状況は異なって、しばらくまだテストしていません
1つのファイルが複数含まれたくない場合はinclude_を使用します.onceまたはrequire_once##ドキュメントデータの読み込み、書き込み:
12、isset()とempty()の違い
どちらもテスト変数用です.
しかしisset()は変数が付与されているかどうかをテストし、empty()はすでに付与されている変数が空であるかどうかをテストします.変数が割り当てられていない場合はphpで参照が許可されますが、noticeプロンプトがあります.変数が空の値、$foo=""または$foo=0または$foo=falseに割り当てられている場合、empty($foo)は真を返し、isset($foo)も真を返します.つまり、空の値は変数をログアウトしません.
変数をログアウトするには、unset($foo)または$foo=NULLを使用します.
13、mysqlクエリ文にキーワードが含まれている
phpがmysqlをクエリーする場合、mysqlテーブル名またはカラム名にキーワードがある場合があります.クエリにエラーが発生します.たとえばテーブル名がorderの場合、クエリー中にエラーが発生します.簡単な方法はsql文に表名や列名に`[tabキーの上]を付けて区別することです.
例えばselect*from`order`.
14.HTTPプロトコルで複数のファイルを一度にアップロードする方法
2つの構想があり、同じ方法の2つの実現である.具体的なプログラムは自分で設計する必要があります.
1、formに複数のファイル入力ボックスを設定し、配列で名前を付けます.以下のようにします.
2、formに複数のファイル入力ボックスを設定しますが、名前が異なります.以下のようにします.
get,post,sessionは最新のphpバージョンで自動グローバル変数が閉じているので、前のページからコミットされた変数を取得するには$GET['foo'],$_POST['foo'],$_SESSION['foo']を入手します.もちろん、自動グローバル変数をオンに変更することもできます(php.iniをregister_globals=Onに変更します).互換性を考慮して、新しい書き方に慣れるように強要したほうがいいです.
2、Win 32下apache 2 get方法で中国語パラメータを渡すとエラーになる
test.php?a=こんにちは&b=あなたも
パラメータを渡すと内部エラーが発生します
解決策:「test.php?a=」.urlencode"&b=".urlencode(あなたも)
3、win 32でのセッションが正常に動作しない
php.iniデフォルトのセッションsave_path =/tmp
これは明らかにlinuxの下の構成で、win 32の下のphpはsessionファイルを読み書きすることができなくてsessionが使用できないことを招きます
絶対パスに変えればいいsave_path = c:\windows\temp
4、エラーメッセージを表示
php.iniのdisplay_errors=Onおよびerror_reporting = E_ALLでは、すべてのエラーとプロンプトが表示されます.デバッグ時に開いてエラーを訂正したほうがいいです.以前のphpでエラー情報を書くと、定義されていない変数に関することが多い場合があります.変数は値を割り当てる前に呼び出され、解決策はプローブまたはシールドです.
例えば$fooを表示し、if(isset($foo))echo$fooまたはecho@$foo
5、Win 32下mail()は電子メールを送信できません
linuxで構成されたsendmailは送信可能であり、win 32ではsmtpサーバを呼び出して電子メールを送信しphpを変更する必要がある.iniのSMTP=ip//ipは認証機能を持たないsmtpサーバ(ネット上では見つけにくい)であり、phpがメールを送信する最善の解決策はsocketでサーバを転送せずに相手のemailサーバに直接送信することである.
6、初インストールのmysqlパスワードが設定されていない場合は、使用するべきです
update mysql.user set password="yourpassword"where user="root"
パスワードの変更
7、header already sent
このエラーは通常、HEADERを使用するときに発生します.彼はいくつかの原因かもしれません.1、HEADERを使用する前にPRINGやECHOを使用しました.現在のファイルの前に空の行があります.INCLUDEには、ファイルの末尾に空の行があるか、出力にもこのようなエラーが発生するファイルがある可能性があります.
8、phpを変更する.ini以降変化なし
IIS、ApacheなどのWebサーバを再起動してから、最新の設定が適用されます.
9、phpは2003の上にインストールする(ISAPIのインストール方法は上級者に教えてもらう)
PHP 4のphp 4 isapi.dllは2003と少し衝突しているようで、CGIモードでしかインストールできません.
ステップ1、まずwww.php.Netの下で1つのインストールプログラムで、私はインストールしたのです:php-4.2.3-installer.exe、あなたも最新のバージョンを探してphp-4.2をインストールすることができます.3-installer.exeの前にIIS 6を保証します.0が起動し、アクセスできます.インストールが完了したら、デフォルトのWebサイト-->アプリケーション構成;
ステップ2:Webサービス拡張をクリック-->Webサービス拡張を新規作成;
ステップ3:拡張子-->php、追加;
ステップ4:phpを見つける.exeのパスを追加します.
ステップ5:確定すればいい.
手順6:phpのサービス拡張を選択し、「許可」をクリックします.
10、sql文が機能せず、データベース操作に失敗する場合がある
最も簡単なデバッグ方法、echoのあのsql、変数の値が得られるかどうかを見てみましょう.
11、includeとrequireの違い
両者には大きな違いはありません.含めるファイルが存在しない場合、includeはnoticeをプロンプトし、次の文を実行し続けます.requireは致命的なエラーをプロンプトして終了します.私のテストによると、win 32プラットフォームの下では、先に含んでから実行されます.そのため、含まれているファイルの中で最もよくinclude文やrequire文があれば、ディレクトリが混乱します.もしかすると*nuxの場合状況は異なって、しばらくまだテストしていません
1つのファイルが複数含まれたくない場合はinclude_を使用します.onceまたはrequire_once##ドキュメントデータの読み込み、書き込み:
function r($file_name) {
$filenum=@fopen($file_name,"r");
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,filesize($file_name));
@fclose($filenum);
return $file_data;
}
function w($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method);
flock($filenum,LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
return $file_data;
}
12、isset()とempty()の違い
どちらもテスト変数用です.
しかしisset()は変数が付与されているかどうかをテストし、empty()はすでに付与されている変数が空であるかどうかをテストします.変数が割り当てられていない場合はphpで参照が許可されますが、noticeプロンプトがあります.変数が空の値、$foo=""または$foo=0または$foo=falseに割り当てられている場合、empty($foo)は真を返し、isset($foo)も真を返します.つまり、空の値は変数をログアウトしません.
変数をログアウトするには、unset($foo)または$foo=NULLを使用します.
13、mysqlクエリ文にキーワードが含まれている
phpがmysqlをクエリーする場合、mysqlテーブル名またはカラム名にキーワードがある場合があります.クエリにエラーが発生します.たとえばテーブル名がorderの場合、クエリー中にエラーが発生します.簡単な方法はsql文に表名や列名に`[tabキーの上]を付けて区別することです.
例えばselect*from`order`.
14.HTTPプロトコルで複数のファイルを一度にアップロードする方法
2つの構想があり、同じ方法の2つの実現である.具体的なプログラムは自分で設計する必要があります.
1、formに複数のファイル入力ボックスを設定し、配列で名前を付けます.以下のようにします.
<form action="" method=post>
<input type=file name=usefile[]>
<input type=file name=usefile[]>
<input type=file name=usefile[]>
</form>
,
echo "<pre>";
print_r($_FILES);
echo "</pre>";
2、formに複数のファイル入力ボックスを設定しますが、名前が異なります.以下のようにします.
<form action="" method=post>
<input type=file name=usefile_a>
<input type=file name=usefile_b>
<input type=file name=usefile_c>
</form>
:
echo "<pre>";
print_r($_FILES);
echo "</pre>";