我已经使用链接http://devlup.com/programming/php/create-url-shortener-php/853/创建了url shortner,因为我使用的是EasyPhp5.3.6.0,但是我没有找到所需的输出,这意味着在点击缩短的url之后它没有重定向到原始页面。可能我认为问题出在数据库方面 这是我在数据库方面所做的步骤,请让我知道任何错误
首先我去了Configuration-> PhpMyAdmin链接,,然后我在这里创建了名为“leaf”的数据库我没有选择'Collation'名为dropdown我将表名称作为“团队”,字段数为“3”然后我修改后的字段如下所示
**Field id url shortened**
Type INT VARCHAR VARCHAR
Lenght/Values 255 10000 10000
Default None None None
然后我将'id'作为主键
这些是PHP代码的一部分,其中数据库处理是一个 在sortner.php中
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("leaf", $con); //Replace with your MySQL DB Name
$urlinput=mysql_real_escape_string($_POST['url']);
$id=rand(10000,99999);
$shorturl=base_convert($id,20,36);
$sql = "insert into team values('$id','$urlinput','$shorturl')";
mysql_query($sql,$con);
echo "Shortened url is <a href=\"http://projects.devlup.com/url/". $shorturl ."\">http://devlup.com/". $shorturl ."</a>";
mysql_close($con);
?>
在decoder.php中
$con = mysql_connect("localhost","root","");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("leaf", $con); //Replace with your MySQL DB Name
$de= mysql_real_escape_string($_GET["decode"]);
$sql = 'select * from team where shortened="$de"';
$result=mysql_query("select * from team where shortened='$de'");
while($row = mysql_fetch_array($result))
{
$res=$row['url'];
header("location:$res");
}
请告诉我这里有什么问题,我的所有文件都在根文件夹(www)下,这意味着C:\ Program Files \ EasyPHP-5.3.6.0 \ www \ test
答案 0 :(得分:1)
您确定已添加重写规则吗?
Options +FollowSymLinks -Indexes -MultiViews
RewriteEngine on
#
# Internally rewrite shortened URL requests to de-shortened URL lookup script filepath plus query string
RewriteRule ^([\w\d]{4})$ decoder.php?decode=$1 [L]
检查一下。否则检查一下
http://yourdomain.com/decoder.php?decode=<URL>
并检查你是否看到任何东西。
另外:一种丑陋但快速的调试方法是添加die('somehing');
并继续通过脚本移动它以查看脚本停止的位置
你的脚本可以很简单:
$result = mysql_query("SELECT * FROM team WHERE shortened = '$de' LIMIT 1");
$row = mysql_fetch_array($result);
$res = $row['url'];
header("Location: $res");
exit;
另外,根据您的评论,您的脚本在哪里?是在文件夹url
下还是在根文件夹下?这可能会使工作成为重写规则
此外:
LIMIT 1
的末尾(因为短字符串只有1个网址)mysql_fetch_array
一次location
Location
并在该句后添加exit
答案 1 :(得分:0)
我不确定您的问题详细信息是否已详细,但如果您认为从数据库中获取缩短的URL是一个问题,那么至少尝试调试代码并查看周围发生的事情,例如:
$de= mysql_real_escape_string($_GET["decode"]);
echo "Shortened code: $de \n";
$result = mysql_query("select * from team where shortened='$de'");
while($row = mysql_fetch_array($result))
{
var_dump($result);
$res=$row['url'];
echo "Raw URL: $res \n";
//header("location:$res");
}
我自己也开发了一个URL缩短脚本,分发here。我知道如何制作它很多,所以如果你提供足够的信息,我可以帮助你。您可以在http://trisle.net/u/
上试用我的演示希望我能提供帮助。