За последние 24 часа нас посетили 18372 программиста и 1581 робот. Сейчас ищут 1679 программистов ...

Ищу программиста для удаленного обучения PHP через скайп

Тема в разделе "PHP Free-Lance", создана пользователем grmotild, 5 фев 2015.

  1. grmotild

    grmotild Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    3
    Симпатии:
    0
    Ищу программиста для удаленного обучения меня PHP через скайп
    Имею опыт, работаю программистом NET
    Оплата через системы лидер, вестерн...
    Заинтересован в изучении:
    - server setup
    - security issues
    - MVC methods
    - cookies/sessions best practice
    - jquery
    - seo friendly urls
    - cron methods
    Присылайте предложния на адрес: grmotild@gmail.com
    с указанием тарифа по часам или за месяц
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    давай мы тя прям тут грузанём. в пхп врубаться это вопрос пяти минут.

    Пхп работает со стандартными потоками ввода и вывода. Запрос всегда приходит в текстовом виде и даже числа приходят в человекочитаемом тексовом виде, т.е. именно три байта 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):
    1. $a = "123";
    2. $b = 123;
    3.  
    4. if ($a == $b) {
    5.   //Прокатит
    6. }
    7.  
    8. if ($a === $b) {
    9.   //Не прокатит
    10. }
    11.  
    2. Кастовать типы. Ты можешь скастить тип без изменения содержимого переменной, т.е. без приравнивания.
    Код (PHP):
    1. $a = "123";
    2. $b = 123;
    3.  
    4. if ($a == $b) {
    5.   //Прокатит
    6. }
    7.  
    8. if ((int)$a === $b) {
    9.   //Прокатит
    10. }
    11.  
    12. if ($a === (string)$b) {
    13.   //Прокатит
    14. }
    15.  
    Если скастовать инт на строку, то если она начинается с циферок, то получится это число. До первой буквы. Остальное будет отброшено. Если скастовать инт на строку, которая начинается с буквы, ты удобно получишь ноль. Соотв, защищать числовые данные экранированием перед выводом в хтмл или в запрос в БД не требуется. Достаточно скастовать тип числовой, и получишь гарантированное число.

    Соотв, в пхп есть плюшки, заточенные под работу с текстом. Т.е. если сделать if ("1") или if ("123"),то это тру, если if ("0") - то это фалс. А так же пустая строка это фалс, а строка с тексом это тру, поэтому удобно писать так:
    Код (PHP):
    1. if ($string) {
    2.   echo $string;
    3. } 
    И если в этой строке нет ничего, т.е. она либо пустая, либо нулл, либо даже булевый фалс, то ничего не выведется. А если там текст - то выведется.

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

    Соотв. функции могут возвращать как числа, так и строки, так и массивы, так и объекты, так и нулл. Это удобно, т.к. в случае облома ты можешь вернуть фалс, и тройным равно отличить его например от числа ноль.

    Сроки.

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

    В пхп есть отдельный специальный конкатенатор - это к сожалению точка. Точка складывает строки. И переменные как строки. Т.е. если ты использовал конкатенатор, то гарантированно получаешь строку на выходе. В пхп плюс складывает числа, а точка строки.
    Код (PHP):
    1. $a = "1";
    2. $b = "1";
    3.  
    4. echo $a + $b; // 2
    5. echo $a . $b; // 11   
    Это вносит много удобства, т.к. ты всегда знаешь, что не смотря на тип, произойдёт либо математическое, либо строковое сложение.

    Строки в пхп пишутся в двух типах кавычек. В одинарных ' и в двойных ".

    В одинарных кавычках строка воспринимается как есть. А вот в двойных можно записывать переменные прямо внутри. Прям как в C#6.0 =)
    Код (PHP):
    1. $var = 'text';
    2. echo 'some string some $var here \n'; // some string some $var here \n
    3. echo "some string some $var here \n"; // some string some text here
    4.  
    Перевод строки прокатит только в двойных. Так-то.
    Также в двойных можно писать массивы в фигурных скобках.
    Код (PHP):
    1. "text {$array['alala']} text"; 
    Массивы.

    В пхп есть ассоциативные массивы. Это значит что ключом в массиве может быть строка. Члены массива могут быть любого типа, и массивом в том числе. Это удобно. Массивы можно сортировать не только по значению, но и по ключу. Из ассоциативного массива можно выковырять член из середины, ничего не перекосится.
    Создаётся массив так $a = [];
    Новый член добавляется так $a[] = 'value';
    Наличие такого члена проверяется через isset($a['key']);

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

    Далее.

    Пхп это скриптовый язык. И он медленный, хотя и очень быстрый для скриптового. Поэтому основной упор надо делать на фунции и методы пхп, которые компилированы, и работают быстро. Т.е. для начала работы с пхп надо идти и читать доку. Дока на сайте http://php.%6eet имеет много каментов внизу, и там всегда обсосаны стандартные случаи применения и проблемы с этим связанные. Читай каменты.

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

    Когда освоишь функции, то можно переходить к фреймворкам. Функций надо выучить штук двести для начала. Остальные можно поглядывать, но основные надо знать и пользоваться ими. На собеседовании например могут попросить написать как парсить ini-файл в массив. А это делается одной строкой через вызов функции parse_ini_file(), а не через циклы всякие.

    В пхп простая работа с json, т.к. нет четкой типизации, то json легко парсится в массив, в котором некоторые члены - значения, а некоторые - опять массивы, и по нему можно шариться через форыч.

    Если будут вопросы - ты спрашивай на форуме.
     
  3. grmotild

    grmotild Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    3
    Симпатии:
    0
    Я ценю ваши знания, но я ищу человека который мне сэкономит время
    Спасибо, Игорь
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    да как бы там больше ничего и нет. Остались только классы, которые не совсем классы, и неймспейсы. Но там всё просто.
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А как вы товарищ до этого выучились на программиста?

    Добавлено спустя 2 минуты 7 секунд:
    Ты так весь народ распугаешь))) Сомнительная цифра...
     
  6. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Он тебе уже его дико сэкономил. Правда. Пых простой как два пальца.
     
  7. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    Игорь, удивил, обычно не больше 5-10 строк по PHP. Браво!.
    grmotild, в скайпе тебя никто программировать не научит. Тебе такой окуительный старт дали, теперь осталось взять какую-нибудь книжку и начать заниматься.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    игорь ароши! =)
     
  9. grmotild

    grmotild Новичок

    С нами с:
    5 фев 2015
    Сообщения:
    3
    Симпатии:
    0
    игорь добрый день можно Вам задать вопрос через mail? moy grmotild@gmail.com