Реклама на сайте Advertise with us

Простейший скрипт на Perl

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 17.06.05
Сообщения: 270
Рейтинг: 183

Ссылка на сообщениеДобавлено: 27/06/05 в 02:22       Ответить с цитатойцитата 

Ребята, может кто-нибудь кинуть самый простой маленький скриптик на перл, который просто редиректит на адреса по порядку из списка?
Ну типа redirect.cgi и к нему такой файлик redirect.txt где я укажу адреса. У меня такой был когда-то давно, но вот сейчас мне нужен а я нигде не могу найти icon_sad.gif Нашла только randomlink.cgi, он то что надо и по весу всего 3 кб, но он редиректит рандомно, а мне надо чтобы строго по порядку из списка.

0
 



С нами с 07.09.03
Сообщения: 4115
Рейтинг: 2060

Ссылка на сообщениеДобавлено: 27/06/05 в 03:16       Ответить с цитатойцитата 

а че на перле?
на пхпе - 5 минут

0
 

старый зануда

С нами с 26.07.03
Сообщения: 3291
Рейтинг: 1361

Ссылка на сообщениеДобавлено: 27/06/05 в 03:47       Ответить с цитатойцитата 

Код:
#!/usr/bin/perl
open (R,"+<redirect.txt");
flock (R,2);
@redirect = <R>;
$a=0;
foreach (@redirect) {
if ($a>0) {push(@new,$_);}
$a++;
}
chomp($redirect[0]);
push(@new,"\n$redirect[0]");
seek (R, 0, 0);
print R @new;
truncate(R,tell(R));
flock (R,8);
close (R);
print "Location: $redirect[0]\n\n";
exit;

Для корректной работы скрипта в файле "redirect.txt" после последней строки ничего быть не должно

Всё для Iphone & Ipad

1
 



С нами с 17.06.05
Сообщения: 270
Рейтинг: 183

Ссылка на сообщениеДобавлено: 27/06/05 в 04:02       Ответить с цитатойцитата 

Vlad_S, почему-то не работает icon_sad.gif
А полный путь до redirect.txt разве не надо прописывать?

Core, я не знаю почему перл icon_smile.gif, может и пхп пойдет. Нужно самый простой скриптик и чтобы не грузил сервер вообще никак. Лучше пхп?

0
 



С нами с 26.11.04
Сообщения: 119
Рейтинг: 145

Ссылка на сообщениеДобавлено: 27/06/05 в 07:17       Ответить с цитатойцитата 

Код:
#!/usr/bin/perl
  open (DAT,"redirect.txt");
  flock (DAT,1);
  @lines = <DAT>;
  push(@lines,shift(@lines));
  close (DAT);
  open (DAT,">redirect.txt");
  flock (DAT,2);
  print DAT @lines;
  print "Location: $lines[0]\n\n";
  close (DAT);

это работает

1
 

Раздаю инвайты, ищу линк-трейд

С нами с 20.08.04
Сообщения: 16482
Рейтинг: 8590


Передовик Master-X (16.11.2006) Передовик Master-X (01.09.2019)
Ссылка на сообщениеДобавлено: 27/06/05 в 07:42       Ответить с цитатойцитата 

Sveta_V писал:
Ребята, может кто-нибудь кинуть самый простой маленький скриптик на перл, который просто редиректит на адреса по порядку из списка?
Кстати, я не понял - по порядку каждый клик, как в посл. скрипте (кстати, я бы не переписывал каждый раз редирект.тхт, мож список большой - я бы файл-семафор вел с № посл. редиректа), или каждого для серфера надо с начала списка начинать?

Кому ссылку?
RU и EN Dating

0
 



С нами с 17.06.05
Сообщения: 270
Рейтинг: 183

Ссылка на сообщениеДобавлено: 27/06/05 в 08:43       Ответить с цитатойцитата 

pierx, твой тоже не работает icon_sad.gif
Может я что-то не так делаю? Я создаю redirect.cgi, заливаю его в cgi-bin, ставлю права 755.
Потом создаю redirect.txt, в нем пишу:
url1.com
url2.com
url3.com
Тоже заливаю в cgi-bin, ставлю 777. Вот мне нужно, чтобы я нажимала redirect.cgi на странице и открывался url1.com, а если еще раз нажму на ссылку, то уже url2.com и так далее.

0
 

