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']の値を使用して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
    }
    

    これは明らかに過度に単純化された例であり、セキュリティリスクを回避するために、入力を適切にエスケープし、準備されたステートメントを使用することを実際に確認する必要があります。また、MySQLiまたは別のデータベースアクセス層を使用する場合、準備/実行/フェッチコードはわずかに異なります。



    1. Springデータのエンティティにスキーマ名を追加しますか?

    2. エラーコード:1005。テーブル'...'を作成できません(errno:150)

    3. 選択入力フィールドにmysqlからの値を入力する

    4. phpを使用してtxtファイルをpostgresにインポートする際の問題