sql >> Databáze >  >> RDS >> Mysql

Přepište URL a nahraďte ID titulkem v řetězci dotazu

Jistě je to možné, pro PHP skript může váš .htaccess vypadat nějak takto:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>

Tím se přepíší všechny adresy URL kromě názvů adresářů nebo souborů na "index.php?url=ADRESA TYPU".

Ve svém index.php byste pak mohli použít hodnotu $_GET['url'] k určení ID:

// init DB layer
if (isset($_GET['url']) && !empty($_GET['url'])) {
  $url = my_filter_function($_GET['url']); // filter input
  $pdo = my_get_pdo_function(); // get configured PDO objected
  $query = "SELECT id FROM my_router_table WHERE url = ? LIMIT 1"; // use prepared statements for security/performance reasons

  $stmt = $pdo->prepare($query);
  $stmt->bindValue(1, $url, PDO::PARAM_STR); // bind the value as a string

  // ternary operator expanded for readability
  if ($stmt->execute()) {
    $id = $stmt->fetch(PDO::FETCH_ASSOC);
  } else {
    $id = -1; // 404 page
  }

  // fetch content/render page according to ID
}

Toto je zjevně příliš zjednodušený příklad a měli byste se skutečně ujistit, že správně unikáte ze svého vstupu a používáte připravené příkazy, abyste se vyhnuli bezpečnostním rizikům. Také, pokud používáte MySQLi nebo jinou vrstvu pro přístup k databázi, váš kód pro přípravu/spuštění/načtení se bude mírně lišit.



  1. Jak Bootstrap MySQL nebo MariaDB Galera Cluster - Aktualizováno

  2. OracleDataSource vs. Oracle UCP PoolDataSource

  3. Jak mohu určit nainstalované instance SQL Server a jejich verze?

  4. Jak zkontrolovat, zda uživatel kliknul na [Storno] na InputBox ve VBA