Mysql
 sql >> база данни >  >> RDS >> Mysql

Пренапишете URL, като замените ID със заглавие в низа на заявката

Разбира се, че е възможно, за PHP скрипт вашият .htaccess може да изглежда така:

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

Това ще пренапише всички URL адреси с изключение на имената на директории или файлове на "index.php?url=THE-TYPED-ADDRESS".

След това във вашия index.php можете да използвате стойността на $_GET['url'], за да определите идентификатора:

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

Това очевидно е твърде опростен пример и наистина трябва да сте сигурни, че правилно избягвате въведените си данни и използвате подготвени изявления, за да избегнете рискове за сигурността. Освен това, ако използвате MySQLi или друг слой за достъп до база данни, вашият код за подготовка/изпълнение/извличане ще варира леко.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP прикаченият файл в имейла е празен

  2. MySQL, връща всички резултати в рамките на X последните часове

  3. Как да добавя низ към стойност на колона в MySQL?

  4. CakePHP рекурсивно изтриване

  5. Как да тествате SQL изявление за актуализиране, преди да го стартирате?