Раздаю инвайты, ищу линк-трейд

С нами с 20.08.04
Сообщения: 16482
Рейтинг: 8590


Передовик Master-X (16.11.2006) Передовик Master-X (01.09.2019)
Ссылка на сообщениеДобавлено: 27/06/05 в 08:59       Ответить с цитатойцитата 

Ошибку дает? какую? может ты в блокноте пишешь, а потом льешь 1:1, а в винде перевод строки - 2 символа. на юниксе - один. Это наиболее распространенная ошибка
в урлах шттп пишешь?
на цги-бин какие права? (777 это круто icon_smile.gif )

ЗЫ скрипт не я писАл. Но могу и я icon_smile.gif

Кому ссылку?
RU и EN Dating

0
 



С нами с 17.06.05
Сообщения: 270
Рейтинг: 183

Ссылка на сообщениеДобавлено: 27/06/05 в 09:09       Ответить с цитатойцитата 

500 ошибку выдает. Internal Server Error
redirect.txt оставила тот же, который уже работал нормально. От того скрипта, который рандомно из него ссылки выдергивает. Так что с ним все ок должно быть.

0
 



С нами с 17.06.05
Сообщения: 270
Рейтинг: 183

Ссылка на сообщениеДобавлено: 27/06/05 в 09:12       Ответить с цитатойцитата 

777 на файл redirect.txt
на cgi-bin права я вообще не трогала, сейчас посмотрела - там стоит 750 icon_smile.gif

0
 

Раздаю инвайты, ищу линк-трейд

С нами с 20.08.04
Сообщения: 16482
Рейтинг: 8590


Передовик Master-X (16.11.2006) Передовик Master-X (01.09.2019)
Ссылка на сообщениеДобавлено: 27/06/05 в 09:13       Ответить с цитатойцитата 

Код:
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "<b>ento proba - proba</b><br>";
залей и вызови, да в аську стукни (в профайле), что тут тереть ;)

Кому ссылку?
RU и EN Dating

3
 

старый зануда

С нами с 26.07.03
Сообщения: 3291
Рейтинг: 1361

Ссылка на сообщениеДобавлено: 27/06/05 в 11:39       Ответить с цитатойцитата 

Sveta_V писал:
Vlad_S, почему-то не работает
Если файлы redirect.cgi и redirect.txt лежат рядом - полный путь не нужен, все должно заливаться на хост в только в текстовом режиме (ASCII), права доступа на redirect.cgi - 755 на redirect.txt - 666, править Perl-скрипты под виндой можно только в обычном блокноте, если нет специального редактора, "продвинутые" клоны не годятся. Ну заливать над все это в папку "cgi-bin". Короче, учите матчасть icon_smile.gif

2Dimma, - каждая обработанная строка фактически состоит из двух частей URL+перевод строки, с которым тоже надо что-то делать, иначе в файле redirect.txt начнется аджап-сандал и все заглючит, разделенные во времени чтение и запись рано или поздно приведут к потере данных...

Всё для Iphone & Ipad

0
 

старый зануда

С нами с 26.07.03
Сообщения: 3291
Рейтинг: 1361

Ссылка на сообщениеДобавлено: 27/06/05 в 12:07       Ответить с цитатойцитата 

pierx писал:
...я бы файл-семафор вел с № посл. редиректа...

Ты прав, так значительно изящнее
Код:
#!/usr/bin/perl
open (R,"redirect.txt");
@redirect = <R>;
close (R);
open (C,"c.txt");
flock (C,2);
$c = <C>;
flock (C,8);
close (C);
if (!$c) {$c = 0;}
print "Location: $redirect[$c]\n\n";
$c++;
if ($c == scalar @redirect) {$c = 0}
open (C,">c.txt");
flock (C,2);
print C $c;
flock (C,8);
close (C);
exit;

Всё для Iphone & Ipad

0
 

Раздаю инвайты, ищу линк-трейд

С нами с 20.08.04
Сообщения: 16482
Рейтинг: 8590


Передовик Master-X (16.11.2006) Передовик Master-X (01.09.2019)
Ссылка на сообщениеДобавлено: 27/06/05 в 12:48       Ответить с цитатойцитата 

А так? (я правда кое-какие операторы забыл, потому частично ч/з одно место:
Код:
/usr/bin/perl
$url="http://domain.com/";  # урл по умолчанию, если файл не откроем
if (open (DAT,"redirect.txt"))
{
   flock (DAT,1);
   @lines = <DAT>;
   close (DAT);
   $max=@lines;
   
   if (open (DAT,"log.txt"))
   {
      flock (DAT,1);
      $j = <DAT>;
      close (DAT);
      $j++;
      if ($j>=$max) { $j=0; }
      
      open (DAT,">log.txt");
      flock (DAT,2);
      print DAT $j;
      close (DAT);
   }
   else
   {
      $j=0;
   }
   $url=@lines[$j];
}

print "Location: $url\n\n";
Пытался подобие проверки выполнить

Кому ссылку?
RU и EN Dating

0
 

старый зануда

С нами с 26.07.03
Сообщения: 3291
Рейтинг: 1361

Ссылка на сообщениеДобавлено: 27/06/05 в 13:54       Ответить с цитатойцитата 

Можно и так, да и еще много чего можно, у каждого своя манера письма. Главное, чтобы работало. То, что я выложил здесь, было предварительно отлажено на сервере, поэтому за правильнось работы я ручаюсь...

Всё для Iphone & Ipad

0
 



С нами с 15.09.03
Сообщения: 484
Рейтинг: 210

Ссылка на сообщениеДобавлено: 27/06/05 в 15:30       Ответить с цитатойцитата 

вот как действует женский ник на форуме ))
на подсознательном уровне icon_smile.gif)

0
 

старый зануда

С нами с 26.07.03
Сообщения: 3291
Рейтинг: 1361

Ссылка на сообщениеДобавлено: 27/06/05 в 20:00       Ответить с цитатойцитата 

undef писал:
вот как действует женский ник на форуме...
Если бы ты оказался в том же месте и в то же время, что и топикстартер, моя реакция была бы абсолютно такой же. Не стоит переоценивать силу женского обаяния, особенно в нашей проффессии...

Дело было вечером, делать было нечего icon_smile.gif

Всё для Iphone & Ipad

0
 



С нами с 13.05.04
Сообщения: 139
Рейтинг: 26

Ссылка на сообщениеДобавлено: 28/06/05 в 18:45       Ответить с цитатойцитата 

Sveta_V писал:
Ребята, может кто-нибудь кинуть самый простой маленький скриптик на перл, который просто редиректит на адреса по порядку из списка?
Ну типа redirect.cgi и к нему такой файлик redirect.txt где я укажу адреса. У меня такой был когда-то давно, но вот сейчас мне нужен а я нигде не могу найти icon_sad.gif Нашла только randomlink.cgi, он то что надо и по весу всего 3 кб, но он редиректит рандомно, а мне надо чтобы строго по порядку из списка.


Вот на php может подойдёт.
<?
session_start();
if (!isset($_SESSION['count'])){$_SESSION['count'] = "0";}
switch($_SESSION['count'])
{
case '0':
header("Location: http://domen.com");
$_SESSION['count']="1";
break;
case '1':
header("Location: http://domen1.com");
$_SESSION['count']="2";
break;
case '2':
header("Location: http://domen2.com");
$_SESSION['count']="3";
break;
case '3':
header("Location: http://domen3.com");
$_SESSION['count']="4";
break;
case '4':
header("Location: http://domen4.com");
$_SESSION['count']="5";
break;
case '5':
header("Location: http://domen5.com");
$_SESSION['count']="6";
break;
default:
header("Location: http://domen6.com");
$_SESSION['count']="0";
break;
}
?>

Заработок в интернете - 100 $ в день не предел!

1
 



С нами с 17.06.05
Сообщения: 270
Рейтинг: 183

Ссылка на сообщениеДобавлено: 28/06/05 в 23:38       Ответить с цитатойцитата 

Всем спасибо за помощь! icon_smile.gif Всем кто выложил скрипты поставила + icon_smile.gif

0
 



С нами с 29.05.04
Сообщения: 600
Рейтинг: 118

Ссылка на сообщениеДобавлено: 29/06/05 в 11:55       Ответить с цитатойцитата 

А как будет выглядеть код если схема будет не: “юзер кликает один раз попадает туда, 2-о раз туда то, 3-ий туда то”, а первый юзер зашел и попал на стр.1 далее зашел второй уникальный посетитель и попал на стр.2 третий уникальный посет. попал на стр.3 и так далее.

0
 



