Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

что делать дальше с $_POSTом?

59K
18 августа 2010 года
Dariya
13 / / 18.08.2010
Из динамической формы передается один большой массив $_POST.

Что с ним делать дальше? Как считать?
52K
18 августа 2010 года
lexandr
26 / / 16.07.2010
count($var) вроде бы так подсчитывается количество элементов в массиве.
325
19 августа 2010 года
Franky
723 / / 10.08.2005
к примеру для массива val[]
$val = $_POST['val'];
и дальше уже обращайтесь по индексу или еще как.
369
19 августа 2010 года
Kesano
451 / / 09.10.2007
 
Код:
<?
$count=count($_POST);
echo $count;
?>


А вообще
[ATTACH]4384[/ATTACH]

Кстати, по первой ссылке ( http://php.su/functions/?cat=array ) очень много полезного про массивы, перечислены все функции (вроде все). Даже в избранное добавил.
244
19 августа 2010 года
UAS
2.0K / / 19.07.2006
var_dump($_POST); Вам в помощь + маны и учебники + голова.

+ Вы сами написали - массив, так и работайте с ним, как с массивом. [COLOR="Silver"]Например, можете тупо просто удалить его и не париться.[/COLOR]
59K
19 августа 2010 года
Dariya
13 / / 18.08.2010
***********************
+ Вы сами написали - массив, так и работайте с ним, как с массивом.
***********************
написала такое:

 
Код:
$podmassiv = array_chunk($_POST,12)
{
foreach ($podmassiv as $key => $value) //перебирает ключ-значение
{
list($a, $b, $c, $d, $e, $f, $j, $h, $l, $k, $m, $n) = $value;
print $c."<br>";
}
}


он ругается 12 раз на что-то:
Notice: Undefined offset: ......

что не так?
13
19 августа 2010 года
RussianSpy
3.0K / / 04.07.2006
Что это за бред? ЧТо вы вообще хотите сделать?
59K
19 августа 2010 года
Dariya
13 / / 18.08.2010
в общем, нашла в нете скрипт такой:

Код:
<SCRIPT language=JavaScript>
var numb;
numb = 1;
function add_new_row() {
    var currrow;
    currow = document.all.tbl.rows.length; // вычислить количество строк в таблице
    numb++;
    document.all.tbl.insertRow(currow); // добавляем строку в таблицу
    document.all.tbl.rows[currow].insertCell(0); // добавляем ячейки
    document.all.tbl.rows[currow].insertCell(1);
    document.all.tbl.rows[currow].insertCell(2);
    document.all.tbl.rows[currow].insertCell(2);
    document.all.tbl.rows[currow].cells[0].innerHTML = '<input type=\"text\" name=\"name_'+ numb +'\">'; // вставляем в форму поля
    document.all.tbl.rows[currow].cells[1].innerHTML = '<input type=\"text\" name=\"url_'+ numb+'\">';
    document.all.tbl.rows[currow].cells[2].innerHTML = '<input type=\"text\" name=\"category_'+ numb+'\">';
    document.all.tbl.rows[currow].cells[3].innerHTML = '<input type=button name=\"btnNext\" value=\"+\" &#111;&#110;Click=\"add_new_row()\">'; // кнопка для вызова функции для добавления следующей строки
}
</SCRIPT>
                                   
                                    <FORM name=links method=post>
                                      <DIV align=left>
                                        <TABLE id=tbl cellSpacing=0 cellPadding=0 border=1>
                                          <TBODY>
                                            <TR bgColor=#ff9933>
                                             <TD>Наименование</TD>

                                              <TD>Адрес</TD>
                                              <TD colSpan=2>Категория</TD>
                                            </TR>
                                            <TR>
                                              <TD><INPUT name=name_1 WIDTH="30">
                                              </TD>
                                              <TD><INPUT name=URL_1 WIDTH="60">
                                              </TD>
                                              <TD><INPUT name=category_1 WIDTH="30">
                                              </TD>

                                              <TD><INPUT &#111;&#110;click=add_new_row() type=button value=+ name=btnNext>
                                             </TD>
                                            </TR>
                                          </TBODY>
                                        </TABLE>
                                        <INPUT type=submit value=Submit name=submit>
                                        <INPUT type=reset value=Сброс name=reset>
                                      </DIV>
                                    </FORM>


который позволяет несколько раз заполнить форму и отправить все разом на сервер.
Что хочу сделать - записать значения в базу.
13
19 августа 2010 года
RussianSpy
3.0K / / 04.07.2006
Еще один бред
прекращайте заниматься копипастом разного кривого уродливого кода. Скажите четко какая именно задача у вас стоит.
59K
19 августа 2010 года
Dariya
13 / / 18.08.2010
админку делаю для сайта.
в базу придется вбивать много значений. Чтобы не мучиться каждый раз с одной формой, хотелось сделать все разом.

Но если форма одна, примеров в гугле множество, как записать значения в базу, а когда форма такая, то я немного растерялась, что делать с Постом
369
19 августа 2010 года
Kesano
451 / / 09.10.2007
Вы или неправильно излагаетесь, или алогично мыслите...

Я так понимаю, вы хотите вот это:

Код:
<?
if($_POST) {
   $countrows=array_count($_POST["name"]);
   for($i=0; $i>$countrows; $i++) {
      $name=$_POST["name"][$i];
      $url=$_POST["url"][$i];
      $category=$_POST["category"][$i];
     
      mysql_query("insert into TABLENAME (name,url,category) values ('$name','$url','$category')");
   }
}
?>


Обратите внимание!!!
[HTML]
document.all.tbl.rows[currow].cells[0].innerHTML = '<input type=\"text\" name=\"name[]\">'; // вставляем в форму поля
document.all.tbl.rows[currow].cells[1].innerHTML = '<input type=\"text\" name=\"url[]\">';
document.all.tbl.rows[currow].cells[2].innerHTML = '<input type=\"text\" name=\"category[]\">';
document.all.tbl.rows[currow].cells[3].innerHTML = '<input type=button name=\"btnNext\" value=\"+\" onClick=\"add_new_row()\">'; // кнопка для вызова функции для добавления следующей строки
[/HTML]

НЕ НУЖНО ДОБАВЛЯТЬ К ИМЕНИ ПОЛЯ ДОПОЛНИТЕЛЬНОЕ ЗНАЧЕНИЕ СЧЁТЧИКА...
Имя поля должно выглядеть как name[]
Переменные с одинаковыми именами и квадратными скобками передаются как массив...
325
19 августа 2010 года
Franky
723 / / 10.08.2005
спросил у знакомой прорицательницы чего хотел ТС, она тоже в ступоре.
Ждем разъяснений...

п.с.: с такими знаниями писать ЦМС? Ню-ню... Может просто джумлу освоить?

Цитата:

Но если форма одна, примеров в гугле множество, как записать значения в базу, а когда форма такая, то я немного растерялась, что делать с Постом


http://lurkmore.ru/%C6%E5%ED%F1%EA%E0%FF_%EB%EE%E3%E8%EA%E0

59K
19 августа 2010 года
Dariya
13 / / 18.08.2010
*********Kesano***
Вы или неправильно излагаетесь, или алогично мыслите...

Я так понимаю, вы хотите вот это:

Код:
<?
if($_POST) {
   $countrows=array_count($_POST["name"]);
   for($i=0; $i>$countrows; $i++) {
      $name=$_POST["name"][$i];
      $url=$_POST["url"][$i];
      $category=$_POST["category"][$i];
     
      mysql_query("insert into TABLENAME (name,url,category) values ('$name','$url','$category')");
   }
}
?>

******************
пример у меня не работает(


*******************
Обратите внимание!!!
[HTML]
document.all.tbl.rows[currow].cells[0].innerHTML = '<input type=\"text\" name=\"name[]\">'; // вставляем в форму поля
document.all.tbl.rows[currow].cells[1].innerHTML = '<input type=\"text\" name=\"url[]\">';
document.all.tbl.rows[currow].cells[2].innerHTML = '<input type=\"text\" name=\"category[]\">';
document.all.tbl.rows[currow].cells[3].innerHTML = '<input type=button name=\"btnNext\" value=\"+\" onClick=\"add_new_row()\">'; // кнопка для вызова функции для добавления следующей строки
[/HTML]

НЕ НУЖНО ДОБАВЛЯТЬ К ИМЕНИ ПОЛЯ ДОПОЛНИТЕЛЬНОЕ ЗНАЧЕНИЕ СЧЁТЧИКА...
Имя поля должно выглядеть как name[]
Переменные с одинаковыми именами и квадратными скобками передаются как массив...[/QUOTE]
**********************

Исправила, спасибо!

Ну а все-таки? Если не нервничать по поводу моих незнаний, кто-нибудь подскажите, пожалуйста, как мне массив в базу записать?
13
19 августа 2010 года
RussianSpy
3.0K / / 04.07.2006
Проверять надо каждое значение вводимое из формы. Проверять индивидуально. А то как хотите вы или вот товарищ Kesano вам подсказывает приведет вот к чему:

1) все поля будут иметь строковый тип данных и как следствие будет медленно работать
2) Достаточно будет одного значения для которого нет поля в таблице чтобы обрушить систему

