Как создать URL-адрес с помощью PHP - PullRequest
0 голосов
/ 28 мая 2011

Я создал URL shortner, используя ссылку http://devlup.com/programming/php/create-url-shortener-php/853/, для этого я использую EasyPhp5.3.6.0, но я не нахожу требуемый вывод, то есть после нажатия на сокращенный URL он не перенаправляетна исходную страницу. Возможно, я думаю, что проблема на стороне базы данных. Это шаги, которые я сделал на стороне базы данных, пожалуйста, дайте мне знать, что-то не так

Сначала я пошел на ссылку Конфигурация-> PhpMyAdmin ,, Затемя создал базу данных с именем "leaf" здесь я не выбрал "Collation" с именем dropdown, я сделал имя таблицы как "team" с количеством полей как "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

Ответы [ 2 ]

1 голос
/ 28 мая 2011

вы уверены, что добавили правило перезаписи?

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'); и продолжайте перемещать его по сценарию, чтобы увидетьгде сценарий останавливается

РЕДАКТИРОВАТЬ 2:

Ваш сценарий может быть простым, как это:

$result = mysql_query("SELECT * FROM team WHERE shortened = '$de' LIMIT 1");
$row = mysql_fetch_array($result);
$res = $row['url'];
header("Location: $res");
exit;

Кроме того, из ваших комментариев, где находится ваш сценарий?это в папке url или в корневой папке?это может заставить работать или нет правило перезаписи

РЕДАКТИРОВАТЬ 1:

Также:

  • добавить в конец запроса LIMIT 1 (так как вы бы толькоесть 1 URL для короткой строки)
  • вам не нужно продолжать итерацию, просто позвоните mysql_fetch_array один раз
  • , измените location на Location и добавьте exit после этогопредложение
0 голосов
/ 29 мая 2011

Я не уверен, что детали вашей проблемы уже детализированы, но если вы думаете, что это проблема с получением сокращенного 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-адресов, который распространяется здесь .Я знаю достаточно много о том, как это сделать, поэтому, вероятно, я смогу помочь вам, если вы предоставите достаточно информации.Вы можете попробовать мое демо по адресу: http://trisle.net/u/

Надеюсь, я смогу помочь.

...