Використання PHP
У цьому розділі зібрано безліч спільних помилок, які можуть зустрітися при написанні PHP-скриптів.
- Я не можу запам'ятати порядок аргументів PHP-функцій, що вони, випадкові?
- Я хочу написати загальний PHP-скрипт, який може обробляти дані, що надходять з будь-якої форми. Як дізнатися які змінні методи POST доступні?
- Мені треба перетворити всі одиночні лапки (') у зворотний сліш з наступною одиночною лапкою (\'). Як я можу це зробити за допомогою регулярного вираження? Я також хотів би перетворити " на \"і \в\\
- Коли я роблю таке, висновок друкується не так:Що відбувається?
- Гей, що сталося з моїми рядками?
- Я отримую повідомлення 'Warning: Cannot send session cookie - headers already sent...' або 'Cannot add header information - headers already sent...'.
- Мені потрібний прямий доступ до інформації в заголовку запиту. Як я можу це зробити?
- Коли я намагаюся використати аутентифікацію з IIS, я отримую 'No Input file specified'.
- Windows: Я не маю доступу до файлів, що поділяються з іншим комп'ютером, за IIS.
- Як я повинен поєднувати XML та PHP? Він скаржиться на мої 12. Де я можу знайти повний перелік змінних, доступних мені в PHP?
- Як я можу генерувати PDF-файли без використання платних або комерційних бібліотек, як PDFLib? Я хотів би щось безкоштовне і не потребує зовнішніх бібліотек PDF.
- Декілька PHP директив можуть приймати скорочення для байтових значень на відміну від тільки int байтових значень. Якими є всі доступні скорочення?
Я не можу запам'ятати порядок аргументів PHP-функцій, що вони, випадкові?
PHP – це клей, який скріплює разом сотні різних зовнішніх бібліотек, тому іноді це здається досить заплутаним. Проте, загальне правило таке:
Параметри функцій роботи з масивами упорядковані у вигляді "голка (needle), сіно (haystack)", тоді як порядок у рядкових функціях зворотний, тобто аналогічний "сіно, голка".
Я хочу написати загальний PHP-скрипт, який може обробляти дані, що надходять з будь-якої форми. Як дізнатися які змінні методи POST доступні?
PHP предлагает множествозумовлених змінних, таких як суперглобальна $_POST. Ви можете пройтись по $_POST так як це асоціативний масив усіх значень, які з POST. Для прикладу, давайте просто пройдемося по них з foreach, перевіримо на порожні (empty()) значення та роздрукуємо.
Loading...
*Мені треба перетворити всі одиночні лапки (') у зворотний сліш з наступною одиночною лапкою (\'). Як я можу це зробити за допомогою регулярного вираження? Я також хотів би перетворити " на \"і \в\\*
Маючи на увазі, що ви хочете використовувати результат перетворення в роботі з базою даних, використовуйте відповідний механізм екранування, що йде з базою даних, що використовується. Наприклад, використовуйте mysql_real_escape_string() з MySQL та pg_escape_string() з PostgreSQL. Є також загальніші функції addslashes() і stripslashes()Вони часто зустрічаються в старому PHP-коді.
**Коли я роблю таке, висновок друкується не в тому порядку:
Loading...
Що відбувається?**
Для того, щоб використовувати результат вашої функції у виразі (такому як з'єднання з іншими рядками, як у наведеному вище прикладі), вам необхідно повернути значення за допомогою return, а не виводити його через echo
**Гей, що сталося з моїми рядками?
Loading...
**
У PHP блок коду завершується або з "?>", або з "?>\n" (де \n означає "новий рядок"). У наведеному вище прикладі пропозиції виведуться на одному рядку, так як PHP опускає символ нового рядка після завершення блоку. Це означає, що вам необхідно вставити додатковий символ нового рядка після кожного блоку PHP-коду, щоб виведення продовжувалося з нового рядка.
Чому PHP робить це? Тому що при форматуванні звичайного HTML це зазвичай спрощує ваше життя коли вам не потрібний цей новий рядок і вам не треба створювати неймовірно довгі рядки для того, щоб зробити вихідний сторінки читаним.
Я отримую повідомлення 'Warning: Cannot send session cookie - headers already sent...' або 'Cannot add header information - headers already sent...'.
Функциямheader() setcookie(), ифункцій сесії потрібно додати заголовки до вихідного потоку, але заголовки можуть бути надіслані лише перед іншим вмістом. Перед використанням цих функцій не можна нічого виводити, зокрема HTML. Функція headers_sent() перевірить, якщо ваш скрипт уже надіслав заголовки; також дивіться функції керування висновком
Мені потрібний прямий доступ до інформації в заголовку запиту. Як я можу це зробити?
Це робить функцію getallheaders()якщо ви запускаєте PHP як модуль Apache. Так, наступний шматок коду покаже вам усі заголовки запиту:
Loading...
Также смотритеapache_lookup_uri() apache_response_headers() і fsockopen()
Коли я намагаюся використати аутентифікацію з IIS, я отримую 'No Input file specified'.
Це нестача моделі безпеки IIS. Проблема загальна для всіх програм CGI, що виконуються під IIS. Щоб уникнути проблеми, створіть простий HTML файл (необроблений PHP) як вхідну сторінку в автентифікованій директорії. Потім використовуйте тег META для перенаправлення на PHP сторінку або помістіть посилання, що вказує на PHP сторінку. Після цього PHP розпізнає автентифікацію правильно. Це не повинно вплинути на інші веб-сервери NT. Для додаткової інформації дивіться: » http://support.microsoft.com/kb/q160422/и раздел руководстваHTTP Аутентифікація
Windows: Я не маю доступу до файлів, що поділяються з іншим комп'ютером, за IIS.
Вам необходимо сделать изменения. Идите вInternet Information Services
. Знайдіть ваш PHP файл і перейдіть до його властивостей. Ідіть у закладку File Security
Edit -> Anonymous access and authentication control
Ви можете виправити проблему або знявши позначку з Anonymous Access
і залишивши зазначеним Integrated Window Authentication
, либо отметивAnonymous Access
і відредагувати права користувача, оскільки він може мати рацію.
Як я повинен поєднувати XML та PHP? Він скаржиться на мої
**
Для того, щоб вбудувати . . За умовчанням ця директива включена (
On`).
Де я можу знайти повний перелік змінних, доступних мені в PHP?
Читайте страницу руководства позумовленим змінним, оскільки вона містить частковий список певних змінних, доступних вашому скрипту. Повний список доступних змінних (і безліч іншої інформації) можна побачити, викликавши функцію phpinfo()Не забудьте прочитать раздел руководства позмінним, що лежить поза PHP оскільки він описує загальні сценарії для зовнішніх змінних, таких як HTML форма, куки та URL.
Як я можу генерувати PDF-файли без використання платних або комерційних бібліотек, як PDFLib? Я хотів би щось безкоштовне і не потребує зовнішніх бібліотек PDF.
Є кілька альтернатив, написаних на PHP, таких як » FPDF і » TCPDF
Декілька PHP директив можуть приймати скорочення для байтових значень на відміну від тільки int байтових значень. Якими є всі доступні скорочення?
Доступні опції: K (для кілобайт), M (для мегабайт) та G (для гігабайт); вони реєстронезалежні. Все інше вважається байтами . 1M
равно одному мегабайту или1048576
байтам1K
равно одному килобайту или1024
байтам. Ці скорочення ви можете використовувати в php.ini та функції ini_set()Обратите внимание, что числовое значение приводится к типу int; наПриклад,0.5M
інтерпретується як
Зауваження кілобайт та кібібайт
У нотації PHP один кілобайт дорівнює 1024 байтам, тоді як стандарт IEC вважає це за кібібайт. У результаті: k і K = 1024 байти.
**