Zoekreeks, een pagina vult uit DB of bestand

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'");
    }

Ik probeer te vragen, hoe nemen ze deze pagina op? Is het zoals Drupal/elke CMS waar de PHP en pagina is opgeslagen in de database of is het een fysiek bestand op de server? Wat is de beste manier om het bestand te verkrijgen (niet-hoofdlettergevoelige URL)?

0
Praktisch voorbeeld, niets te maken met Facebook. Het gaat over $ _GET ['variabelen']/querystrings en het invullen van een pagina op basis van de querystring. Hoe heet de pagina? Het is een supereenvoudige vraag. Ik maak het waarschijnlijk te ingewikkeld.
toegevoegd de auteur Graham, de bron
Wil je echt weten hoe Facebook werkt, of wil je gewoon iets soortgelijks bouwen? Facebook krijgt een krankzinnige hoeveelheid verkeer, daarom is de website niet gebouwd zoals elke andere site ter wereld. Het zou me niet verbazen als die pagina helemaal geen PHP-code uitvoert, ook al staat er ".php" in de URL.
toegevoegd de auteur Abhi Beckert, de bron
Het is niet echt een simpele vraag, en er zijn veel totaal verschillende antwoorden. Het is belangrijk om een ​​goed systeem te hebben, anders zal uw code vaak bugs bevatten. Onthoud dat "profile.php" veel verschillende pagina's zal doen, niet alleen die ene pagina, en je hebt een manier nodig om de code voor alle verschillende pagina's te scheiden. Ik heb ongeveer met benadering beantwoord hoe we dingen doen in de webprogrammeringswereld waar ik werk.
toegevoegd de auteur Abhi Beckert, de bron

1 antwoord

Ik zou een klasse hebben met een enkele methode, die 'sk' leest en een andere methode uitvoert, afhankelijk van wat de waarde ervan is.

Een methode zou zijn 'foto's' die 'id' zouden lezen en een foto uit de database zouden halen. Het zou dan een andere methode uitvoeren, displayPage , die een pagina van die gegevens zal weergeven.

De methode displayPage neemt een bestandsnaam en een reeks variabelen om aan de sjabloon te leveren. Het stelt een slim object in , biedt de variabelen en geeft de opdracht om de sjabloon weer te geven.

In de sjabloon zou ik een andere sjabloon opnemen voor de globale koptekst op elke pagina van de site, dan zou ik de inhoud van de html-pagina hebben, slimy gebruiken om dynamische waarden in te voegen en vervolgens een globale voettekst toevoegen.

Merk op dat ik dit systeem veel heb vereenvoudigd. Zo'n echte pagina kost me een week om alle code te schrijven, omdat een grote website veel dingen doet om een ​​eenvoudige pagina weer te geven (bijvoorbeeld: ontdek of de aangemelde gebruiker daadwerkelijk toegang heeft tot de pagina .. ik heb geen toegang tot het voorbeeld dat je hebt gegeven).

<?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();

En de smarty-code:

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

View Photo {$photo->name|escape}

height|escape}>

{include file='foot.tpl'}
1
toegevoegd