Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: tinyurl для вашего сайта

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
valenok
Отправлено: 17 Февраля, 2009 - 01:05:10
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Чем занимается сервис tinyurl.com я рассказывать не стану.
но своеобразный аналог можно получить припомощи следующего скрипта
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. mysql_connect('localhost','user','pass');
  4.  
  5. $mainlink = "http://".$_SERVER['SERVER_NAME'].dirname($_SERVER['PHP_SELF']);
  6. // http:// mysite.ru / dir / tiny
  7.  
  8.  
  9. if(  isset($_POST['create']) && preg_match("#^http://([a-z0-9]+\.)?[a-z0-9-_\.]+\.[a-z]{2,4}#i",$_POST['create'])  ):
  10.  $link = mysql_escape_string($_POST['create']);
  11.  $q = mysql_query("SELECT `tiny` FROM `tinyurl` WHERE `link`='".$link."'");
  12.  if(mysql_num_rows($q)==1) die("Your url: <a href='".mysql_result($q,0,0)."'>".$_SERVER['SERVER_NAME']."/".mysql_result($q,0,0)."</a>");
  13.  
  14.  $q=1;
  15.  $arr = Array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z');
  16.  
  17. while($q!=0)
  18. {
  19.  $tiny = $arr[rand(0,10)].$arr[rand(0,10)].$arr[rand(0,10)].$arr[rand(0,10)].$arr[rand(0,10)];
  20.  $q = mysql_num_rows(mysql_query("SELECT `visits` FROM `tinyurl` WHERE `tiny`='".$tiny."'"));
  21. }
  22.  
  23. mysql_query("INSERT INTO `tinyurl` VALUES('".$tiny."','".$link."','0')");
  24. echo "your url: <a href='".$mainlink.$tiny."'>".$mainlink.$tiny."</a>";
  25.  
  26. endIf;
  27.  
  28.  
  29. if( isset($_GET['url']) && preg_match("/^([a-z]){5}$/",$_GET['url']) ):
  30.        
  31.  $_GET['url'] = mysql_escape_string($_GET['url']);
  32.  
  33.  $q = mysql_query("SELECT `link` FROM `tinyurl` WHERE `tiny`='".$_GET['url']."'");
  34.  if(mysql_num_rows($q)!=1) die('404. No such file found.');
  35.  
  36.  mysql_query("UPDATE `tinyurl` SET `visits`=`visits`+1 WHERE `tiny`='".$_GET['url']."'");
  37.  header("Location: ".mysql_result($q,0,0));
  38.  die(0);
  39.  
  40. ENDIF;
  41.  
  42. ?>
  43. <form method='post'>
  44. <input type='text' name='create' size='100' />
  45. <input type='submit' />
  46. </form>


Цитата:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Options +FollowSymlinks
RewriteRule ^(.*)$ tinyurl.php?url=$1 [L,QSA]


Базы данных у меня не осталось, и алгоритм я бы тоже предложил бы вам пока не использовать.
В среду если будет время немножко исправлю и выложе стукруту таблицы.

(Отредактировано автором: 18 Февраля, 2009 - 16:58:30)



-----
Truly yours, Sasha.
 
My status
 Top
valenok
Отправлено: 02 Марта, 2009 - 14:26:45
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




Цитата:
CREATE TABLE IF NOT EXISTS `tinyurl` (
`tiny` varchar(5) NOT NULL,
`link` varchar(255) NOT NULL,
`visits` smallint(6) NOT NULL,
KEY `tiny` (`tiny`)
) ENGINE=MyISAM;


--

Скрипт выложен в ознакомительных целях. Не рекомендую использовать на производственных машинах
в таком виде, без оптимизации.


-----
Truly yours, Sasha.
 
My status
 Top
Вездеход
Отправлено: 02 Марта, 2009 - 15:03:53
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 820
Дата рег-ции: Апр. 2008  
Откуда: Россия


Помог: 0 раз(а)




valenok пишет:
Не рекомендую использовать на производственных машинах
в таком виде, без оптимизации.

я сам код не смотрел особо, но всеже - в чем проблема то будет? ))


-----
о великий nl2br!
Хочешь невероятных ощущений? Юзай блокнот! Блокнот - чудеса сбываются!
Чем меньше вы знаете PHP - тем ценнее мои знания!
 
 Top
valenok
Отправлено: 02 Марта, 2009 - 16:08:44
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


Помог: 3 раз(а)




в генерации короткой ссылки
Она генерируется случайно, а потом проверяется есть ли в базе, таким образом
цикл иногда совершает кучу лишних повторений.
Можно к примеру перейти на шестнадцетиричную систему исчисления и иметь ссылки и шести
символов в соответсвии с id определенной ссылки.


-----
Truly yours, Sasha.
 
My status
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Прочее »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB