如何将数据库中的URL代码附加到域名并使用PHP重定向?

时间:2009-09-09 08:23:38

标签: php mysql redirect url-shortener

我正在使用一半的URL缩短系统。我从用户那里获得了URL,然后在MySQL中创建了代码。然后我必须将即将到来的代码附加到我的域名(现在我正在使用localhost),如http://localhost/a5c3,然后将其重定向到真实域。

我住进了这里。代码片段对我来说是好事,至少要了解我要做什么,或者你可以解释我将要做什么。

3 个答案:

答案 0 :(得分:1)

如果您没有将短代码与URL相关联,那么您需要这样做,并且重定向很容易。

算法:

将表单中的URL和生成的代码保存到数据库中供以后使用。

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

向用户显示缩短的网址。

如果您想重定向用户,在他/她将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")

得到它,这只是一种算法。

答案 1 :(得分:1)

您需要让服务器将不存在的URL重定向到现有页面(例如,在Apache上使用mod_rewrite)。这个“全能”页面将读取URL,检查数据库中是否存在给定的代码,如果存在,则重定向到正确的URL。 Ainab的伪代码解释了最后一部分。

  

如果您没有关联短代码   用URL然后你需要这样做,   和重定向将很容易。

     

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

答案 2 :(得分: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.";
}