我正在使用一半的URL缩短系统。我从用户那里获得了URL,然后在MySQL中创建了代码。然后我必须将即将到来的代码附加到我的域名(现在我正在使用localhost),如http://localhost/a5c3,然后将其重定向到真实域。
我住进了这里。代码片段对我来说是好事,至少要了解我要做什么,或者你可以解释我将要做什么。答案 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.";
}