phpプログラミング学習ノート


1,
PHP運転でNo.ticeが発生:Use of undefined constantの解決方法
 
 Notice: Use of undefined constant ALL_PS - assumed 'ALL_PS' in E:\Server\vhosts\www.lvtao.net\global.php on line 50
  Notice: Undefined index: EaseTemplateVer in E:\Server\vhosts\www.lvtao.net\libs\template.core.php on line 51
  Notice: Use of undefined constant uid - assumed 'uid' in E:\Server\vhosts\www.lvtao.net\global.php on line 54
  Notice: Undefined index: uid in E:\Server\vhosts\www.lvtao.net\global.php on line 54
  Notice: Use of undefined constant cuid - assumed 'cuid' in E:\Server\vhosts\www.lvtao.net\global.php on line 55
  Notice: Undefined index: cuid in E:\Server\vhosts\www.lvtao.net\global.php on line 55
Webサイトにアクセスすると、次のようなヒントがたくさん表示されますが、正常に表示および実行できます.
  Notice: Use of undefined constant ctbTitle - assumed 'ctbTitle' in d:\ctb1.5\ctb\include\config.php on line 23...
答え:これらはPHPのヒントで、エラーではありません.PHP自体は事前に変数を宣言する必要はありませんが、未宣言変数にヒントがあります.一般的に公式サイトとしてはヒントをオフにしたり、エラーメッセージもオフにしたりします
PHPプロンプトを閉じる方法
phpを検索します.ini:
  error_reporting = E_ALL
変更後:
  error_reporting = E_ALL & ~E_NOTICE
もう一つの方法は
各ファイルヘッダに
  error_reporting(0); やりにくいけど問題は解決できる
