3

PHP と mysql のスキルを構築する方法として、独自の CMS をゼロから作成しています。すべて順調に進んでいますが、書くブログ投稿ごとに個別の投稿ページを作成したいところです。したがって、index.php ページには、各投稿のスニペットを含むすべてのブログのリストがあり、ユーザーを各ブログ投稿の完全なページに移動させる [続きを読む] ボタンがあります。各投稿には、「投稿の作成」フォームに入力されたブログのタイトルから作成された URL があります。タイトル、小見出し、投稿内容、およびその他の情報を GET で渡さずに、各投稿に固有のページを作成する方法を見つけようとしています。

これは、私が追加しようとしている別の機能とも一致します。投稿で行ったように、「ページの作成」フォームを使用して個々のページを作成できるようにしたいと考えています。したがって、「私たちについて」ページが必要な場合は、管理フォームに移動し、タイトルを入力してコンテンツを追加し、送信をクリックするとページが動的に作成されます。私はこれら 2 つのことをどのように行うかについて 1 日中考えていましたが、これを行う方法がよくわかりません。

参考までに、コードを求めているわけではありません。これを達成する方法を概念化しようとしているときに、正しい方向にプッシュする必要があるだけです。ありがとう!

4

3 に答える 3

5

Model-View-Controller パターンに慣れていない場合は、よく読んでおくことをお勧めします。MVC は、多くの場合、Web アプリケーションの高レベル設計の適切な出発点です。

また、CMS は十分に大きなプロジェクトであり、CodeIgniter、Symfony、Zend などの PHP フレームワークを使用して作業を楽にすることを検討する必要があります。面倒な作業や一般的なタスクの多くが削除されます。

動的なページの作成と表示

テキスト コンテンツ (基本的にフォームに入力するもの) とそのコンテンツを囲む HTML テンプレートの 2 つに分割する必要があると思います。

ページまたはブログ投稿を作成するとき、実際のコンテンツ (作成フォームに入力したもの) を何らかのデータベース (必ずしも RDBMS である必要はありませんが、MySQL のスキルを構築しようとしている場合は、合理的な選択)。

次に、別の関数を使用してそのコンテンツを HTML テンプレートにバインドし、ユーザーが特定のページを読み込んだときにそれを提示します。

URL ルーティング

見栄えの良い URL を取得するには、apache の mod_rewrite などを使用できます。これを使用して、次のように URL を変換できます。

posts/how-to-make-a-cms

これに:

posts.php?title=how-to-make-a-cms

次に、posts.php を通常どおり GET から読み取ることができます。どのように変換を行うかはかなり自由です。

非常に複雑な書き直しを避けるために、多くの場合、コールするクラスとメソッド、およびそれに渡す引数を決定する中央ルーティング スクリプトに移動するようにすべてを構造化します。したがって、上記の URL を次のように書き換えます。

main.php?a=posts/how-to-make-a-cms

次に、main.php は GET からその引数のセグメントを解析し、それらの送信先を見つけます。それがかかるかもしれないように、次のようなことposts/show/how-to-make-a-cmsをします:

$o = new Posts();
$o->show("how-to-make-a-cms");

そのようにすれば、次のように、わずかにきれいな URL だけを受け入れる意思がある限り、mod_rewrite を完全に回避できると思います。

mysite.com/main.php?/posts/show/how-to-make-a-cms

私はこれまでこの種のことを行ったことがありません (フレームワークがすでに非常に美しく行っているため)。

于 2012-10-27T04:50:14.627 に答える
1

phpacademy.orgまたはthenewboston.orgからいくつかのチュートリアルを見る必要があります。これらには、PHP に関してこれまでに作成された最高かつ最も価値のあるチュートリアルがあります。

そのコース/プレイリストから始めようとするかもしれません:

phpacademy.org: PHP チュートリアル: ブログの作成

すべてを理解していない場合は、これを見てください。

thenewboston.org: 公式の初級 PHP チュートリアル プレイリスト!


PHP 自体に問題がない場合は、MVC をサポートする単純なフレームワークを使用してみてください。これにより、ページ間の変数の処理が大幅に改善され、データベースの操作が容易になります。

phpacademy.org: CodeIgniter の紹介

phpacademy.org: CodeIgniter の紹介 - 基本的な Web サイト

于 2012-10-27T05:04:14.760 に答える
1

私も同じ問題を抱えていました。これは、fopen 関数を使用して簡単に行うことができます。チュートリアルへのリンクは次のとおりです: http://www.tizag.com/phpT/filecreate.php

<?php 
function wwwcopy($link,$file) 
{ 
   $fp = @fopen($link,"r"); 
   while(!feof($fp)) 
   { 
       $cont.= fread($fp,1024); 
   } 
   fclose($fp); 

   $fp2 = @fopen($file,"w"); 
   fwrite($fp2,$cont); 
   fclose($fp2); 
} 

//Example on using this function 
wwwcopy("http://www.domain.com/list.php?member=sample", "sample.html"); 
//Another example 
wwwcopy("http://www.domain.com/list.php?member=sample2", "sample2.html"); 

?>
于 2012-10-27T05:10:57.647 に答える