Ответ
Введение в PHP Опции темы
Старый 06.01.2012, 02:30
  #1
xx-xx
 
Регистрация: 31.03.2011
Сообщений: 51

Введение в PHP
Решил и я поучаствовать конкурсе.
Попробую сделать практическое введение в PHP.
Я не буду особо размазывать и говорить о совсем очевидных вещах (как например, о том что в именах переменных нельзя использовать русские буквы и не надо давать им матерные названия). Если что-то будет непонятно, задавайте вопросы в теме, попробую объяснить по-другому.

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

Традиционно знакомство с языком программирование начинается с написания простой программы "Hello, World". Но у нас тут своя специфика и постараемся не боянить.
Лучше напишем простую html страницу с превью клипа и ссылкой на ФО. В примерах будем использовать 3 единицы порно-контента.

http://i.imgbox.com/aae2yTrP.jpg
http://i.imgbox.com/aaenlUTH.jpg
http://i.imgbox.com/aalOsi7x.jpg 

http://www.filesonic.com/file/4005919414/Contraband1.wmv
http://www.filesonic.com/file/4049509244/Contraband2.wmv
http://www.filesonic.com/file/4005964344/Contraband3.wmv
Создаем файл index.php, открываем его в текстовом редакторе:

<?php
echo "http://i.imgbox.com/aae2yTrP.jpg http://www.filesonic.com/file/4005919414/Contraband1.wmv";
?>
Сохраняем и загружем его на хостинг.

Надо бы добавить немного html по-вкусу.
<?php
echo "<img src = 'http://i.imgbox.com/aae2yTrP.jpg'><br><a href='http://www.filesonic.com/file/4005919414/Contraband1.wmv'>http://www.filesonic.com/file/4005919414/Contraband1.wmv</a>";
?>
Думаю, уже понятно, для чего служит echo. Вместо оператора echo можно было бы использовать print и получить такой же результат. Между ними есть разница, но она нас не интересует.

Перейдем теперь к работе с переменными.
Объявление переменной в php начинается со знака бакса $. В именах можно использовать латинские буквы, цифры, символ подчеркивания. Имя не может начинаться с цифры, т.е. нельзя делать так $1name. А так $name1 можно.

Объявим несколько переменных и поместим туда ссылки на скриншоты и файлы.

<?php
$pic1 
"http://i.imgbox.com/aae2yTrP.jpg";
$link1 "http://www.filesonic.com/file/4005919414/Contraband1.wmv";
?>
Воспользуемся оператором echo.

<?php
$pic1 
"http://i.imgbox.com/aae2yTrP.jpg";
$link1 "http://www.filesonic.com/file/4005919414/Contraband1.wmv";
echo 
$pic1;
echo 
$link1;
?>
В программировании есть такое труднопроизносимое слово - конкатенация. Конкатенация - это не так сложно, как звучит - это всего лишь соединение нескольких строк. В php (как и в других языках) для этого существует строковый оператор - точка(.).

Мы этим воспользуемся для соединения наших ссылок с html тегами.

<?php
$pic1 
"http://i.imgbox.com/aae2yTrP.jpg";
$link1 "http://www.filesonic.com/file/4005919414/Contraband1.wmv";

echo 
"<img src='".$pic1."'><br>";
echo 
"<a href='".$link1."'> Link1</a>";
?>
Т.е.
echo "<img src='".$pic1."'><br>" 
дает нам
&lt;img src='http://i.imgbox.com/aae2yTrP.jpg'&gt;&lt;br&gt;
У нас три ссылки для скринов и три для ФО. Можно для каждой создавать свою переменную ($pic1, $pic2, $link1, $ink2...). Но удобнее будет поместить их в массив. Массив - это переменная, которая может одновременно хранить много значений, т.е. элементов (в нашем случае - много ссылок). Массивы бывают ассоциативные и индексные. Нас пока интересуют индексные массивы.
Создадим один такой массив для ссылок на картинки.
Т.к. массив - это переменная, то и для его объявления используется символ бакса $.

