-1

私が抱えているこの問題にアプローチする最良の方法を探しており、それを試して解決する方法を探していました.

という名前のデータベーステーブルがproductsあり、このテーブルには靴、服、帽子などのすべての製品が含まれています

ID私が使用しているコードがこのように見える製品に基づいて、すべてをエコーするために使用した単一のページがあります

<a href="product.php?ID=<?php echo $row['ID']; ?>">View</a>

URLは次のようになります

http://www.example.x10.mx/product.php?ID=1

問題は、誰かがID2 または 3 または 4 に変更できることです.... これは起こるべきではありません。問題が有料ドメインを使用していないことなのか、x10hosting 上にあるだけなのかはわかりません。

問題

IDURLの を任意の乱数に変更することから用途を提供したいのですが、誰かがこれを行う方法を教えてください。

別の質問 phpMyadminがランダムな文字と数字の混合物を生成できる方法ですか?それが私の問題を解決するために私が考えた唯一の方法だからです

ありがとう

4

2 に答える 2

-1

これは本当の答えではありませんが、アプリの設計状況が悪いと感じているため、ここに投稿せざるを得ないと感じました

主な質問のコメント スレッドから:

混乱させて申し訳ありませんが、本当に混乱させるものではありません。例として、キャップ、靴はproduct.phpページを使用し、手袋、シャツはitemview.phpページを使用します。どちらのページも、ビューをクリックすると製品ID (ID) を使用します。それが理にかなっていることを願っています

それはまだ意味がありません。あなたが言及したこれらのすべては、実際には製品です...さまざまな種類の製品です。適切な設計では、すべて同じ URL 形式を使用します。製品のタイプに基づいて物事を行うロジックは、コントローラーとして使用しているものに属します-あなたの場合、URLの.phpページを想定しています。これらのうちの 1 つだけが必要です...そこから、さまざまなことができます。

最も基本的な意味での例:

// This is product.php

if(!isset($_GET['id'])) {
  // 404 or some other error
}

$product = get_item_by_id($_GET['id']);

if(!$product) {
   // 404 or other error
}

switch($product['type']) {
    case 'cap':
    case 'shoes':
       // for cap and shoes use the product_view template
       include 'product_view.php';
       break;

    case 'gloves':
    case 'shirts':
        // for gloves and shirts use the item_view template
       include 'item_view.php';
       break;

    default:
       // otherwise use the default product view template
       include 'default_view.php';

}

// anything else you need to do that isnt done in the view specific file

これらはすべて特定の製品であると想定していますが、あなたの例はカテゴリのように聞こえます. 通常、製品とほぼ同じことを行うが、何らかの視覚的な方法で製品エンティティの「コレクション」を出力する、カテゴリ用の別のページがあります。

于 2013-07-09T13:45:44.607 に答える
-1

仕事で商取引システムを実行するときに、これと同様の問題に取り組む必要がありました。私たちがそれを処理した方法は、ユーザーがクエリで持っている値のハッシュを提供することでした..

ソルトに対してクエリ文字列を暗号化し、URL を /product.php?id=1&hash=ajk23j4aksdljfklasdjf2345j にする場合 - 次に、product.php でハッシュが正しく一致することを確認します。ハッシュが一致しない場合は、ユーザーが何かを変更したことを意味します。

于 2013-07-09T00:17:49.323 に答える