sql >> Database >  >> RDS >> Mysql

URL herschrijven, ID vervangen door titel in queryreeks

Natuurlijk is het mogelijk, voor een PHP-script kan je .htaccess er ongeveer zo uitzien:

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

Hierdoor worden alle URL's behalve de directory- of bestandsnamen herschreven naar "index.php?url=THE-TYPED-ADDRESS".

In je index.php zou je dan de waarde van $_GET['url'] kunnen gebruiken om de ID te bepalen:

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

Dit is duidelijk een te vereenvoudigd voorbeeld en u moet er echt voor zorgen dat u uw invoer goed ontwijkt en voorbereide verklaringen gebruikt om veiligheidsrisico's te vermijden. Als u MySQLi of een andere databasetoegangslaag gebruikt, kan uw voorbereidings-/uitvoer-/ophaalcode ook enigszins variëren.



  1. Spring Boot Query-annotatie met nativeQuery werkt niet in Postgresql

  2. verander mysql standaard engine naar innodb

  3. Hoe krijg ik een geheel getal van MySQL als geheel getal in PHP?

  4. Meerdere Mysql-instructies groeperen om het aantal meerdere statussen op te halen