2

facebook、twitter、youtuBe などの Web サイトで見たことがあります。以下の例のようにコードが URL で渡されます。

その背後にある完全なロジック(PHP、MYSQL)を誰かが知っているかどうか疑問に思っています。前もって感謝します。

コード:QeAuADr0yL

例: http://instagram.com/p/QeAuADr0yL

4

4 に答える 4

1
 http://instagram.com/p/QeAuADr0yL

上記のリンク「QeAuADr0yL」は、データを取得することに基づいて一意の識別子を指定します。この識別子は、md5()またはsha1()などを使用してエンコードされます。

于 2012-10-17T13:36:04.747 に答える
1

リクエストhttp://instagram.com/p/QeAuADr0yLが .htaccess ファイルに格納されているコードを使用して Apache Web サーバーによって解析されると、最初のパラメーター値がpであり、2 番目のパラメーター値がhdashfdsahgofosa

あなたの要求は次のように翻訳されるかもしれませんwww.a.com/index.php?p1=a&p2=b

ここでp1、 とp2は変数で、abはそれらの値です

$_GET['a']これらの値はand$_GET['b']メソッドを使用して取得できます。

htaccess ファイルとルールの完全な例を示します。

RewriteRule ^([a-zA-Z-]+)/(product)-([0-9]+)$ index.php?action=$1&product=$3 [NC,L]

上記のコードはwww.a.com/aBcdE/product-1836455ブラウザで次のように表示されます

そしてそれは次のように翻訳されています:

$action = aBcde;

$product = 1836455;

最初のパラメータは az および/または AZ の間の値を持つことができます パラメータ 2 は az AZ 0-9 の間の値を持ちます -

Options +SymLinksIfOwnerMatch

RewriteEngine on


RewriteRule ^([a-zA-Z-]+)/(producator)-([0-9]+)$ index.php?action=$1&producator=$3 [NC,L]
RewriteRule ^([a-zA-Z-]+)-([0-9]+)/(producator)-([0-9]+)$ index.php?action=$1&id=$2&producator=$4 [NC,L]

RewriteRule ^([a-zA-Z-]+)/(producatorx)-([0-9]+)$ index.php?action=$1&producatorx=$3 [NC,L]
RewriteRule ^([a-zA-Z-]+)-([0-9]+)/(producatorx)-([0-9]+)$ index.php?action=$1&id=$2&producatorx=$4 [NC,L]

RewriteRule ^([a-zA-Z-]+)$ index.php?action=$1 [NC,L]

RewriteRule ^([a-zA-Z-]+)-([0-9]+)$ index.php?action=$1&id=$2 [NC,L]

RewriteRule ^(tag)/([a-z0-9]+)$ index.php?action=tag&tag=$2 [NC,L]

RewriteRule ^([a-zA-Z-]+)-([0-9]+)/(update)-([a-z0-9]+)$ index.php?action=$1&id=$2&saction=update&code=$4 [NC,L]
RewriteRule ^([a-zA-Z-]+)-([0-9]+)/(delete)-([a-z0-9]+)$ index.php?action=$1&id=$2&saction=delete&code=$4 [NC,L]

RewriteRule ^([a-zA-Z-]+)-([0-9]+)/([a-zA-Z-]+)-([0-9]+)$ index.php?action=$1&id=$2&saction=$3&sid=$4 [NC,L]

RewriteRule ^(.*)-([0-9]+).html$ index.php?action=details&id=$2 [NC,L]
于 2012-10-17T13:45:27.300 に答える
0

「GET」メソッドについて言及していますか?

www.someurl.com/?param=value&otherparam=othervalue などの Web サイトが表示される場合、これは GET と呼ばれます。

次のようなものを使用してPHPでアクセスできる配列を作成します

    <?php echo $_GET["param"]; ?>

これにより、パラメーターの値、この場合は「値」が出力されます。

于 2012-10-17T13:32:46.533 に答える
0

URL で渡される最も一般的なコードはハッシュです。さまざまなアルゴリズムがあり、ほとんどの人は md5 を使用していますが、より安全なものがあります。ハッシュを作成し、ハッシュが正しいかどうかに応じてページへのアクセスを制限したい場合は、値を確認できます。

url.com?x=5273909c02b8ce7ae42a4e21542b3326

if( $_GET['x'] == md5('hashcode') ) {
   // it matches
}else{
   // it doesn't
}

他のhasingアルゴリズムがあります。ここにいくつかのドキュメントがあります。

.htaccess ファイルを介してパスの一部として使用すると、URL からこれらを取得できます。

これらの特定のサイトに使用される特定のアルゴリズムはカスタムの場合がありますが、PHP にはこれを模倣できるプリセット関数が多数あります。

より短いものを生成するには、substr() 関数で最初のいくつかの必要な文字を取得し、データベースを使用して衝突がないことを確認します。新しいコードが作成されたら、必要な長さに切り捨て、データベースにクエリを実行して、使用されているかどうかを確認し、使用されていない場合は挿入します。

または、独自に作成し、データベースで同じプロセスを使用して、衝突がないことを確認することもできます。

ハッシュがたくさんある場合は、すべての文字と数字を組み込んだ適切なランダム文字列ジェネレーターを作成するのに時間がかかる場合があります。ハッシュが短いほど、衝突の可能性が高くなり、可能な組み合わせのプールが小さくなります。 . 可能な文字を md5 で 15^(使用される文字) から 36^(使用される文字)に増やすと、可能な組み合わせのプールが大幅に増加します。

于 2012-10-17T13:37:59.193 に答える