Ищу программиста для удаленного обучения меня PHP через скайп Имею опыт, работаю программистом NET Оплата через системы лидер, вестерн... Заинтересован в изучении: - server setup - security issues - MVC methods - cookies/sessions best practice - jquery - seo friendly urls - cron methods Присылайте предложния на адрес: grmotild@gmail.com с указанием тарифа по часам или за месяц
давай мы тя прям тут грузанём. в пхп врубаться это вопрос пяти минут. Пхп работает со стандартными потоками ввода и вывода. Запрос всегда приходит в текстовом виде и даже числа приходят в человекочитаемом тексовом виде, т.е. именно три байта 123 это число сто двадцать три. Пхп рождён чтобы умирать, и делать это быстро. Пхп получает запрос, лезет в бд и вываливает то, что набрал "прямо в браузер" человеку. Когда он слазил в бд и склеил строки и отдал браузеру, то он умирает, и поэтому не надо следить за памятью и закрывать подключения. Поэтому для пхп скрипта 30 секунд это настолько адски долго, что если такой скрипт встречается, то сервак его убивает. Это меняется в конфиге, но обычно это не требуется трогать вообще, потому что время жизни скрипта должно измеряться миллисекундами, ну в самом худшем случае - сотнями миллисекунд. Пхп-скрипт запускается каждый раз заново, он рождается в пустой вселенной, поэтому есть механизм сессий. Сессия хранится на сервере. Это такой файлик в папке с сессиями (обычно это банальный /tmp, поэтому на говнохостингах можно пошариться по чужим сессиям). В этом файлике лежат сериализованные данные. Пхп-сериализация очень быстрая, практически мгновенная. Работает очень быстро. Сессия определяется по наличию идентификатора в куке запроса. Собственно нет никаких cookies/sessions best practice, ибо это банальное хранилище, что одно, что другое. Разница в том, что куки живут в браузере, и чел может их поменять. Браузер шлёт куки при каждом запросе каждый раз заново. Куки маленькие, и много туда не сохранишь. Кука хранится в браузере пока не протухнет (дата устанавливается когда куку устанавливаешь), либо пока чел сам не снесёт куки по своему усмотрению. Сессия живёт на сервере, и к ней теоретически никто кроме пхп не имеет доступа. Сессия живёт маленькое количество времени. Задача сессии - хранить сиюминутные некие настройки, например айдишник юзера. Сессия не должна жить долго, иначе боты наплодят тебе мульён сессий, которые некуда будет складывать, т.к. обычно боты сессии не поддерживают, и на каждый запрос будет создаваться новый файлик сессии. Хочешь что-то хранить долго - храни в бд или файликах. Это отдельно, и для знакомства с пхп не требуется. Пхп работает из коробки, и его можно поставить на локальный комп с виндой например так http://easyphp.org их основных три 1. не верь тому что юзер тебе может прислать, ибо он может всё поменять, и засунуть строку вместе числа, отрицательное вместо положительного и т.п. 2. Юзер может сказать что его зовут <img src="jopa.jpg"> и когда ты будешь выводить его имя, то в браузер будет попадать тег с картинкой, и люди будут созерцать жопу вместо имени. И будет смешно. Потому что когда вместо картинки с жопой будет <script> который тырит куки посетителей и соотв их сессии позволяя зайти под этими юзерами - вот это будет уже не смешно. Бороться надо через htmlspecialchars(). 3. Юзер может сказать что его зовут ' OR 1 и будет инъекция в бд, ну да ты должен это знать. Бороться надо через установку кодировки соединения штатными средствами подключения, а после экранировать штатной функцией экранирования этого подключения, а не другого, т.к. от кодировки зависит результат экранирования. И вообще на не-юникодной кодировке есть способ заставить появиться в строке кавычку после экранирования, хотя изначально её там не было даже до экранирования. оно же МВЦ не обязательная штука. Главный принцип - разносить логику и отображение. МВЦ это часный способ решения данного вопроса. В пхп в принципе работа контроллера изначально возложена на веб-сервер. Он парсит запросы и решает какой файл дёргать. Просто это неудобно, и обычно все запросы направляют на index.php в корне сайта. Там уже можно распарсить $_SERVER["REQUEST_URI"] и понять, что хотел пользователь. Далее. Пхп заточен под работу со строками, и можешь сразу забить на типизацию, ибо как я сказал, данные юзер присылает в текстовом виде, более того, они в текстовом виде могут приходить из бд, так что пхп из коробки довольно вольно обращается с типами. Т.е. если в одной переменной хранится строка "123", а в другой инт 123, то при сравнении пхп скажет true, ибо это очень удобно в большинстве случаев. В подавляющем большинстве. В двух остальных случаях можно действовать так: 1. Строгое сравнение === (три равно, да). Проверяется также тип. Если ты посмотришь пример, то всё станет ясно. Код (PHP): $a = "123"; $b = 123; if ($a == $b) { //Прокатит } if ($a === $b) { //Не прокатит } 2. Кастовать типы. Ты можешь скастить тип без изменения содержимого переменной, т.е. без приравнивания. Код (PHP): $a = "123"; $b = 123; if ($a == $b) { //Прокатит } if ((int)$a === $b) { //Прокатит } if ($a === (string)$b) { //Прокатит } Если скастовать инт на строку, то если она начинается с циферок, то получится это число. До первой буквы. Остальное будет отброшено. Если скастовать инт на строку, которая начинается с буквы, ты удобно получишь ноль. Соотв, защищать числовые данные экранированием перед выводом в хтмл или в запрос в БД не требуется. Достаточно скастовать тип числовой, и получишь гарантированное число. Соотв, в пхп есть плюшки, заточенные под работу с текстом. Т.е. если сделать if ("1") или if ("123"),то это тру, если if ("0") - то это фалс. А так же пустая строка это фалс, а строка с тексом это тру, поэтому удобно писать так: Код (PHP): if ($string) { echo $string; } И если в этой строке нет ничего, т.е. она либо пустая, либо нулл, либо даже булевый фалс, то ничего не выведется. А если там текст - то выведется. Соотв, инты сразу выводятся в текст точно так же конвертируясь в человекочитаемые строки. Ты всегда можешь узнать тип переменной, заюзав функции типа is_string() и т.п. Соотв. функции могут возвращать как числа, так и строки, так и массивы, так и объекты, так и нулл. Это удобно, т.к. в случае облома ты можешь вернуть фалс, и тройным равно отличить его например от числа ноль. Сроки. Строки в пхп выводятся через echo в основном. Это языковая конструкция, а не функция, поэтому не нужны скобки. И она может принимать аргументы через запятую в любом количестве. В пхп есть отдельный специальный конкатенатор - это к сожалению точка. Точка складывает строки. И переменные как строки. Т.е. если ты использовал конкатенатор, то гарантированно получаешь строку на выходе. В пхп плюс складывает числа, а точка строки. Код (PHP): $a = "1"; $b = "1"; echo $a + $b; // 2 echo $a . $b; // 11 Это вносит много удобства, т.к. ты всегда знаешь, что не смотря на тип, произойдёт либо математическое, либо строковое сложение. Строки в пхп пишутся в двух типах кавычек. В одинарных ' и в двойных ". В одинарных кавычках строка воспринимается как есть. А вот в двойных можно записывать переменные прямо внутри. Прям как в C#6.0 =) Код (PHP): $var = 'text'; echo 'some string some $var here \n'; // some string some $var here \n echo "some string some $var here \n"; // some string some text here Перевод строки прокатит только в двойных. Так-то. Также в двойных можно писать массивы в фигурных скобках. Код (PHP): "text {$array['alala']} text"; Массивы. В пхп есть ассоциативные массивы. Это значит что ключом в массиве может быть строка. Члены массива могут быть любого типа, и массивом в том числе. Это удобно. Массивы можно сортировать не только по значению, но и по ключу. Из ассоциативного массива можно выковырять член из середины, ничего не перекосится. Создаётся массив так $a = []; Новый член добавляется так $a[] = 'value'; Наличие такого члена проверяется через isset($a['key']); По массиву лучше проходить циклом foreach - он самый быстрый и удобный в то же время. Последовательность прохода форычем по массиву нигде не указана, но она такая, какая последовательность ключей в массиве. Далее. Пхп это скриптовый язык. И он медленный, хотя и очень быстрый для скриптового. Поэтому основной упор надо делать на фунции и методы пхп, которые компилированы, и работают быстро. Т.е. для начала работы с пхп надо идти и читать доку. Дока на сайте http://php.%6eet имеет много каментов внизу, и там всегда обсосаны стандартные случаи применения и проблемы с этим связанные. Читай каменты. Функций немного. Они для частых операций, например сортировки массива, сортировки в обратную сторону, склейки массива и разбивания строки на массив , поиск в строке (кстати может вернуть фалс в случае облома, и ноль если нашла в самом начале строки) и т.п. Тебе надо попривыкнуть их использовать. Когда освоишь функции, то можно переходить к фреймворкам. Функций надо выучить штук двести для начала. Остальные можно поглядывать, но основные надо знать и пользоваться ими. На собеседовании например могут попросить написать как парсить ini-файл в массив. А это делается одной строкой через вызов функции parse_ini_file(), а не через циклы всякие. В пхп простая работа с json, т.к. нет четкой типизации, то json легко парсится в массив, в котором некоторые члены - значения, а некоторые - опять массивы, и по нему можно шариться через форыч. Если будут вопросы - ты спрашивай на форуме.
да как бы там больше ничего и нет. Остались только классы, которые не совсем классы, и неймспейсы. Но там всё просто.
А как вы товарищ до этого выучились на программиста? Добавлено спустя 2 минуты 7 секунд: Ты так весь народ распугаешь))) Сомнительная цифра...
Игорь, удивил, обычно не больше 5-10 строк по PHP. Браво!. grmotild, в скайпе тебя никто программировать не научит. Тебе такой окуительный старт дали, теперь осталось взять какую-нибудь книжку и начать заниматься.