2011-11-12 5 views
0

このfacebookリンクはDBから完全に読み込まれていますか?それとも、PHPが入っている物理ファイルですか?ちょうど、このページはどのように呼ばれていますか?

彼らはおそらくような何か http://www.facebook.com/profile.php?id=49300915&sk=photosDBまたはファイルからページを取り込むクエリ文字列

if(isset($_GET['id'], $_GET['sk'])) { 
    mysql_query("SELECT info, photos FROM users WHERE id = '$id'"); 
    } 

私が尋ねるしようとしているが、どのように彼らは、このページが含まれていますか? PHPやページがDBに格納されているDrupal/CMSのようなものか、それともサーバ上の物理ファイルですか?後者の場合、ファイルを取得する最善の方法(大文字と小文字を区別しないURL)は何ですか?

+0

あなたが実際にFacebookがどのように動作するかを知りたい、またはあなただけの似た何かを構築したいですか? Facebookはトラフィックの狂気の量を受け取るので、ウェブサイトは世界の他のサイトと同様に構築されていません。 URLに ".php"があるにもかかわらず、そのページがPHPコードをまったく実行しないと私は驚くことはありません。 –

+1

実例、facebookとは関係ありません。それは約$ _GET [変数] /クエリ文字列であり、クエリ文字列に基づいてページを生成します。ページはどのように呼び出されますか?それは超簡単な質問です。私はおそらくそれを複雑にしています。 – Graham

+0

これは本当に簡単な質問ではなく、全く異なる答えがたくさんあります。良いシステムを持つことが重要です。そうしないと、コードがバグになる傾向があります。 「profile.php」は、その1ページだけでなく、多くの異なるページを実行することになり、すべての異なるページのコードを分離する方法が必要であることを覚えておいてください。私は、私が働いているWebプログラミングビジネスで、私たちがどのようにして行動するかについて答えました。 –

答えて

1

私は、値が何であるかに応じて 'sk'を読み込み、別のメソッドを実行する1つのメソッドを持つクラスを使用します。

「写真」は、「ID」を読み取ってデータベースから写真を取得する方法です。次に、もう1つの方法、displayPageを実行し、そのデータのページを表示します。

displayPageメソッドはテンプレートに提供する "テンプレート"ファイル名と変数の配列を取ります。 smarty objectを設定し、変数を提供し、テンプレートを表示するように指示します。

テンプレート内には、サイト内のすべてのページにあるグローバルヘッダー用の別のテンプレートを含めると、スマートで動的な値を挿入し、グローバルフッタを含めるHTMLページコンテンツがあります。

私はこのシステムを多く簡略化していることに注意してください。大きなウェブサイトは単純なページを表示するだけのものが多いので(例:ログインしたユーザーが実際にページにアクセスできるかどうかを調べるなど)、実際のページではすべてのコードを書くのに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(); 

そしてSmartyのコード:

<!-- view-photo.tpl --> 
{include file='head.tpl'} 

<h1>View Photo {$photo->name|escape}</h1> 

<img src="{$photo->src|escape}" width="{$photo->width|escape} height="{$photo->height|escape}> 

{include file='foot.tpl'} 
関連する問題