Если вы хотите записать массив в базу - хорошо бы все таки проверить каждое значение на наличие SQL-инъекций, а сам массив после этого упаковать в какой-нибудь формат наподобие JSON

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

http://ru.wikipedia.org/wiki/SQL-инъекция

JSON
http://ru.wikipedia.org/wiki/JSON
http://www.php.net/manual/en/function.json-encode.php
http://www.php.net/manual/en/function.json-decode.php


PS и заканчивайте использовать примеры Kesano - пока ничего толкового он вам не показал - только запутал.
244
19 августа 2010 года
UAS
2.0K / / 19.07.2006
Скачайте стостраничное пособие для чайников - там такое точно есть и описано норм.

Цитата:
пример у меня не работает(


Что не работает?? Какие сообщения об ошибках, вообще что там пишется?? Почитайте, что написано.

Вам дали конкретный пример (в целом рабочий). Причин неработоспособности скрипта я вижу:
1) Скопипастили криво
2) Не создали таблицу в базе данных, в кот. будете хранить
3) Вообще не установили СУБД
Удосужтесь почитать учебники, ведь за вас делать никто не будет.

Kesano
if($_POST) - этого в целом вообще не надо, а уж если и надо, то лучше писать isset, ибо логичнее.

Franky
Не надо ссылки на ЛОР))) Я как туда зайду - часов 5 не вылезу =)

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

