-3

データベースからデータを取得するより良い方法を知る必要があります。たとえば、製品の確認ボタンをクリックすると開発中のページでは、その特定の製品の ID がhttp://domainname.com/products.php?id=1などの製品ページに渡されます。明らかに、これはデータを取得するための悪い方法です。?id=1 を使用せずに、この id 値を製品ページに渡すにはどうすればよいですか。

ありがとう

4

1 に答える 1

3

どうやらこれはデータを取得する悪い方法です

それはまったく真実ではありません。この場合、$_GET の代わりに $_POST を使用すると、特定の製品のページに純粋な URL からアクセスできなくなります。ID 2321 の製品のリンクを Facebook の友達と共有したい場合はどうすればよいですか?

たとえば、londonperfumeshop.co.uk/diesel-zero-plus-men などのウェブサイトをご覧ください。私が推測する製品はデータベースから取得されますが、ドメインを介して渡される ID はありません。それはphpでどのように行われますか?– user2257461

これはURL リライトと呼ばれます。基本的にPHPの機能ではありません。これは Web サーバーの機能です。URL 書き換えの背後にある概念は、URL のパターンを別の URL のパターンにマップすることです。例えば。マップしたい

  • products/(.*) -> products.php?alias=$1

誰かが次のリンクにアクセスしようとした場合:

  • products/url-rewrite-for-dummy
  • products/head-first-web-mobile

次のリンクにマップされます。

  • products.php?alias=url-rewrite-for-dummy
  • products.php?alias=head-first-web-mobile

つまり、基本的にはまだ $_GET です。エイリアスを使用すると、URL が見栄えがよくなり、親しみやすくなりますが、小さな問題があります。エイリアスは変更できます。製品の名前を変更したいので、エイリアスも変更する必要があるとしましょう。古いリンクが無効になります。この問題を解決するには、エイリアスと ID を組み合わせることができます。

  • products/([0-9]+)-(.*) -> products.php?id=$1

誰かが次のリンクにアクセスしようとした場合:

  • products/1-url-rewrite-for-dummy
  • 製品/2-head-first-web-mobile

次のリンクにマップされます。

  • products.php?id=1
  • products.php?id=2

エイリアスで ID を使用すると、クエリの速度が向上します。製品の ID は常に同じです (製品 ID が変更されることはまれです)。

于 2013-06-09T17:23:41.657 に答える