$pics = array("http://i.imgbox.com/aae2yTrP.jpg""http://i.imgbox.com/aaenlUTH.jpg""http://i.imgbox.com/aalOsi7x.jpg"); 
Массив pics содержит теперь 3 элемента, счет начинается с 0. Т.е.
Элемент 0 - http://i.imgbox.com/aae2yTrP.jpg
Элемент 1 - http://i.imgbox.com/aaenlUTH.jpg
Элемент 2 - http://i.imgbox.com/aalOsi7x.jpg
У нас есть еще ссылки на ФО. Мы для них тоже создадим массив, но по-другому.
А пока небольшое отступление.

Представим, что мы делаем простой сайт, где публикуем ссылки, которые время от времени абьюзят. Чтобы облегчить себе жизнь, мы делаем копии загруженных файлов, и когда приходит время заменяем удаленные ссылки на копии вручную.
В нашем примере мы имеем 3 клипа (name1.wmv, name2.wmv, name3.wmv), которые мы залили на соньку, поместили в папку, скажем, "05-01-2012", в ней создали еще одну папку "temp", куда скопировали ссылки на случай абьюзы. У нас есть 3 скрина - name1.jpg, name2.jpg, name3.jpg.

Теперь нам надо сделать два файла - pics.txt и links.txt, в которых будет три строки, и каждая строка файла pics.txt будет соответствовать каждой строке links.txt. Т.е.
1-я строка pics.txt содержит ссылку на скриншот клипа, ссылка на который содержится в 1-й строке файла links.txt. И так далее.
Сделать это несложно. У нас есть упорядоченые по-имени файлы в папке 05-01-2012. Сонька нам генерирует по-одной ссылке в каждой строке в алфавитном порядке. У нас есть 3 jpg файла, имена которых совпадают с именами залитых на ФО файлов. Заливаем их на imgbox и получаем три прямых ссылки в такой же алфавитной последовательности.

Примечание: не все фотохостинги выдают ссылки по-одной на строку, многие все ссылки пихают в одну строку и нам это не подойдет сейчас.

3 сылки от соньки вставляем в файл links.txt, 3 ссылки от imgbox вставляем в pics.txt. И заливаем файлы на хостинг в тот же каталог, где у нас лежит index.php.

Возвращаемся к php.
Для работы с файлами в php есть разные функции. Мы сейчас воспользуемся одной из них - file(). Функция file берет файл и возвращает нам массив, состоящий из строк взятого файла, т.е. одна строка - один элемент. Таким образом для файла pics.txt она сделает массив, который мы уже делали вручную.

$pics = array("http://i.imgbox.com/aae2yTrP.jpg""http://i.imgbox.com/aaenlUTH.jpg""http://i.imgbox.com/aalOsi7x.jpg"); 
А для вывода элементов массива мы воспользуемся оператором echo[x], где x - порядковый номер элемента.
<?php
$pics 
file("pics.txt");
$links file("links.txt");
echo 
$pics[0]."<br>";
echo 
$links[0]."<br>";
echo 
$pics[1]."<br>";
echo 
$links[1]."<br>";
echo 
$pics[2]."<br>";
echo 
$links[2]."<br>";

?>
Нужные html тэги добавите сами.
Наверное вы уже поняли, что когда удалят оригинальные ссылки, достаточно будет в файл links.txt скопировать ссылки на копии в том же порядке(в алфавитном в нашем случае).

Если интересно, можно потом продолжить.

Этим примером я попытался показать, что даже при самых начальных познаниях в php возможно делать для себя какие-то ништяки.
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 06.01.2012, 13:20
  #2
Xenolith
 
Регистрация: 12.05.2011
Сообщений: 16

Лучше изучать PHP на своем компе, установив Denwer
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 06.01.2012, 15:02
  #3
Bunny
 
Аватар для Bunny
Регистрация: 31.07.2011
Сообщений: 166

xx-xx, сколько примерно нужно потратить времени, не для того чтобы что-то писать, а просто хоть немного понимать написанный код, например, тот который ты написал, только без твоих пояснений.
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 06.01.2012, 15:13
  #4
xx-xx
 
Регистрация: 31.03.2011
Сообщений: 51

Сообщение от Bunny Посмотреть сообщение
xx-xx, сколько примерно нужно потратить времени, не для того чтобы что-то писать, а просто хоть немного понимать написанный код, например, тот который ты написал, только без твоих пояснений.
Точно не сказать. Если есть опыт изучения любого другого языка, то может минут 10-15 - полистать первые главы любого учебника по php для начинающих.
В моем примере нет даже простого цикла, я старался показать, как начинающий мог бы использовать минимум знаний для чего-нить полезного.

А что в моем примере было непонятно?
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 06.01.2012, 15:49
  #5
Bunny
 
Аватар для Bunny
Регистрация: 31.07.2011
Сообщений: 166

Все понятно, просто поинтересовался.
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 07.01.2012, 07:53
  #6
neo89skynet
 
Регистрация: 06.01.2012
Сообщений: 31

xx-xx, Спасибо за предоставленный материал, кое что было полезно, так сказать вспомнить.
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 09.01.2012, 16:17
  #7
xx-xx
 
Регистрация: 31.03.2011
Сообщений: 51

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

В прошлом примере мы делали html страницу с тумбами и ссылками. Для вывода элементов массива мы использовали оператор echo.
<?php
$pics 
file("pics.txt");
$links file("links.txt");
echo 
$pics[0]."<br>";
echo 
$links[0]."<br>";
echo 
$pics[1]."<br>";
echo 
$links[1]."<br>";
echo 
$pics[2]."<br>";
echo 
$links[2]."<br>";
?>
Теперь сделаем тоже самое, но с помощью цикла for.

for ($i=0$i<3$i++){
echo 
$pics[$i]."<br>";
echo 
$links[$i]."<br>";

Если у нас будет много картинок и ссылок, нам не надо будет для каждой пары прописывать echo $pics[0]...echo $pics[20].
В нашем примере у нас 3 пары. 3 ссылки и 3 картинки содержатся в 2-х массивах ($pics и $links).
Напоминаю, что нумерация в массиве начинается с 0, поэтому мы вводим $i=0. Заканчивается массив на элементе №2, поэтому $i<3.
3-го и последующих элементов в массиве нет. Нам надо получить каждый элемент, поэтому мы $i увеличиваем на 1 ($i++).

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











И нам приходится либо руками разбивать строку и вставлять нужные ссылки на ФО, либо загружать по-одной картинке и опять же
руками копировать и вставлять ссылки, чтобы подготовить посты:





Разберем, как можно немного автоматизировать рутинную работу.

Для картинок у нас файл pics.txt(где одна строка ББ-кодов), ссылки на орон в файле links.txt (орон автоматически выдает для файлов одну ссылку на строку). Нам надо получить в файл new.txt. разбитые по-парам ссылки. Загружаем index.php, links.txt, pics.txt и пустой файл new.txt в один каталог. Открываем в редакторе index.php.

Приступаем.

<?php
$links 
file("links.txt");
?>
Тут, как и в прошлом примере, мы используем функцию file() для чтения строк файла в массив $links. Для файла с ББ-кодами картинок мы возьмем другую функцию - fgets(). Она считывает строку из файла (а нам это и надо, ведь в файле pics у нас одна строка).

Но прежде чем мы сможем воспользоваться fgets(), нам надо открыть файл для чтения. Для этого существует fopen().

<?php
$links 
file("links.txt");
$openpics fopen("pics.txt""r");
?>
fopen() имеет здесь два аргумента: имя файла, и, скажем так, цель открытия "r"(для чтения, read).
Теперь можем использовать fgets(). Для fgets() нужен открытй файл, у нас это pics.txt и именно его нам надо передать функции для получения строки. А т.к. файл у нас уже "открыт" в $openpics, то:

<?php
$links 
file("links.txt");
$openpics fopen("pics.txt""r");
$picsline fgets($openpics);
?>
И $picsline теперь содержит строку с ББ-кодами из файла pics.txt.
Нам надо разабить строку на несколько, чтобы каждая строка содержала ББ-код одной картинки. Оратите внимание, что в строке с ББ-кодами есть пробелы после "[/URL]", т.е. коды картинок в строке разделяются пробелами, которые нам помогут разбить. Для этого воспользуемся функцией explode().

<?php
$links 
file("links.txt");
$openpics fopen("pics.txt""r");
$picsline fgets($openpics);
$newpics explode(" "$picsline);
?>
Функция explode() берет у нас 2 аргумента - разделитель(в нашем случае пробел в кавычках (" ")) и собственно строку, которую будет разбивать в соответствии с первым аргументом. И возвращает нам массив. Теперь у нас есть два массива - $links и $newpics, откуда мы будем брать ссылки для запись в файл new.txt. Но прежде, чем мы сможем с ним работать, его надо открыть для записи с помощью функции fopen().

<?php
$links 
file("links.txt");
$openpics fopen("pics.txt""r");
$picsline fgets($openpics);
$newpics explode(" "$picsline);
$newfile fopen("new.txt""w");
?>
А дальше мы с помошью цикла for, функции fwrite(), конкатенации и символа новой строки "
" запишем ссылки из массивов links и newpics в файл new.txt.

<?php
$links 
file("links.txt");
$openpics fopen("pics.txt""r");
$picsline fgets($openpics);
$newpics explode(" "$picsline);
$newfile fopen("new.txt""w");
for (
$i=0$i<4$i++){
fwrite($newfile$newpics[$i]."
"
.$links[$i]."
"
);
}
?>
Функция fwrite() также, как и fgets(), требует для работы открытый файл ($newfile).


Получаем готовые посты:




Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 22.01.2012, 07:44
  #8
White
 
Регистрация: 11.08.2011
Сообщений: 6

xx-xx спасибо, очень полезная статья получилась.
Если не затруднит, скажи пожалуйста с чего и(или) как ты начал изучать PHP.
И посоветуй пожалуйста толковую книгу для начинающих, а то я скачал парочку - в одной прочел чуть более 20 стр, в другой около 40, да все не то
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 22.01.2012, 16:58
  #9
Moe
 
Регистрация: 02.07.2011
Сообщений: 219

вот это лучше книг
http://nnm-club.ru/forum/viewtopic.php?t=270800
http://nnm-club.ru/forum/viewtopic.php?t=276368
но лучше не пожалеть денег, записаться на онлайн-курсы и научиться чему то еще, кроме постинга
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием
Старый 23.01.2012, 07:55
  #10
xx-xx
 
Регистрация: 31.03.2011
Сообщений: 51

Сообщение от White Посмотреть сообщение
xx-xx спасибо, очень полезная статья получилась.
Если не затруднит, скажи пожалуйста с чего и(или) как ты начал изучать PHP.
И посоветуй пожалуйста толковую книгу для начинающих, а то я скачал парочку - в одной прочел чуть более 20 стр, в другой около 40, да все не то
а что за книги? по англ. читаешь?
я в основ книжки apress, oreily и др. листал.
Нравится 0   Не нравится 0
Пожаловаться на это сообщение 0  
Ответить с цитированием

Ответ
 
 

Метки
мануал


Здесь присутствуют: 1 (пользователей: 0, гостей: 1)
 
Опции темы

Быстрый переход


Текущее время: 15:11. Часовой пояс GMT +3.