Elsper » Программирование

Итак все знают как поставить одну ссылку, и как поставить сквозняк.

Но как сделать так чтобы ссылка на каждой странице была разная и при этом не ставить каждую вручную думаю знают не все.

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

Предположим этот файл назовется kei.txt

Можно конечно сделать просто вывод рандомной ссылки на странице

<?

$f_ar2 = file(’kei.txt’);  // Связываемся с файлом.

$skokaslov = count($f_ar2); // Узнаем сколько в нем строк

$i = rand(0,$skokaslov); // Делаем рандомное число

echo $f_ar2[$i]; // Делаем вывод строки

?>

Или же можно одной строкой. Смысл один и тот же.

<? $f_ar2 = file(’kei.txt’); echo $f_ar2[rand(0,count($f_ar2))]; ?>

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

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

<?

$adres = $_SERVER['REQUEST_URI'].”\n”; //Считываем урл. Я сразу же приписываю знак переноса строки. чтобы потом с ним не возиться.

$f_ar2 = file(’kei.txt’); // Уже знакомый файл ключей
if ( file_exists(’site.txt’)){
$f_ar1 = file(’site.txt’);}  // Та самая база урлов. Встроенна проверка на наличие. Если файла нет, то к нему не будет обращения и не будет ошибки, одна ко же в дальнейшем код скрипта сам его сформирует.

$skokaslov = count($f_ar2);//Так же получаем количество ключей. Это нам пригодится на случай если ключей окажется меньше чем страниц.

$str = -1; // Этакий “ключ” обозначающий что строка в базе урлов не найдена.

for ($i = 0; $i < count($f_ar1); $i++)  // Пускаемся в поиски

if ($adres == $f_ar1[$i]) {  // сравниваем соотвествтует ли текущий урл, урлу в базе
$str = $i;  // Если соответствует то переключаем ключ
echo  $f_ar2[$i%$skokaslov]; // Выводим строчку из списка ссылок. Знак процента обозначает остаток от деления.
break; //Прерываем цикл.
}

if ($str == -1){ // Если ключ так и не переключен, значит в базе урл не найден, а следовательно надо его добавить.
$fp = fopen(’site.txt’, ‘a’); // Открываем файл на дозапись. Или же создаем если его не было до этого.

fwrite($fp, $adres); // Дозаписываем.

fclose($fp); // Закрываем файл.
echo  $f_ar2[$i%$skokaslov]; // Радуемся жизни. Ведь параметр $i на выходе из цикла как раз соответствует номеру последней строки.
}

?>

Разумеется вокруг строчки echo  $f_ar2[$i%$skokaslov]; можно что нибудь еще дописать на вывод. Ну это думаю понятно.

Замечания, Пожелания?
Если вам понравилось буду рад ссылке :)

Из минусов, думаю при больших объемах пробежка по списку урлов может нагружать ресурсы… Желающие вполне могут улучшить скрипт, да и вообще взять идею на вооружение. :)

UPD.

В каментах MrMozg подсказал функцию, с которой поиск по архиву можно реализовать намного проще.

Ну я и реализовал :)

<?
$adres = $_SERVER['REQUEST_URI'].”\n”;
$f_ar2 = file(’kei.txt’);
if ( file_exists(’site.txt’)){
$f_ar1 = file(’site.txt’);}

$skokaslov = count($f_ar2);

$key = array_search($adres,$f_ar1); // та самая функция.
if ($key > -1) { // если значение есть в массиве то она выдаст его, это будет число больше чем -1, следовательно условие выполнится. А если значение не будет найдено, то уже пофиг, что выдаст функция, она все равно пойдет в else. :)
echo  $f_ar2[$key%$skokaslov];

}
else
{
$fp = fopen(’site.txt’, ‘a’);
fwrite($fp, $adres);
fclose($fp);
echo  $f_ar2[count($f_ar1)%$skokaslov];
}

?>


Автор: Elsper.ru


Всем здрасте.

Я в очередной раз решил немного отвлечься от деньгоделания, и попрограммировать просто так :)

Вынес результат в отдельную статью.

Стереокартинки. Гиперкубы. Стерео-Гиперкубы.

Стерео тессеракт размещенный на википедии по сравнению с моими просто фигня. :) Неравные длины граней, и более сложный способ просмотра.

Пошарил по рунету нигде больше и нет стерео пар гиперкубов, не считая уже упомянутой картинки на вике, многократно утянутой.

P.S Если вам понравится, поставьте на меня ссылку :) Ну пажалуйста..


Автор: Elsper.ru


Почему то никогда не любил работать с файловой системой, поэтому код представленный ниже я предпочел бы иметь в готовом виде, а не писать заново при необходимости.

Поэтому оставлю его здесь.

procedure GetAllFiles( Path: string; Lb: TListBox );
var
sRec: TSearchRec;
isFound: boolean;
begin
isFound := FindFirst( Path + ‘\*.*’, faAnyFile, sRec ) = 0;
while isFound do
begin
if ( sRec.Name <> ‘.’ ) and ( sRec.Name <> ‘..’ ) then
begin
if ( sRec.Attr and faDirectory ) = faDirectory then
GetAllFiles( Path + ‘\’ + sRec.Name, Lb );
Lb.Items.Add( Path + ‘\’ + sRec.Name );
end;
Application.ProcessMessages;
isFound := FindNext( sRec ) = 0;
end;
FindClose( sRec );
end;

И вызов что-нибудь типа:  GetAllFiles( ‘C:\’, listbox1 );

p.s. я его честно где-то стащил. :)


Автор: Elsper.ru


Здравствуйте.
Давненько не писал.

Основной источник накрылся. Лавкеш теперь приносит всего ничего.
Так что доход с инета стал в районе десяти тысяч, так же в оффе не платят, можно сказать кризис докатился и до меня. (Даже сапу пришлось наконец повесить. Сразу могу сказать одну микротемку работы с сапой. Если ваш сайт попал в основную базу и у него тиц выше нуля то поставив цены на третий уровень 1.8р вы попадете на прицел сеопульта.)

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

Оно выглядит вот так: Читать полностью »


Автор: Elsper.ru


Конечно их туда итак можно добавить, но я искал способ сделать это проще. В обход обычного интерфейса. И дающий возможность автоматизировать это чтобы можно было добавлять несколько доменов в ISPmanager, массово добавлять домены

(это типа сео, потому что адекватной записи по этим ключам я не нашел)

Итак, как же добавить домены в испменеджер, который стоит на ферствдс, на котором сижу я.

Все можно вывезти на get запросах, то есть просто вводить в строку браузера.

Сначала авторизируемся.

https://ип-сервера/manager/ispmgr?out=xml&func=auth&username=юзернайм&password=пароль

получаем вот такое дело

<?xml version=”1.0″ encoding=”UTF-8″ ?>
- <doc>
<auth id=”Циферка“>Циферка</auth>
</doc>

Распарсиваем циферку.
далее уже само добавление
https://ип-сервера/manager/ispmgr?func=wwwdomain.edit&sok=yes&domain=домен&alias=www.домен&auth=та распарсенная циферка&owner=владелец&ip=айпишка&admin=мыло&autosubdomain=asdsubdir&php=phpfcgi

Это был рабочий пример.

А по пунктам:

domain – Доменное имя.
alias – Псевдонимы. (Одно или несколько значений, разделенных пробелом)
docroot – Корневая папка.
owner – Владелец.
ip – IP-адрес.
admin – E-Mail администратора.
charset – Кодировка.
index – Индексная страница. (Одно или несколько значений, разделенных пробелом)
autosubdomain – Авто поддомены.

Возможные значения :
asdnone – Отключены.
asddir – В отдельной директории.
asdsubdir – В поддиректории WWW домена.

php – PHP.

Возможные значения :
phpnone – Нет поддержки PHP.
phpmod – PHP как модуль Apache.
phpcgi – PHP как CGI.
phpfcgi – PHP как FastCGI.

cgi – Cgi-bin. (Необязательный параметр. Чтобы включить данную опцию используйте значение “on”.)
ssi – SSI. (Необязательный параметр. Чтобы включить данную опцию используйте значение “on”.)
ssiext – Расширения файлов SSI.
frp – FrontPage. (Необязательный параметр. Чтобы включить данную опцию используйте значение “on”.)
fppasswd – Пароль для FrontPage.
ror – Ruby on rails. (Необязательный параметр. Чтобы включить данную опцию используйте значение “on”.)
ssl – SSL. (Необязательный параметр. Чтобы включить данную опцию используйте значение “on”.)
sslport – SSL порт.

_____
UPD

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

В общем все еще проще.
Достаточно одного гет запроса

https://ип-сервера/manager/ispmgr?authinfo=логин:пароль&func=wwwdomain.edit&sok=yes&domain=домен&alias=www.домен&owner=владелец&ip=айпишка&admin=мыло&autosubdomain=asdsubdir&php=phpfcgi

_____
UPD 2
Я не уверен на сто процентов (не админ я), но похоже перезагрузка после добавления все равно нужна.
У меня во всяком случае домены добавленные методом описанным выше, стали работать только когда я сейчас перезагрузил сервак, а до этого была 404.


Автор: Elsper.ru


Страница 2 / 5« 1 2 3 4 5 »

Рейтинг блогов

Рейтинг блогов