//-----------------------------------------------------------------
// Re:Director 1.0 - сервис коротких ссылок
// Copyright (C) ManHunter / PCL
// http://www.manhunter.ru
//-----------------------------------------------------------------
// Настройки подключения к базе
$mysqli_name="user88935_madcash";
$mysqli_host="localhost";
$mysqli_user="user88935_mad";
$mysqli_password="gqiikP;ZOP=$";
$mysqli_table="redirector_links";
$con = mysqli_connect('localhost','user88935_mad','gqiikP;ZOP=$') or die(mysqli_connect_error());
mysqli_select_db($con, 'user88935_madcash') or die("Cannot select DB");
// Подключение к базе
if (@!mysqli_connect('localhost','user88935_mad','gqiikP;ZOP=$')) {
echo 'MySQL connection error: '.mysqli_error();
exit;
}
else {
mysqli_select_db($con,'user88935_madcash');
// Автоинсталлятор. После установки скрипта строчки можно закомментировать
/* ------8<------ линия отреза ------8<------ */
$query="CREATE TABLE IF NOT EXISTS `".$mysqli_table."` (
`link_id` INT(11) NOT NULL AUTO_INCREMENT COMMENT 'ID ссылки в базе',
`link_hash` VARCHAR(32) COMMENT 'Хэш ссылки',
`link_url` TEXT COMMENT 'Адрес ссылки',
PRIMARY KEY (`link_id`),
KEY `link_hash` (`link_hash`)
) ENGINE=MyISAM /*!40101 DEFAULT CHARSET=cp1251 */";
mysqli_query($con,$query);
if (mysqli_error($con)) {
echo 'Can\'t create database: '.mysqli_error($con);
exit;
}
/* ------8<------ линия отреза ------8<------ */
}
// Отрисовка основного контента
function write_page($content='') {
echo '
Re: Director - ManHunter / PCL
';
echo $content;
echo '
';
}
// Функция получения кода ссылки из индекса
function dec2link($id) {
$digits='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$link='';
do {
$dig=$id%62;
$link=$digits[$dig].$link;
$id=floor($id/62);
} while($id!=0);
return $link;
}
// Функция получения индекса из кода ссылки
function link2dec($link) {
$digits=Array('0'=>0, '1'=>1, '2'=>2, '3'=>3, '4'=>4, '5'=>5, '6'=>6, '7'=>7, '8'=>8, '9'=>9,
'a'=>10, 'b'=>11, 'c'=>12, 'd'=>13, 'e'=>14, 'f'=>15, 'g'=>16, 'h'=>17, 'i'=>18, 'j'=>19,
'k'=>20, 'l'=>21, 'm'=>22, 'n'=>23, 'o'=>24, 'p'=>25, 'q'=>26, 'r'=>27, 's'=>28, 't'=>29,
'u'=>30, 'v'=>31, 'w'=>32, 'x'=>33, 'y'=>34, 'z'=>35, 'A'=>36, 'B'=>37, 'C'=>38, 'D'=>39,
'E'=>40, 'F'=>41, 'G'=>42, 'H'=>43, 'I'=>44, 'J'=>45, 'K'=>46, 'L'=>47, 'M'=>48, 'N'=>49,
'O'=>50, 'P'=>51, 'Q'=>52, 'R'=>53, 'S'=>54, 'T'=>55, 'U'=>56, 'V'=>57, 'W'=>58, 'X'=>59,
'Y'=>60, 'Z'=>61);
$id=0;
for ($i=0; $i';
// Переадресация JavaScript
$content.='';
// Ручной переход
$content.='Нажмите сюда для перехода по запрошенной ссылке
';
write_page($content);
}
else {
$content='
Ошибка! Запрошенная ссылка не найдена
';
write_page($content);
}
}
else {
$content='
Произошла неизвестная ошибка
';
write_page($content);
}
}
// Добавление ссылки
elseif(isset($_POST['do']) && $_POST['do']=='add') {
if(isset($_POST['url'])) {
$link_url=trim($_POST['url']);
if ($link_url) {
if (!preg_match('#^[a-z]{3,}\:#',$link_url)) {
$link_url='http://'.$link_url;
}
// Проверить, есть ли такая ссылка в базе
$link_hash=md5($link_url);
$query="SELECT * FROM `".$mysqli_table."` WHERE `link_hash`='".$link_hash."' LIMIT 1";
$sql_result=mysqli_query($con, $query);
$row=mysqli_fetch_assoc($con, $sql_result);
// Такая ссылка уже есть
if (isset($row['link_id'])) {
$link_short=dec2link($row['link_id']);
}
// Добавить ссылку в базу
else {
$query="INSERT INTO `".$mysqli_table."` SET
`link_hash`='".$link_hash."',
`link_url`='".mysqli_real_escape_string($con, $link_url)."'";
mysqli_query($con, $query);
$query="SELECT LAST_INSERT_ID() AS `link_id`";
$sql_result=mysqli_query($con, $query);
$row=mysqli_fetch_assoc($con, $sql_result);
$link_short=dec2link($row['link_id']);
}
// Отрисовать страницу с контентом
$content.=' Добавлена ссылка: ';
$content.='
';
write_page($content);
}
else {
// Ссылка не передана, переход на главную страницу
Header('Status: 301 Moved Permanently');
Header('Location: /');
exit;
}
}
else {
// Неправильные параметры, переход на главную страницу
Header('Status: 301 Moved Permanently');
Header('Location: /');
exit;
}
}
// Главная страница
else {
write_page();
}
?>