sql >> Database teknologi >  >> RDS >> Mysql

Omskriv URL, erstat ID med titel i forespørgselsstrengen

Selvfølgelig er det muligt, for et PHP-script kan din .htaccess se sådan ud:

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

Dette vil omskrive alle URL'er undtagen mappe- eller filnavne til "index.php?url=THE-TYPED-ADDRESS".

I din index.php kan du derefter bruge værdien af ​​$_GET['url'] til at bestemme 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
}

Dette er naturligvis et alt for forenklet eksempel, og du bør virkelig sørge for at undslippe dine input og bruge forberedte erklæringer for at undgå sikkerhedsrisici. Hvis du bruger MySQLi eller et andet databaseadgangslag, vil din forberedelse/udførelse/hente-kode også variere en smule.



  1. Datasynkronisering mellem MySQL og MongoDB

  2. Hvordan opretter jeg en MySQL-forbindelsespulje, mens jeg arbejder med NodeJS og Express?

  3. Sådan sammenkædes strenge i SQL

  4. Find forbindelserne mellem databasemailkonti og databaseprincipper i SQL Server (T-SQL)