В PHP я ламер. Понадобился самый простой скрипт сокращателя URL, не требующий баз данных. В инете ничего подходящего не нашел, решил написать свой.
Вот содержимое файлов скрипта:
index.php:
<html>
<body>
<center>
<form method="POST" action="getlink.php">
Ссылка:
<input type="url" name="site" required>
<br>
Кол-во символов:
<input type="number" name="name" value="5" min="1" max="10" required>
<br>
<input type="submit" name="okbutton" value="OK">
</form>
</center>
</body>
</html>
getlink.php:
<?
$err_message = ''; // Присваивает пустое значение переменной сообщения
$url = $_POST['site'] ;
$max = $_POST['name'] ;;
if (empty($url)) {
$err_message .= "Нет ссылки.";
}
if (empty($max)) {
$err_message .= " Нет кол-ва символов.";
}
if (empty($err_message)) {
$chars = 'qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP';
$size = StrLen($chars)-1;
$password = null;
while($max--)
$password.= $chars[rand(0,$size)];
echo
"<center>
Ссылка:
<hr><font face=verdana color=red size=7><b>http://mysite.ru/l/".$password."</b></font><hr>
<a href='http://mysite.ru/l/'>Создать новую ссылку.</a></center>";
$file = fopen ("links.ini","a+");
$c = ' = ';
$f = $password . $c . $url;
fwrite ( $file, "\n".$f);
echo nl2br(file_get_contents('links.ini'));
fclose($file);
}
// Выдает сообщения о пустых полях, если такие есть
else {
print $err_message;
}
?>
redirect.php:
<?php
$links = parse_ini_file('links.ini');
if(isset($_GET['l']) && array_key_exists($_GET['l'], $links)){
header('Location: ' . $links[$_GET['l']]);
}
else{
header('HTTP/1.0 404 Not Found');
echo 'Unknown link.';
}
.htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond $1 !^(redirect\.php)
RewriteRule ^(.*)$ redirect.php?l=$1 [L]
links.ini:
fb = http://facebook.com/
google = http://google.ru/
Dlwiq = http://example.ru/#newwindow=1
Скрипт собирался из всякого мусора, найденного мной в инете, знаю, что все очень каряво, но, тем не менее, скрипт работает в случаях, если редирект указан на простые ссылки (
google.ru/), если же в ссылке содержится
символ =, как в примере (Dlwiq =
example.ru/#newwindow=1), скрипт работать отказывается. Подскажите, как это исправить.