59K
19 августа 2010 года
Dariya
13 / / 18.08.2010
Цитата: UAS
Скачайте стостраничное пособие для чайников - там такое точно есть и описано норм.


Что не работает?? Какие сообщения об ошибках, вообще что там пишется?? Почитайте, что написано.

Вам дали конкретный пример (в целом рабочий). Причин неработоспособности скрипта я вижу:
1) Скопипастили криво
2) Не создали таблицу в базе данных, в кот. будете хранить
3) Вообще не установили СУБД
Удосужтесь почитать учебники, ведь за вас делать никто не будет.



выдает ошибку, что функция array_count науке неизвестна.
По поиску в гугле находит array_count_value, но просто ничего не пишет в базу.

Уважаемые господа эксперты, вы все тоже когда-то начинали. Я читаю книги, я учусь и стараюсь, но если что-то не получается, считаю, что спросить об этом будет нелишним.

244
19 августа 2010 года
UAS
2.0K / / 19.07.2006
А так-то да, ман на php.net как бэ намекает, что такой функции нет.
Так что используйте функцию count - она то, что надо.
369
19 августа 2010 года
Kesano
451 / / 09.10.2007
ИЗВИНИТЕ!!! МОЙ БОК!!!
Вот исправленное:
Код:
<?
if(isset($_POST["name"])) {
   $countrows=count($_POST["name"]);
   for($i=0; $i>$countrows; $i++) {
      $name=$_POST["name"][$i];
      $url=$_POST["url"][$i];
      $category=$_POST["category"][$i];
     
      mysql_query("insert into TABLENAME (name,url,category) values ('$name','$url','$category')");
   }
}
?>
59K
19 августа 2010 года
Dariya
13 / / 18.08.2010
что с каунтом, что без каунта, не работает.

