Задать вопрос
@smolikk

Пишу простой скрипт сокращателя ссылок без БД. В чем может быть проблема?

В 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), скрипт работать отказывается. Подскажите, как это исправить.
  • Вопрос задан
  • 295 просмотров
Подписаться 1 Оценить 1 комментарий
Решения вопроса 1
Попробуйте обернуть полную ссылку в кавычки:
Dlwiq = "example.ru/#newwindow=1"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы