Is this facebook link populated fully from the DB? Or, is it a
physical file with PHP in it? Just, how is
this page called?
http://www.facebook.com/profile.php?id=49300915&sk=photos
They probably do something like:
if(isset($_GET['id'], $_GET['sk'])) {
mysql_query("SELECT info, photos FROM users WHERE id = '$id'");
}
私は尋ねようとしています、彼らはこのページをどのように含んでいますか?
PHPやページがDBに格納されているDrupal/CMSのようなものか、それともサーバ上の物理ファイルですか?後者の場合、ファイルを取得する最善の方法(大文字と小文字を区別しないURL)は何ですか?
私は、値が何であるかに応じて、 ‘sk’を読み込んで別のメソッドを実行する単一のメソッドを持つクラスを持っています。
1つの方法は ‘写真’で、これは ‘id’を読み取ってデータベースから写真を取り出すものです。次に、別のメソッド
displayPage
を実行すると、そのデータのページが表示されます。
displayPage
メソッドはテンプレートに提供する
“テンプレート”ファイル名と変数の配列を取ります。 スマートオブジェクトを設定し、変数を提供し、テンプレートを表示するように指示します。
テンプレートの中には、サイト内のすべてのページにあるグローバルヘッダー用の別のテンプレートを含めると、htmlページのコンテンツがあり、smartyを使用して動的な値を挿入し、グローバルフッターを追加します。
私はこのシステムを多く簡略化していることに注意してください。大きなウェブサイトは単純なページを表示するだけのものが多いので(例:ログインしたユーザーが実際にページにアクセスできるかどうかを調べるなど)、実際のページではすべてのコードを書くのに1週間かかります。私はあなたが与えた例にアクセスできない)。
<?php
// profile.php
class ProfileController
{
public function run()
{
if ($_GET['sk'] == 'photos')
return $this->photosPage();
}
protected function photosPage()
{
$id = (int)$_GET['id'];
$result = mysql_query("select * from photo where id = $id");
$photo = mysql_fetch_object($photo);
$this->displayPage('view-photo.tpl', array('photo' => $photo);
}
protected function displayPage($templateFile, $templateVariables)
{
$smarty = new Smarty();
foreach ($templateVariables as $variableName => $variableValue) {
$smarty->assign($variableName, $variableValue);
}
$smarty->display($templateFile);
}
}
$conntroller = new ProfileController();
$controller->run();
スマートなコード:
<!-- view-photo.tpl -->
{include file='head.tpl'}
View Photo {$photo->name|escape}
height|escape}> {include file='foot.tpl'}