この$POST[']にPHP 5に引用符を付ける.3.5以降、変数の使用に対する要求はさらに厳格になります.もしあなたがこのように使用すれば、システムは間違って、$_と言います.POST配列には$_は存在しませんPOST['submit']という要素はPHP 5にあります.3.5に追加!方法はissetという関数を利用できると思います!変数引用符$POST[bk]を$_に変更POST['bk']やってみる
2,mysqlデータベースは正常で、phpは中国語が文字化けしたことを探し出しました
典型的な符号化問題.phpでmysql_接続後、「mysql」を追加します.query('set names utf8', $con);コードを設定するために使用します.phpファイルの符号化(一般的にUTF 8はBOMなし)もデータベースの符号化と一致するべきである.表示はhtmlによって行われるので、
の前にhtmlの符号化をutf 8と指定すべきである.要するに、良い符号化習慣を身につけて、データベースが創立する時utf 8を使って、データテーブルもutf 8を使って、数を取る時set names utf 8を取って、取り出してから表示する時もutf 8を使います.    <br>データベースをインストールする場所my.iniとdefault-character-set=GBKを設定linuxシステムlocate myの場合.iniはその後UTF 8に設定され、要するにphpとmysqlは一致した符号化を維持しなければならない.<br>3,PHP偽造ソースHTTP_REFERER <br>今ネット上でとても流行っているフォーラムの自动发帖机、自动顶贴机など、多くのフォーラムのウェブサイトに大量のごみの情报を持ってきて、多くのウェブサイトはただ简単に判断HTTPを采用しましたREFERERの値はフィルタリングマシンの投稿を行いますが、ページのHTTP_REFERERの来路情報は偽造されてもよい.どんなものも両面の刃で、あなたが利用するのが上手であればその存在価値があります.<br>以前は、Flashget、迅雷などのソフトウェアをダウンロードして、来路情報を偽造することができましたが、これらのソフトウェアの偽造HTTP_REFERERの多くは,下位層のsockに基づいて虚偽のhttpヘッダ情報を構築して目的を達成する.本文は純粋に技術の角度から討論して、php言語の下の偽造HTTP_REFERERの方法は、プロセスを理解し、より良い防御を期待しています.環境:Apache/2..8+PHP/5.2.5+Windows XPシステム、ローカルテスト.まず、Webサイトの仮想ルートディレクトリの下に1を作成します.phpと2.phpの2つのファイル.     <br>そのうち、1.phpファイルの内容は以下の通りです.<pre><code> <ol class="dp-c"> <li class="alt"><span><span><?php </span></span></li> <li><span><span class="vars">$host</span><span> = </span><span class="string">'127.0.0.1'</span><span>; </span></span></li> <li class="alt"><span><span class="vars">$target</span><span> = </span><span class="string">'/2.php'</span><span>; </span></span></li> <li><span><span class="vars">$referer</span><span> = </span><span class="string">'http://www.piaoyi.org'</span><span>; //伪造HTTP_REFERER地址 </span></span></li> <li class="alt"><span><span class="vars">$fp</span><span> = </span><span class="func">fsockopen</span><span>(</span><span class="vars">$host</span><span>, 80, </span><span class="vars">$errno</span><span>, </span><span class="vars">$errstr</span><span>, 30); </span></span></li> <li><span><span class="keyword">if</span><span> (!</span><span class="vars">$fp</span><span>){ </span></span></li> <li class="alt"><span><span class="func">echo</span><span> </span><span class="string">"$errstr($errno)<br /><br/>"</span><span>; </span></span></li> <li><span>}  </span></li> <li class="alt"><span><span class="keyword">else</span><span>{ </span></span></li> <li><span><span class="vars">$out</span><span> = " </span></span></li> <li class="alt"><span>GET <span class="vars">$target</span><span> HTTP/1.1 </span></span></li> <li><span>Host: <span class="vars">$host</span><span> </span></span></li> <li class="alt"><span>Referer: <span class="vars">$referer</span><span> </span></span></li> <li><span>Connection: Close\r<br/>\r<br/>"; </span></li> <li class="alt"><span>fwrite(<span class="vars">$fp</span><span>, </span><span class="vars">$out</span><span>); </span></span></li> <li><span><span class="keyword">while</span><span> (!</span><span class="func">feof</span><span>(</span><span class="vars">$fp</span><span>)){ </span></span></li> <li class="alt"><span><span class="func">echo</span><span> </span><span class="func">fgets</span><span>(</span><span class="vars">$fp</span><span>, 1024); </span></span></li> <li><span>} </span></li> <li class="alt"><span>fclose(<span class="vars">$fp</span><span>); </span></span></li> <li><span>} </span></li> <li class="alt"><span>?> </span></li> </ol></code></pre> <br>もう一つ2.phpファイルは簡単ですが、現在のHTTPを1行書いて読み込むだけです.REFERERサーバ値のコードは以下の通りです.<pre><code> <ol class="dp-c"> <li class="alt"><span><span><?php </span></span></li> <li><span><span class="func">echo</span><span> </span><span class="string">"<hr />"</span><span>; </span></span></li> <li class="alt"><span><span class="func">echo</span><span> </span><span class="vars">$_SERVER</span><span>[</span><span class="string">"HTTP_REFERER"</span><span>]; </span></span></li> <li><span>?> <br/></span></li> </ol> </code></pre> <br>実行1.phpファイル、開くhttp://localhost/1.phpを選択します.<pre><code> <ol class="dp-xml"> <li class="alt"><span><span>HTTP/1.1 200 OK Date: Fri, 04 Apr 2008 16:07:54 GMT Server: Apache/2.2.8 (Win32) PHP/5.2.5 X-Powered-By: PHP/5.2.5 Content-Length: 27 Connection: close Content-Type: text/html; </span><span class="attribute">charset</span><span>=</span><span class="attribute-value">gb2312</span><span>  </span></span></li> <li><span>-------------------------------------------------------------------------------- </span></li> <li class="alt"><span>http://www.piaoyi.org <br/></span></li> </ol></code></pre> <br>結果を見たでしょう、偽造ソースHTTP_REFERER情報が成功しました.だから、もしあなたのサイトがHTTPを判断するだけならREFERERは、安全ではなく、他の人と同じようにこのようなソースを構築することができ、簡単な防御方法は検証ページに検証コードを加えることです.IP判定の方法も併せて可能である.