ホームページ  >  記事  >  php教程  >  インスタンスから始める

インスタンスから始める

WBOY
WBOYオリジナル
2016-06-21 09:04:38694ブラウズ
3 PHP の練習
PHP の多くの機能は他のソフトウェアやツールに関連しています。これまでに学んだ PHP の知識を使用して、単純なインタラクティブな Web サイトの構築を試みることができます。このプロセスを通じて私たちは多くのことを学ぶことができます。それでは、典型的な個人 Web サイトの構築に焦点を当てましょう。

3.1 サイトを計画する
一般に、個人サイトには、ウェルカム ページ、ゲストブック ページ、ブックマーク リンク ページ、カウンター、連絡先情報、さらには写真コレクションやいくつかの音楽ファイルなどが含まれます。タイトルページ、連絡先情報ページ、履歴書ページから始めましょう。標準のユニバーサル ページ ヘッダーとフッターも必要です。

タイトル ページ--front.html


ここに非常に単純な HTML ファイルがあります:


<br>私の個人的なホームページ -- ようこそ<br></TITLE> ;<br/> </HEAD><br><BODY><br><H1><br>私の個人ホームページ<br></H1><br><H2><br>ようこそ<br></H2><br><HR><br><P><br>ようこそ私のささやかな住居へ、ここにはまだ何もありませんが。 <br></P><br><P><br>でも、すぐにさらに増えることを願っています。 <br></P><br><HR><br><P ALIGN="CENTER"><SMALL><br>私自身、1999 年<br></I> ;/P><br></BODY><br></HTML><br><br>連絡先情報ページ--count.html<br><br>同様に、別の単純なページがあります: <br><HTML><br><HEAD><br><TITLE> <br>私の個人ホームページ - 連絡先情報<br>



私の個人ホームページ



連絡先情報
< /H2>



1-800-PHP-INFO までご連絡ください





< ;SMALL>
著作権?1999年





3.2 HTMLからPHPへ

上からわかるように、すべてのページに同じヘッダーとフッターがあります。作業負荷が軽い場合は、上記のように各ページに同じ情報を書き込むのは問題ありませんが、100 ページを超えるページがあり、すべてのページのヘッダーまたは下部を変更する必要がある場合、どれだけの労力を費やさなければならないかを想像してみてください。ページごとに手動で変更するのは、なんと退屈で退屈な作業でしょう。したがって、これらのページの PHP ヘッダー ファイルと下部ファイルを作成し、すべての HTML ページでそれらを参照するだけで済みます。これらのインクルード ファイルは、include というサブディレクトリに配置します。以下では、これらのサイトに共通するコンテンツをファイルに書き込みます。

サイト全体の変数設定: common.inc
// サイト全体の変数
$MyEmail = "phptalk@tnc.org";
$MyEmailLink = "$MyEmail";
$MyName = "PHP Talk";
$MySiteName = $MyName." のホームページ";
?>

ユニバーサル ページ ヘッダー: header.inc
< ;?
// 一般的なページヘッダーを定義します
?>


<br><? echo "$MySiteName - $title" ?><br></TITLE> echo " $MySiteName"; ?><br/></H1><br/><H2><br/><? echo "$title" ; ?><br/></H2><br/><HR><br/><br/>ユニバーサル ページ下部: フッター。 inc<br/><?<br/>//ユニバーサル ページ下部<br/>?><br><HR><br><P ALIGN=" CENTER"><br><SMALL><br>Copyright ? by <br><? $MyName ($MyEmailLink)"; ?><br>、1999<br></I> </SMALL><br></P><br></BODY><br></HTML><br><br>新しいページfront.php3 : <br><?<br/>include("include/common.inc");<br/>$title = "ようこそ";<br/> include("include/header.inc");<br/>?><br><P><br>私のサイトへようこそここにはまだ何もありませんが、質素な住居です。 <br></P><br><P><br>でも、すぐにさらに増えることを願っています。 <br></P><br><?<br/>include("include/footer.inc");<br/>?><br><br>新しいcont.php3: <br><?<br/>include("include/common.inc"); $title = "連絡先情報";<br/>include("include/header.inc");<br/>?><br><P><br>1-800-PHP-INFO までご連絡ください<br></P><br> < ;?<br/>include("include/footer.inc");<br/>?><br><br>これで、この配置の利点が推測できるようになります。ページのヘッダーまたは下部を変更したい場合は、対応するファイルを変更するだけで済みます。電子メール アドレスや名前を変更したい場合は、common.inc ファイルを変更するだけです。任意のファイル名またはファイル拡張子のファイルをファイルに含めることができ、他のサイトのファイルを含めることもできることにも注目してください。 <br><br>3.3 カウンター<br><br> ホームページにカウンターを追加しましょう。この例は何度も説明されていますが、ファイルの読み取りと書き込み、および独自の関数の作成方法を示すのに依然として役立ちます。 counter.inc には次のコードが含まれています: <br><?<br/>/*<br/>|| 単純なカウンター <br/>*/<br/>function get_hitcount($counter_file)<br/>{<br/>/* カウンターがゼロに戻っていない場合は、このようにします。まだ使用されていない場合、初期値は 1 になります<br/>もちろん、人々を騙すために初期値を 20000 に設定することもできます<br/>*/<br/>$count=0;<br/>// カウンターを格納するファイルが既に存在する場合は、その内容を読み取ります<br/>if ( file_exists($counter_file ) ) <br/>{<br/>$fp=fopen($counter_file,"r");<br/>// 上位 20 件だけを取り上げました。あなたのサイトがあまり人気にならないことを願っています<br/>$count=0+ fgets($fp,20 );<br/>//関数 fgets() は文字列を返すので、0を追加することで自動的に整数に変換できます<br/>fclose($fp);<br/>// ファイル操作は完了です<br/>}<br/> // カウント値を 1 回増加します <br/>$count++;<br/>// 新しいカウント値をファイルに書き込みます<br/>$fp=fopen($counter_file,"w");<br/>fputs($fp,$count);<br/>fclose($ fp);<br/># カウント値を返します <br/>return ($count);<br/>}<br/>?><br>次に、このカウンターを表示するようにfront.php3ファイルを変更します: <br><?<br/>include("include/counter.inc") ;<br/>// カウント値を入れます counter.txt ファイルに入れ、読み取って出力します <br/>printf ("<CENTER><B>%06d</B></CENTER> <BR>n" ,<br>get_hitcount("counter.txt" ));<br>include("include/footer.inc");<br>?><br>新しいfront.php3をチェックしてください<br><br>3.4フィードバックフォーム<br><br>フィードバックフォームをもう1つ追加しましょう視聴者が必要事項を記入して電子メールで送信してください。たとえば、非常に単純なメソッドを使用して実装します。1 つはビューアに入力フォームを提供するページ、もう 1 つはフォーム データを取得して処理し、メールで送信するページです。 <br><br>PHP でフォーム データを取得するのは非常に簡単です。フォームが送信されると、フォームに含まれる各要素に対応する値が割り当てられ、一般変数への参照のように使用できます。 <br><FORM name="myform" ACTION="process_form.php3" METHOD="POST"><br><INPUT TYPE="TEXT" NAME="mytext" VALUE="何らかの値"><br></FORM> ;<br/><br/> process_form.php3 では、変数 $mytext に入力された値が割り当てられます - 非常に簡単です。同様に、リストボックス、チェックボックス、ラジオボックス、ボタンなどのフォーム要素から変数値を取得できます。必要なのは、後で参照できるように、フォーム内の各要素に名前を付けることだけです。 <br/><br/>この方法によれば、名前、メールアドレス、メッセージの3つの要素を含む単純なフォームを生成できます。訪問者がフォームを送信すると、フォームを処理する PHP ページ (sendfdbk.php3) がデータを読み取り、名前が空かどうかを確認し、最後にデータを電子メールで送信します。 <br/><br/>フォーム: form.php3<br/><?<br/>include("include/common.inc");<br/>$title = "フィードバック";<br/>include("include/header.inc");<br/>?><br>< P><br><FORM ACTION="sendfdbk.php3" METHOD="POST"><br><INPUT TYPE="テキスト" NAME="名前" value="あなたの名前" SIZE="20" MAXLENGTH="30" ><br><INPUT TYPE="テキスト" MAXLENGTH="40" WIDTH="20" value="あなたのメールアドレス" NAME="メールアドレス"><br><BR><br><TEXTAREA ROWS="7" COLS= "40" NAME="comment"><br>私のホームページに関するフィードバック。<br></TEXTAREA><br><BR><br><INPUT TYPE="submit" VALUE="フィードバックを送信!"><br>< /FORM><br></P><br><?<br/>include("include/footer.inc");<br/>?><br><br>フォームの処理: sendfdbk.php3<br><?<br>include("include/common. inc ");<br>$title = "フィードバック";<br>include("include/header.inc");<br>if ( $name == "" ) <br>{<br>// 今では匿名のコメントが嫌いです! <br>echo "え?どうして匿名なの?";<br>} <br>elseif ($name == "あなたの名前") <br>{<br>// この視聴者は本当に名前を明かされたくないのです! <br>echo "こんにちは ? <B>あなたの名前</B> は<br>あなたの実際の名前に置き換えられることになっています!</B>";<br>} <br>else <br>{<br>// 丁寧なありがとうを出力します<br>echo " <br>こんにちは、$name。<br><BR><br>フィードバックありがとうございます。大変感謝しております。<br><BR><br>$MyName <BR><br>$MyEmailLink<br>"; <br> // 最後にメールを送信します <br>mail($MyEmail, "Feedback.","<br>Name : $name<br>E-mail : $email<br>Comment : $comment <br>");<br>}<br>include("include/footer.inc ");<br>?><br><br>3.5 シンプルなサイト内検索エンジン<br><br>PHP は外部プログラムを呼び出すことができます。 Unix 環境では、grep プログラムを使用して単純な検索エンジンを実装できます。もう少し複雑にすることもできます。ページを使用して、ユーザーが検索文字列を入力してクエリ結果を出力するためのフォームを出力します。 <br><?<br/>include("include/common.inc");<br/>$title = "検索";<br/>include("include/header.inc");<br/>?><br><P><br><フォームアクション="<? echo "$PHP_SELF"; ?>" METHOD="POST"><br><INPUT TYPE="text" NAME="searchstr" value="<? echo "$searchstr"; ?> ;"<br/>SIZE="20" MAXLENGTH="30"><br><INPUT TYPE="submit" VALUE="検索!"><br></FORM><br></P><br><?<br>if ( ! empty($searchstr) ) <br>{<br>// empty() はクエリ文字列が空かどうかをチェックするために使用されます<br>// 空でない場合は grep query を呼び出します<br>echo "<HR>n";<br>// grep を呼び出します大文字と小文字を区別しないモードですべてのファイルをクエリします<br>$cmdstr = "grep -i $searchstr *";<br>$fp = Popen( $cmdstr, "r" ); // コマンドを実行し、パイプを出力します<br>$myresult = array( ); // クエリ結果を保存します <br>while( $buffer = fgetss ($fp, 4096)) <br>{<br>// grep は次の形式を返します: ファイル名: 一致する文字列の行数 <br>// そこで関数を使用しますsplit () データを分離して処理します<br>list($fname, $fline) = split(":",$buffer, 2);<br>// 最初に一致した結果のみを出力します<br>if (!define($myresult[ $fname ]))<br>$myresult[$fname] = $fline;<br>}<br>// 結果を配列に保存し、処理して出力できます<br>if ( count($myresult) )<br>{<br>echo " < ;OL>n";<br>while(list($fname,$fline) = each($myresult))<br>echo "<LI><br/><A HREF="$fname">$fname</A> : $fline </LI>n";<br>echo "</OL>n";<br>} <br>else <br>{<br>// クエリ結果がない場合<br>echo "申し訳ありません。<B>$searchstr<で検索してください。 ;/B> ;<br>結果は返されませんでした。<BR>n";<br>}<br>pclose($fp);<br>}<br>?><br><?<br>include("include/footer.inc");<br>?> ;<br><br> <br>注: <br><br>PHP_SELF は PHP の組み込み変数です。現在のファイル名が含まれます。 <br>fgets() は、最大 4096 (指定された) 文字長までファイルを 1 行ずつ読み取ります。 <br>fgetss() は、出力 HTML タグを解析することを除いて、fgets() に似ています。 <br>split() のパラメータは 2 です。これは、出力を 2 つの部分に分割するだけでよいためです。 「:」も省略する必要があります。 <br>each() は配列操作関数であり、配列全体をより簡単に走査するために使用されます。 <br>popen()、pclose() は、パイプライン処理が追加されていることを除いて、fopen()、fclose() と非常によく似た機能を持っています。 <br>上記のコードは検索エンジンを実装するための良い方法ではないことに注意してください。これは、PHP をより良く学習するための単なる例です。理想的には、キーワードのデータベースを構築してから検索する必要があります。 <br><br></span> <p style="width:100%;text-align:center;margin:10px 0"> <br> <br> </p> <p style="width:100%;text-align:center;margin:10px 0"> </p> <p class="clear"></p></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="PHP個人サイト立ち上げ講座(4)" href="http://m.php.cn/ja/faq/239146.html">PHP個人サイト立ち上げ講座(4)</a></span><span>次の記事:<a class="dBlack" title="PHP個人サイト立ち上げ講座(4)" href="http://m.php.cn/ja/faq/239150.html">PHP個人サイト立ち上げ講座(4)</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="http://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ul class="nphpXgwzList"><li><b></b><a href="http://m.php.cn/ja/faq/92233.html" title="Windows7系统下Netbeans+PHPUnit搭建PHP单元测试开发环境及PHPUn" class="aBlack">Windows7系统下Netbeans+PHPUnit搭建PHP单元测试开发环境及PHPUn</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/97151.html" title="程序猿ProMonkey V2.03" class="aBlack">程序猿ProMonkey V2.03</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/94770.html" title="PHP Navigator" class="aBlack">PHP Navigator</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/90182.html" title="php返回数组中指定的一列(php5.5.0默认函数array_column()在php" class="aBlack">php返回数组中指定的一列(php5.5.0默认函数array_column()在php</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/208396.html" title="htmlentities和htmlspecialchars 的区别详解" class="aBlack">htmlentities和htmlspecialchars 的区别详解</a><div class="clear"></div></li></ul></div></div><div class="nphpFoot"><div class="nphpFootBg"><ul class="nphpFootMenu"><li><a href="http://m.php.cn/ja/"><b class="icon1"></b><p>ホームページ</p></a></li><li><a href="http://m.php.cn/ja/course.html"><b class="icon2"></b><p>コース</p></a></li><li><a href="http://m.php.cn/ja/wenda.html"><b class="icon4"></b><p>に質問</p></a></li><li><a href="http://m.php.cn/ja/login"><b class="icon5"></b><p>私の</p></a></li><div class="clear"></div></ul></div></div><div class="nphpYouBox" style="display: none;"><div class="nphpYouBg"><div class="nphpYouTitle"><span onclick="$('.nphpYouBox').hide()"></span><a href="http://m.php.cn/ja/"></a><div class="clear"></div></div><ul class="nphpYouList"><li><a href="http://m.php.cn/ja/"><b class="icon1"></b><span>ホームページ</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/course.html"><b class="icon2"></b><span>コース</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/article.html"><b class="icon3"></b><span>記事</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/wenda.html"><b class="icon4"></b><span>に質問</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/dic.html"><b class="icon6"></b><span>辞書</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/course/type/99.html"><b class="icon7"></b><span>マニュアル</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/xiazai/"><b class="icon8"></b><span>ダウンロード</span><div class="clear"></div></a></li><li><a href="http://m.php.cn/ja/faq/zt" title="特集"><b class="icon12"></b><span>特集</span><div class="clear"></div></a></li><div class="clear"></div></ul></div></div><div class="nphpDing" style="display: none;"><div class="nphpDinglogo"><a href="http://m.php.cn/ja/"></a></div><div class="nphpNavIn1"><div class="swiper-container nphpNavSwiper1"><div class="swiper-wrapper"><div class="swiper-slide"><a href="http://m.php.cn/ja/" >ホームページ</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/article.html" class="hover">記事</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/wenda.html" >に質問</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/course.html" >コース</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/faq/zt" >特集</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/xiazai" >ダウンロード</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/game" >ゲーム</a></div><div class="swiper-slide"><a href="http://m.php.cn/ja/dic.html" >辞書</a></div><div class="clear"></div></div></div><div class="langadivs" ><a href="javascript:;" class="bg4 bglanguage"></a><div class="langadiv" ><a onclick="javascript:setlang('zh-cn');" class="language course-right-orders chooselan " href="javascript:;"><span>简体中文</span><span>(ZH-CN)</span></a><a onclick="javascript:setlang('en');" class="language course-right-orders chooselan " href="javascript:;"><span>English</span><span>(EN)</span></a><a onclick="javascript:setlang('zh-tw');" class="language course-right-orders chooselan " href="javascript:;"><span>繁体中文</span><span>(ZH-TW)</span></a><a onclick="javascript:;" class="language course-right-orders chooselan chooselanguage" href="javascript:;"><span>日本語</span><span>(JA)</span></a><a onclick="javascript:setlang('ko');" class="language course-right-orders chooselan " href="javascript:;"><span>한국어</span><span>(KO)</span></a><a onclick="javascript:setlang('ms');" class="language course-right-orders chooselan " href="javascript:;"><span>Melayu</span><span>(MS)</span></a><a onclick="javascript:setlang('fr');" class="language course-right-orders chooselan " href="javascript:;"><span>Français</span><span>(FR)</span></a><a onclick="javascript:setlang('de');" class="language course-right-orders chooselan " href="javascript:;"><span>Deutsch</span><span>(DE)</span></a></div></div><script> var swiper = new Swiper('.nphpNavSwiper1', { slidesPerView : 'auto', observer: true,//修改swiper自己或子元素时,自动初始化swiper observeParents: true,//修改swiper的父元素时,自动初始化swiper }); </script></div></div><!--顶部导航 end--><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>