ホームページ >バックエンド開発 >PHPチュートリアル >PHP初心者のための頭の痛い問題まとめ_PHPチュートリアル

PHP初心者のための頭の痛い問題まとめ_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:12:08778ブラウズ

[1] ページ間で変数を転送することはできません。最新の PHP バージョンでは、取得、ポスト、およびセッションの自動グローバル変数がオフになっているため、前のページから送信された変数を取得するには、$_GET['foo'], $ を使用します。 _POST. ['foo'],$_SESSION['foo'] を取得するには
もちろん、自動グローバル変数を on に変更することもできます (互換性を考慮して、php.ini を register_globals = On に変更することをお勧めします)。新しい書き方に慣れてください。
[2] Win32 で get メソッドを使用して中国語パラメータを apache2 に渡すとエラーが発生します
test.php?a=Hello&b=Hello
パラメータを渡すと内部エラーが発生します
解決策: "test.php?a=" 。 urlencode(Hello)."&b=".urlencode(Hello)
.............

【3】win32環境でのセッションが正常に動作しない
php.inidefault session.save_path = /tmp
これは明らかに Linux での設定です。Win32 では PHP がセッション ファイルを読み書きできないため、セッションが使用できなくなります。
絶対パスに変更してください。たとえば、session.save_path = c:windowstemp
【4】 】エラー情報を表示します
php.iniのdisplay_errors = On、error_reporting = E_ALLの場合、エラー修正のためにデバッグ中にオンにするのが最善です。メッセージは主に未定義の変数に関するものです。値を割り当てる前に変数が呼び出されるときにプロンプ​​トが表示されます。解決策は、検出またはブロックすることです
たとえば、$foo が表示されている場合は、 if(isset($foo)) echo $foo または echo @$foo を実行できます。
【5】mail()はWin32 Mailではメールを送信できません
Linuxで設定したSendmailは送信できますが、win32ではメールを送信するにはsmtpサーバーを呼び出す必要があります
php.ini = ip //ipのSMTPを変更します認証機能のないsmtpサーバー(インターネット上で見つけるのは難しい)
phpでメールを送信する場合の最善の解決策は、サーバーを転送せずにソケットを使用して相手のメールサーバーに直接送信することです
[6] パスワードが設定されていない場合。 mysql の初期インストールでは、
update mysql.user set password="yourpassword" where user= "root" を使用する必要があります
パスワードを変更
【7】ヘッダーは既に送信されました
このエラーは通常、HEADER を使用した場合に発生する可能性があります。いくつかの理由が考えられます。 1. HEADER を使用する前に PRING または ECHO を実行した 2. 現在のファイルの前に空行がある 3. ファイルを INCLUDE しており、ファイルの最後に空行がある可能性があります。そうしないと、このエラーが発生します。出力で。 !
[8] php.iniを変更しても変化なし
IISやApacheなどのWebサーバーを再起動すると最新の設定が適用されます
[9] PHPは2003にインストールされています(インストール方法ISAPI、専門家にアドバイスを求めてください)
PHP4 の php4isapi.dll は 2003 と競合するようで、CGI モードでのみインストールできます
ステップ 1、まずインストール プログラムを www.php.net にインストールします: php-4.2。 .3-installer.exe、php-4.2.3-installer.exe をインストールする前に、最新バージョンを見つけて、IIS6.0 が起動し、アクセスできることを確認することもできます。インストール後、デフォルトの Web サイト --> [アプリケーション構成] に移動します。
ステップ 2: [Web サービス拡張機能] --> [新しい Web サービス拡張機能] をクリックします。
ステップ 3: [拡張機能] -->php を追加します。
ステップ 4:検索 php.exe へのパスを追加します。
ステップ 5: 確認するだけです。
ステップ 6: PHP サービス拡張機能を選択し、「許可」をクリックします。
【10】
SQL文が機​​能せず、データベース操作が失敗する場合があります
デバッグする最も簡単な方法は、SQL文をエコーし​​て変数の値が取得できるかどうかを確認することです
【11】includeとrequireの違い
両者に違いはありません。大きな違いがあります。インクルードするファイルが存在しない場合、インクルードは通知を表示し、次のステートメントを実行し続けると致命的なエラーが発生して終了します。
私のテストによれば、 win32 プラットフォームでは、これらは最初にインクルードされてから実行されるため、インクルードされたファイルには include ステートメントや require ステートメントを含めないことをお勧めします。ディレクトリの混乱が生じるためです。*nux では状況が異なる可能性があります。まだテストしていません
ファイルを複数回インクルードしたくない場合は、include_once または require_once## を使用してドキュメント データの読み取りと書き込みを行うことができます
function r($ file_name) {
$filenum=@fopen($ file_name,"r");
$file_data=@fread($filenum,file_name($file_name));ファイル番号);
$file_data;
関数 w($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method); ;
$file_data=fwrite($filenum,$ data);
return $file_data;

【12】isset() と empty() の違い
どちらも変数をテストするために使用されます
ただし、 isset() は変数が代入であるかどうかをテストし、 empty() は値が割り当てられている変数が空かどうかをテストします
変数に値が割り当てられていない場合、PHP で参照することはできますが、通知プロンプトになります
変数に null 値、$foo =""、$foo=0、または $foo=false が割り当てられている場合、empty($foo) は true を返し、isset($foo) も true を返します。 null 値を代入しても変数の登録は解除されません。
変数の登録を解除するには、unset($foo) または $foo=NULL を使用できます
[13] mysql クエリステートメントにはキーワードが含まれています
php が mysql をクエリするとき、mysql テーブル名またはカラム名にキーワードが含まれる場合があります
これクエリ内のエラーである可能性があります。例えば、テーブル名がorderの場合、クエリ時にエラーが発生します
簡単な方法は、SQL文のテーブル名またはカラム名に`[タブキーの上]を追加して区別することです
例えば、select * `order` から
[14] HTTP プロトコルを一度経由する 複数のファイルをアップロードするメソッド
には 2 つのアイデアがあり、同じメソッドの 2 つの実装です。特定のプログラムは自分で設計する必要があります
1. 次のように、フォームに複数のファイル入力ボックスを設定し、配列で名前を付けます。




で次のテストを実行します。サーバー側
echo "
"; <br>print_r($_FILES); <br><br>1. フォームに複数のファイル入力ボックスを設定します。 <br><フォームアクション= ""メソッド=post> <br><入力タイプ=ファイル名=usefile_b> <br></フォーム> ; <br>サーバー側で同じテストを実行します: <br>echo "<pre class="brush:php;toolbar:false">"; <br>echo "
";



http://www.bkjia.com/PHPjc/313746.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/313746.html

技術記事

[1] 変数の get、post、session はページ間で転送できません。最新の PHP バージョンでは、自動グローバル変数がオフになっているため、前のページから送信された変数を取得するには、$_GET['foo'... を使用します。

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