может, я неправильно вопрос ставлю - мне непонятен тут один момент.
Как данные проверять, записывать в базу, я понимаю.

Непонятно вот что - приходит большой массив $_POST

теперь его значения надо присвоить нескольким переменным, для проверки и тд,

а потом циклом записать в бд, то есть сделать в бд несколько записей.
59K
19 августа 2010 года
Dariya
13 / / 18.08.2010
Цитата: Kesano
ИЗВИНИТЕ!!! МОЙ БОК!!!
Вот исправленное:
Код:
<?
if(isset($_POST["name"])) {
   $countrows=count($_POST["name"]);
   for($i=0; $i>$countrows; $i++) {
      $name=$_POST["name"][$i];
      $url=$_POST["url"][$i];
      $category=$_POST["category"][$i];
     
      mysql_query("insert into TABLENAME (name,url,category) values ('$name','$url','$category')");
   }
}
?>



наверное,

 
Код:
for($i=0; $i<$count($_POST); $i++) {


но все равно ругается
Notice: Undefined index:
325
19 августа 2010 года
Franky
723 / / 10.08.2005
Цитата: UAS

Franky
Не надо ссылки на ЛОР))) Я как туда зайду - часов 5 не вылезу =)


хехе, заразился сам - зарази другого =)

369
19 августа 2010 года
Kesano
451 / / 09.10.2007
1. А вы базу создали?
2. А вы подключение к базе сделали?
3. А ошибки какие-то выдает у вас?
4. А вы ПРАВИЛЬНОЕ имя таблицы написали?
5. А вы ПРАВИЛЬНО оформили ХТМЛ? Имена переменных в форме?
6. .......
9999. А у вас есть парень?

Цитата:
но все равно ругается
Notice: Undefined index:


Потому у вас всё неправильно...

Может проще научиться готовить???

59K
19 августа 2010 года
Dariya
13 / / 18.08.2010
Цитата: Kesano
1. А вы базу создали?
2. А вы подключение к базе сделали?
3. А ошибки какие-то выдает у вас?
4. А вы ПРАВИЛЬНОЕ имя таблицы написали?
5. А вы ПРАВИЛЬНО оформили ХТМЛ? Имена переменных в форме?
6. .......
9999. А у вас есть парень?


Потому у вас всё неправильно...

Может проще научиться готовить???



подключение есть, имена все правильные, на примерах попроще, не с циклом, все проверено и работает. На Ваш конкретно пример ругается так -

Undefined index: name

Undefined index: url

Undefined index: category

Я так понимаю, что если он на индекс ругается, то имена таблиц и имена переменных в форме тут ни при чем?

274
19 августа 2010 года
Lone Wolf
1.3K / / 26.11.2006
что var_dump($_POST) выдает?
ставим пред фор-ом var_dump($_POST);die(); смотрим что приходит и кореткируем код
244
19 августа 2010 года
UAS
2.0K / / 19.07.2006
Ррррр, надоело %)
Вот вам пример.

Пусть форма с тремя полями:
1) Никнейм (до 40 символов в длину)
2) Возраст (>= 1, <= 100)
3) Наличие машины (да/нет) (правда ввод флага малость усложняет пример, ну что поделать)

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

Создаем таблицу в БД:
 
Код:
CREATE TABLE `users` (
    `id` INT UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
    `nickname` VARCHAR(40) NOT NULL,
    `age` TINYINT UNSIGNED NOT NULL,
    `has_car` BOOL NOT NULL
) TYPE = MyISAM DEFAULT CHARSET = utf8;


Ваяем следующую форму:
Код:
<form action="form.php" method="post">
<table>
    <tr>
        <th>Никнейм</th>
        <th>Возраст</th>
        <th>Наличие машины</td>
    </tr>

    <tr>
        <td><input type="text" name="nickname[0]" /></td>
        <td><input type="text" name="age[0]" /></td>
        <td><input type="checkbox" name="has_car[0]" /></td>
    </tr>
    <tr>
        <td><input type="text" name="nickname[1]" /></td>
        <td><input type="text" name="age[1]" /></td>
        <td><input type="checkbox" name="has_car[1]" /></td>
    </tr>
    <tr>
        <td><input type="text" name="nickname[2]" /></td>
        <td><input type="text" name="age[2]" /></td>
        <td><input type="checkbox" name="has_car[2]" /></td>
    </tr>

    <tr>
        <td colspan="3"><input type="submit" value="Добавить" /></td>
    </tr>
</form>


Так как мои слова выше о var_dump ТС были проигнорены, то надо будет здесь тыкнуть носом.

Для начала создадим form.php с кодом:
 
Код:
var_dump($_POST);
и смотрим результат - это то, в каком виде введенные пользователем данные пришли в скрипт.

var_dump нам покажет примерно следующее:
Код:
array(3) {
  ["nickname"]=>
  array(3) {
    [0]=>
    string(3) "UAS"
    [1]=>
    string(6) "Kesano"
    [2]=>
    string(6) "Ктулху"
  }
  ["age"]=>
  array(3) {
    [0]=>
    string(2) "21"
    [1]=>
    string(2) "19"
    [2]=>
    string(6) "100500"
  }
  ["has_car"]=>
  array(2) {
    [1]=>
    string(2) "on"
    [2]=>
    string(2) "on"
  }
}


Теперь надо добавить эту красоту в БД (а заодно сначала проверить, ибо хороших людей мало).

Код:
<?php

// проверка того, что в $_POST есть требуемые ключи.
// has_car проверять не надо, т.к. если не поставлена ни одна галочка,
// то не установится данный ключ в массиве (что мне, как бэ, не нравится, но что поделать)
if( !isset($_POST["nickname"]) || !isset($_POST["age"]) ) {
    die("POST data incorrect");
}


// Никнеймы тех, кого добавили
$added_users_nicknames = array();


// Подключаемся к БД (не забываем подстанавливать реальные данные подключения)
mysql_connect("*db_host*", "*db_name*", "*db_password*");
mysql_select_db("*db_database*");
mysql_query("SET NAMES 'utf8'"); // нормальные люди работают с UTF-8.


/*
  по идее ниже мне важнее будет переменная $id, а не $nickname,
  т.к. я привык работать напрямую с данными в массиве, а не вытаскивать
  все в переменные, ибо считаю это идиотизмом + растрачиванием памяти
  (не плодите сущности).
  for я здесь не использую, т.к. я его считаю не нужным для данной задачи.
  Почему - могу объяснить, если кому надо будет.
*/

foreach( $_POST["nickname"] as $id => $nickname ) {
    // проверка длины никнейма (обрезаного от крайних пробельных символов)
    if( strlen(trim($_POST["nickname"][$id])) > 40 ) continue;

    // проверка возраста
    if( !isset($_POST["age"][$id]) || !is_numeric($_POST["age"][$id]) ||
        (int)$_POST["age"][$id] < 1 || (int)$_POST["age"][$id] > 100
    ) continue;

    // данные указаны верно, а потому добавляем данные
    // и не забываем про SQL-injections

    /*
      Добавлять пользователей можно через INSERT команду SQL, каждый раз при этом
      вызывая mysql_query. Как люди умные - надо сделать добавление одним SQL-запросом.
      Но для простоты примера (для ТС) я буду каждый раз вызывать mysql_query.
      В реальной жизни (ТС помни!) это надо сделать одним SQL-запросом.
    */

    mysql_query(sprintf(
        "INSERT INTO `users`(`nickname`, `age`, `has_car`)
        VALUES('%s', %d, %d)"
,
        mysql_real_escape_string( trim($_POST["nickname"][$id]) ),
        (int)$_POST["age"][$id],
        isset( $_POST["has_car"][$id] )
    ));

    // добавляем никнейм того, кого добавили
    $added_users_nicknames[] = &$_POST["nickname"][$id];
}

// Выводим того, кого добавили:
printf(
    "%d users were added: %s",
    count($added_users_nicknames),
    implode("<br/>", $added_users_nicknames)
);

// имхо, удалять ненужные переменные, не дожидаясь "сборщика мусора" - полезная привычка
unset($id, $nickname, $added_users_nicknames);

?>


PROFIT.

P.S.: за мой стиль форматирования кода - не пинать, зато сразу все видно)
[COLOR="Silver"]P.S.2: кому понравилось - ставьте на весах +, инициатива, так сказать))[/COLOR]
369
19 августа 2010 года
Kesano
451 / / 09.10.2007
Undefined index - это означает, что вы неправильно оформили ФОРМУ в ХТМЛ... имена ВСЕХ полей (которые <input type="text" name="url[]"> ) в значении name должны нести квадратные скобки : url[]

[HTML]
<input type="text" name="name[]">
<input type="text" name="url[]">
<input type="text" name="category[]">
[/HTML]

...
Извините, но учитывая 3 стрницы полезных советов (которые почему-то вам не помогли), у вас есть 2 выхода:
1. Заплатить (каким угодно способом) за то, чтобы вам написали код к этой курсовой\диплому
2. Забить и скачать книгу "О вкусной и здоровой пище". проку будет больше... Не каждой (далеко) девушке дано быть программистом... против природы переть смысла нету...

На злобу дня:
Малоопытный программист подходит к Гуру, протягивает исходники программы:
- Посмотри пожалуйста, где у меня ошибка?
Спец смотрит на него, на код, снова на него, снова на код:
- В ДНК!
13
20 августа 2010 года
RussianSpy
3.0K / / 04.07.2006
Notice это не ошибка, это уведомление.
16K
20 августа 2010 года
k0t
97 / / 23.04.2007
Цитата:
по идее ниже мне важнее будет переменная $id, а не $nickname,
т.к. я привык работать напрямую с данными в массиве, а не вытаскивать
все в переменные, ибо считаю это идиотизмом + растрачиванием памяти
(не плодите сущности).
for я здесь не использую, т.к. я его считаю не нужным для данной задачи.
Почему - могу объяснить, если кому надо будет.



Но в данном случае $nickname уже создана и память под нее выделена. Мне объясните чем тут форич лучше фора если "предпочтительнее работать напрямую с данными в массиве".

244
20 августа 2010 года
UAS
2.0K / / 19.07.2006
А в том, что учитывая задачу ТС, то ей надо будет добавлять много данных за раз. Т.е. может добавит одного пользователя, а может 100500 (допустим, не в её примере, а уже в каком-нибудь реальном приложении, где объемы данных значительнее).
Также, если глянуть её предыдущие посты, то кол-во полей на html-форме не фиксированное, т.е. она может/хочет добавлять, удалять строки, т.е. в обработчик могут прийти: nickname[0], nickname[4], nickname[5], ...

Можно, конечно, все засунуть в for и добавить if( !isset($_POST["nickname"][$i]) ) continue;, но для меня, с логической точки зрения лучше добавить foreach, т.к. for - это все таки последовательный перебор, т.е. с первого взгляда на код я буду считать, что $_POST["nickname"] упорядоченный массив без пропусков, в то время как foreach - это обход всех данных, имеющихся в массиве. Т.е. здесь foreach лучше for, т.к. он более логически сюда подходит.

То, что $nickname создана - то увы ничего не поделать, так уж приходиться поступать при использовании foreach. А работать в одном месте с $nickname, а чуть ниже с $_POST["age"], хотя логически эти данные все в одном $_POST, мне тоже не нравится)

Ну и я уж так не сделал в примере, но можно создать не переменную $nickname (т.е. скопировать значение из $_POST["nickname"][xx]), а лишь создать ссылку на неё, т.е. в foreach будет $id => &$nickname - в этом случае код останется также логически понятным и структурированным ("все по полочкам"), а потеря какой-то части памяти на создание ссылки - не такая уж и большая потеря в сравнении с качеством кода)
16K
20 августа 2010 года
k0t
97 / / 23.04.2007
Проведя синтетический тест (обожаю эту фразу - она столько холиваров порождает) оказалось что памяти естся одинаково, а вот процессора for ест поменьше и выполняется слегка быстрее.
Цитата:
Т.е. здесь foreach лучше for, т.к. он более логически сюда подходит.


И в плане наглядности естественнее смотрится.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог