Mysql
 sql >> Datenbank >  >> RDS >> Mysql

URL umschreiben, ID durch Titel in der Abfragezeichenfolge ersetzen

Natürlich ist es möglich, für ein PHP-Skript könnte Ihre .htaccess-Datei etwa so aussehen:

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

Dadurch werden alle URLs außer Verzeichnis- oder Dateinamen in "index.php?url=THE-TYPED-ADDRESS" umgeschrieben.

In Ihrer index.php könnten Sie dann den Wert von $_GET['url'] verwenden, um die ID zu ermitteln:

// 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
}

Dies ist offensichtlich ein zu vereinfachtes Beispiel, und Sie sollten wirklich sicherstellen, dass Sie Ihre Eingaben richtig maskieren und vorbereitete Anweisungen verwenden, um Sicherheitsrisiken zu vermeiden. Auch wenn Sie MySQLi oder eine andere Datenbankzugriffsschicht verwenden, wird Ihr Vorbereitungs-/Ausführungs-/Abrufcode leicht variieren.