С нами с 03.08.04
Сообщения: 129
Рейтинг: 263

Ссылка на сообщениеДобавлено: 29/06/05 в 13:16       Ответить с цитатойцитата 

Мои две копейки в разговор.
Например, если взять за исходное использование PHP и сессий, то код Artful'а я бы немножко переделал icon_smile.gif
Плюс стал бы хранить URL'ы в отдельном файле (redirect.txt).
Это будет вариант, когда каждый юзер будет иметь свою собственную "последовательность посещаемых адресов", которая запомнится в данных сессии (это уже забота PHP).

Например, так:
Код:
<?php

# читаем все строки из файла
$lines = file('redirect.txt');

$urls = array();
# причёсываем строки, пустые игнорируем - получаем список урлов
for ($i = 0; $i < count($lines); $i++)
   {
   $line = trim($lines[$i]);
   if ($line != '') $urls[] = $line;
   }

# старт сессии
session_start();

# причесываем url_idx - текущий индекс URL'а в массиве
if ( (!isset($_SESSION['url_idx'])) || ($_SESSION['url_idx'] > count($urls)) )
   $_SESSION['url_idx'] = 0;

# делаем редирект
header('Location: ' . $_SESSION['url_idx']);

# увеличиваем индекс следующего URL'а на следующий раз
$_SESSION['url_idx']++;
exit(0);

?>

0
 



С нами с 03.08.04
Сообщения: 129
Рейтинг: 263

Ссылка на сообщениеДобавлено: 29/06/05 в 13:21       Ответить с цитатойцитата 

История номер два. Мы хотим сделать, чтобы "последовательность посещаемых урлов" была единой для всех юзеров сразу. То есть каждый посетитель не имеет собственного "счетчика", а все вместе, кто сколько может - продвигают один общий счётчик. Почти как описал sex4you.
При этом, ради наглядности, мы продолжаем хранить верность PHP и его сессиям - добавленные строки помечены полужирным шрифтом icon_smile.gif.

Код:
<?php

# читаем все строки из файла
$lines = file('redirect.txt');

$urls = array();
# причёсываем строки, пустые игнорируем - получаем список урлов
for ($i = 0; $i < count($lines); $i++)
   {
   $line = trim($lines[$i]);
   if ($line != '') $urls[] = $line;
   }

# запрещаем использовать куки - зачем они, если ID сессии мы задаем сами...
ini_set('session.use_cookies', '0');

# ID сессии будет один для всех юзеров, где и как хранить - дело PHP
session_id('my_unique_12345');


# старт сессии
session_start();

# причесываем url_idx - текущий индекс URL'а в массиве
if ( (!isset($_SESSION['url_idx'])) || ($_SESSION['url_idx'] > count($urls)) )
   $_SESSION['url_idx'] = 0;

# делаем редирект
header('Location: ' . $_SESSION['url_idx']);

# увеличиваем индекс следующего URL'а на следующий раз
$_SESSION['url_idx']++;
exit(0);

?>


PS: где нужно - можно вставить @ для отключения сообщений об ошибках. Предполагается, чот файл redirect.txt существует.
PSS: файл redirect.txt должен иметь по 1 адресу (включая "http://" ) в строке, пустые строки игнорируются, пробелы по краям строк не имеют значения.
PSSS: варианты исполнения не претендуют на единственность или на то, что они являются наилучшими.

0
 

Раздаю инвайты, ищу линк-трейд

С нами с 20.08.04
Сообщения: 16482
Рейтинг: 8590


Передовик Master-X (16.11.2006) Передовик Master-X (01.09.2019)
Ссылка на сообщениеДобавлено: 29/06/05 в 13:34       Ответить с цитатойцитата 

Я общался с ней, ей не надо, чтоб каждому своя база велась. Просто пропорциональное раскидывание кликов - но по порядку, а не рандомно. Ссылок вроде она много планирует, так что одного попадание юзера на тот же урл можно не рассматривать.

ЗЫ - пока писал - еще пост появился icon_smile.gif

Кому ссылку?
RU и EN Dating

0
 



С нами с 03.08.04
Сообщения: 129
Рейтинг: 263

Ссылка на сообщениеДобавлено: 29/06/05 в 16:58       Ответить с цитатойцитата 

pierx писал:
не надо, чтоб каждому своя база велась

В таком случае - см. мой предыдущий пост как один из вариантов :-)

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »