Курс в Telerik Academy – лекция 4

В тази лекция пишем домашното от предишната, говорим си за файлове, пътища, релативни пътища, качване на файлове от потребителя, хедъри и сесии.
Извинявам се за качеството, не знам какво точно се е объркало (или е объркал)….

20 мнения по „Курс в Telerik Academy – лекция 4

  1. jazzman

    Всъщност има начин да се заобиколи директивата в PHP.INI за максималната дължина на байнъри файла и решението е много елегантно и силно го препоръчвам.
    Чрез JS се пращат файлове през AJAX и с fopen и chunk функциите в php, файла се накъсва, праща се, и се записва на парчета в/у сървъра.
    По този начин успях да upload-na 200МБ зип файл при рестрикция от goDaddy от 25МБ. Има готови JS библиотеки за тази цел, аз ползвам plUpload, има релийзната версия(free) под GPLv2 license.

    Относно директориите и абсолютните пътища, искам да кажа, че има също абсолютен път спрямо апликейшъна който се ползва. Дали това ще е apache, samba server, ftp server, mail server и т.н..той винаги започва с „/“ символ (говоря за UNIX, windows не ме вълнува). Никога, не ползвайте абсолютен път водещ до някоя директория от физическият сървър (ако е ваш собствен), ако все пак ви се налага php да манипулира нещо там, първото нещо което трябва да направите е да се възползвате от силата на UNIX машините за задаване права в/у директориите и файловете. Това всъщност е много прост метод и е в основата на всяка една защита. По този начин, дори да съумеем да заобиколим проверките по файла зададени от програмиста и да се изпълним някакъв скрипт подправен в някакъв image file да речем (много често срещано), malicious кода се разпростре в рамките на този фолдър.

    Относно секюритито, никога не ползвайте глобалните променливи в чистата им форма нито в PHP, нито в JS, дори бях уведомен преди няколко дни, че е имало атака в/у сайтове писани под PHP за подправяне на GLOBAL променливите.

    ПП: Иване, надявам се нямаш против да пиша често тук 🙂

  2. jazzman

    Само да допълня, че чънкването(накъсването) на файловте и пращането им през AJAX заявки към сървъра се поддържа от всички съвременни браузъри, дори направих тест с IE8 и беше паснат. (за по ниските негови версии не съм сигурен)

  3. niki

    Лекциите са много полезни и стила на преподаване ми допада. Точоно така се учи език – много точно са подбрани темите и последоватлонстта на преподаването.
    Аз от много време не съм писал код (навремето пишехме на C и после на C++ под ДОС, след това излезе Delphi 1.0 за Windows 3.1), дори нямам никакъв опит с WEB, но реших да се запиша онлайн.
    Домашните не са трудни, а по-скоро са продължение на лекцията. Проблемът при мен е, че свободното ми време е след 22ч. вечер 🙂
    Снощи доста време загубих докато установя, че със XAMPP под Windows и браузър Firefox „DIRECTORY_SEPARATOR“ се разпознава като „\“ и пътя към файловете се обърква. С IE и Хром нямаше проблем. Тогава се сетих за препоръката от лекцията – под Windows да указваме пътя с „/“ – проблемът се оправи 🙂

    За лекция 4 ми направи впечатление, че компютърът е с Windows 8 прясно инсталиран, без да са оправени регионалните настройки. За по-малкото „екранче“ може би е поблемът в някой драйвер свързан с видеото или бог знае какво ново ни предлага 8-цата, която къто цяло работи стабилно и по-бързо.
    Качеството в YouTube ръчно го правех на 720p HD и се виждаше много ясно и много добре.

    Успех на всички участници в курса, както и на лектора разбира се!

  4. jazzman

    Силно препоръчвам на всички, които тепърва започват да се занимават с програмиране да се запознаят на основно ниво какво е UNIX и по-специално GNU/Linux. Запознавайки се с него, вие интуитивно ще добиете една добра обща култура за компютрите и ще разберете, че освен мишка има и клавиатура, както и неща тъй важни на ниво сървър, които пък от друга страна ще ви помогнат в програмирането за в бъдеще.

  5. jazzman

    Относно ъплоадването на файловете през HTML form-а, има 4 директиви в PHP.INI file, които се грижат за това и трябва да бъдат проверени:

    1. file_uploads = On // разрешава се ъплоада на файлове през HTML форма

    2. upload_max_filesize = 2M // посочва се максималната дължина на байнари файла, който се ще ъплоадва към сървъра в мегабайти

    3. max_file_uploads = 20 // максималният брой файлове разрешени при единично събмитване на формата

    4. post_max_size = 8M // максималната големина пост заявката към сървъра в мегабайти

    ПП: upload_max_filesize трябва да е с по-малка стойност от post_max_size, щото ако е с по-голяма няма как да сработи дори тази директива да го разрешава. Синтаксиса трябва да се спазва също, не може да завършва примерно на 2MB вместо 2М. Това съм го тествал преди с по стари версии на php, може и да са го променили.

  6. Фьт Дхюс

    Голям паразит е тази дума: форма. Не казвам, че и аз не съм правил тази грешка. Правил съм я и аз много пъти. Ама все пак се старая да не греша съвсем често и да си използвам правилният термин: формуляр.

  7. jazzman

    Хе-хе, ти шъ ма умориш с твойте термини: формуляри, водачи и кво ли не още..
    Ама, да не спамим темата, ако имаш нещо да допълниш по тази лекция, давай 😉

  8. Фьт Дхюс

    Той сам си го допълни в следващото видео. Думата форма в българският език има ясно значение и то не е формуляр. Грешката е разбираема, но недопустима.

  9. Фьт Дхюс

    Грешка е да спориш с шефа, риташ си трудовата книжка. Аз и тази безобразна ОС не използвам.

  10. Stilgar

    Обяснете ми пак каква грешка съм допуснал като ползвам IE. Много обичам като ми обясняват 🙂

  11. thedem

    Ами разбира се, че е грешка да се ползва IE, но това не значи, че трябва да се отнема садо-мазохистичното удоволствие на хората които го ползват 🙂 !

  12. jazzman

    Ами разбира се, че е грешка да се ползва IE, но това не значи, че трябва да се отнема садо-мазохистичното удоволствие на хората които го ползват 🙂 !

    Що да е грешно??? За гледане на порно е просто супер, всичко зависи от нуждите 😉

  13. BatMit

    На няколко места в лекцията се обяснява как можем да променяме сетингите в php.ini за да направим това или онова. Ако поддържаме сайт на чужд хостинг, ще ни даде ли някой да пипаме php.ini?

  14. gatakka Автор

    Зависи от хостинга, голяма част от нещата могат да се сменят използвайки .htaccess директива.

  15. thedem

    Повечето имат овъррайд на настройките за всеки сайт, на суперхостингбг има за php.ini , php-fcgi.ini , php5.fcgi , май можеше и за всяка директория по отделно да се правят настройки.

  16. ivo

    Каква е причината да не ми работи if($_POST) проврката?
    Без него е ок, с него-нищо…На wamp съм.
    Пример:

    Snimka:

    Logout

    <?php

    if(!file_exists('upload'.DIRECTORY_SEPARATOR.$_FILES['snimka']['name']))
    {
    if($_FILES['snimka']['error']!=0)
    {
    echo 'ne e kopiran!'.'’;
    exit();
    }
    move_uploaded_file($_FILES[‘snimka’][‘tmp_name’], ‘upload’.DIRECTORY_SEPARATOR.$_FILES[‘snimka’][‘name’]);
    echo ‘Kopiran fail:’;
    print_r($_FILES[‘snimka’][‘name’]);

    }
    else
    {
    echo ‘Failut sushtestvuva!’.“;

    }

    $s=scandir(‘upload’);
    echo “;
    foreach ($s as $val)
    {
    echo ‘‘.$val.’‘.“;
    }
    echo “;
    ?>

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *