0

私はURL短縮システムの半分を使用しています。ユーザーからURLを取得し、MySQLでそのためのコードを作成します。次に、 http:// localhost / a5c3のようにドメイン名(現在はローカルホストで作業しています)に次のコードを追加して、実際のドメインにリダイレクトする必要があります。

私はここで立ち往生しました。コードスニペットは、少なくとも私が何をしようとしているのかを理解するのに役立ちます。または、私が何をしようとしているのかを説明することもできます。

4

3 に答える 3

1

ショートコードをURLに関連付けていない場合は、それを行う必要があります。そうすれば、リダイレクトが簡単になります。

アルゴリズム:

後で使用できるように、フォームと生成されたコードからデータベースにURLを保存します。

$url = $_POST['url']
Generate code
Concatenate your URL with the code
$full_url = $url.$code

短縮URLをユーザーに表示します。

ユーザーをリダイレクトする場合は、ユーザーがブラウザアドレスにURLを入力した後、次のようにします。

.htaccessファイルを作成し、それに次の行を追加して、ルートフォルダーにドロップします。

RewriteEngine on
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php?code=$1 [L]

.htaccessファイルは、すべてをindex.phpにリダイレクトします。たとえば、ユーザーがhttp://example.com/ujijuiと入力すると、.htaccessはhttp://example.com/index.php?code=ujijui呼び出します。したがって、$ _ GETを使用して、URL内のクエリ文字列をキャプチャできます。

index.phpファイル:

$code = $_GET['code']
mysql_connect('localhost', 'user', 'password')
mysql_select_db('your_db')
$sql = "SELECT url from Table where code=$code"
$result = mysql_query($sql)
Loop through result and get the URL

header("Location: $url")

わかりました、これは単なるアルゴリズムです。

于 2009-09-09T08:29:48.903 に答える
1

サーバーに存在しないURLを既存のページにリダイレクトさせる必要があります(たとえば、Apacheでmod_rewriteを使用します)。この「キャッチオール」ページはURLを読み取り、指定されたコードがデータベースに存在するかどうかを確認し、存在する場合は適切なURLにリダイレクトします。Ainabの擬似コードは、最後の部分を説明しています。

ショートコードをURLに関連付けていない場合は、それを行う必要があります。そうすれば、リダイレクトが簡単になります。

SELECT url from Table where code=code header("Location: $url")

于 2009-09-09T08:40:48.607 に答える
1

リダイレクトの問題については、次のようなことを試してください。

.htaccessファイル:

RewriteEngine on
RewriteCond $1 !^(index\.php)
RewriteRule ^(.*)$ index.php?url=$1 [L]

そして、index.phpファイルで:

<?php
    $url = $_GET['url'];

    // These will be taken from database
    $urls_associations = array(
      '1234' => "http://www.example.com",
      '5678' => "http://www.google.com",
      '90AB' => "http://stackoverflow.com",
    );

    // Redirect
    if (isset($urls_associations[$url])) {
      $redirect = $urls_associations[$url];
      header("Location: $redirect");
      echo "<a href='$redirect'>Go To : $redirect</a>";
    }
    else {
      echo "Unknown URL code.";
    }

次に、ユーザーがたとえばhttp:// localhost / 1234にアクセスすると、 http ://example.comなどにリダイレクトされます。もちろん、から読み取るのではなく、データベースでクエリを実行する必要があります。配列ですが、非常に簡単に見えます。次のようなものを使用してください。

$code = mysql_escape_string($url);
$res = mysql_query("SELECT url FROM mytable WHERE code='$code'");
if ($redirect = mysql_result($res)) {
  header("Location: $redirect");
  echo "<a href='$redirect'>Go To : $redirect</a>";
}
else {
  echo "Unknown URL code.";
}
于 2009-09-09T10:40:34.473 に答える