Codeigniter установка и настройка
Содержание:
Model¶
The only thing that remains is writing a method that writes the data to
the database. You’ll use the Query Builder class to insert the
information and use the input library to get the posted data. Open up
the model created earlier and add the following:
public function set_news() { $this->load->helper('url'); $slug = url_title($this->input->post('title'), 'dash', TRUE); $data = array( 'title' => $this->input->post('title'), 'slug' => $slug, 'text' => $this->input->post('text') ); return $this->db->insert('news', $data); }
This new method takes care of inserting the news item into the database.
The third line contains a new function, url_title(). This function —
provided by the URL helper — strips down
the string you pass it, replacing all spaces by dashes (-) and makes
sure everything is in lowercase characters. This leaves you with a nice
slug, perfect for creating URIs.
Libraries
- CI-Breadcrumb — Breadcrumb library for CodeIgniter 3.x.x with demo
- SmartGrid for CodeIgniter — Simple datagrid control for CodeIgniter framework with Bootstrap.
- Biostall Google Map API — Google Map API.
- CodeIgniter Recaptcha — CodeIgniter library to work with reCAPTCHA.
- Ion Auth 2 — Simple and Lightweight Auth System.
- Tank-Auth — Authentication library.
- CodeIgniter Redis — A CodeIgniter library to interact with Redis.
- Memcached Library for CodeIgniter — Library to Interface with the Memcached system.
- CodeIgniter-Cache — CodeIgniter-Cache is a partial caching library for CodeIgniter.
- CodeIgniter PHPMailer — A CodeIgniter compatible email-library powered by PHPMailer.
- CodeIgniter-CLI — Work with CodeIgniter over the command line.
- Craftsman-CLI — CLI for CodeIgniter 3.0 using Symfony Console component.
- CodeIgniter Bootstrap — Bundles packages CI, REST, Twitter Bootstrap, FA, lodash.
- Codeigniter-breadcrumbs — Small breadcrumb library for CodeIgniter.
- CodeIgniter-Breadcrumb — Breadcrumb generating library for CodeIgniter.
- Sitemaps CodeIgniter — A simple library to autogenerate xml sitemaps.
- CodeIgniter-Unzip — Extract ZIP files in CodeIgniter without installing any PECL.
- Forensics CodeIgniter — A high-powered, customizable Profiler replacement.
- CodeIgniter-Postmark — A Postmark (postmarkapp.com) library for CodeIgniter.
- CodeIgniter Schema — Expressive table definitions.
- CodeIgniter-Aauth — Authorization, authentication and User Management library.
- CI-FIle-Browser-Awesome — Simple plugin file browser for CodeIgniter with jQuery.
- CodeIgniter Minify — Minify css and js files in CodeIgniter.
- CodeIgniter — minify — Minify library CSS and JavaScript compression on the fly.
- codeigniter-alert — An easy flashdata alert for CodeIgniter.
- Bcrypt CodeIgniter — Adaption of PHPPass for use as a CodeIgniter Bcrypt library.
- — Facebook login working with ion_auth.
- CodeIgniter Multi-Upload — Multiple file upload support for CodeIgniter 2.x.
- elasticsearch-codeigniter-library — A small library to make search queries.
- Ignited Datatables — a wrapper class/library based on the native Datatables.
- codeigniter-datatables — PHP CodeIgniter server-side for jQuery DataTables.
- CodeIgniter Geolocation — Library allows you to locate an IP Address.
- CodeIgniter-reCAPTCHA — reCAPTCHA library for CodeIgniter.
- CodeIgniter-Instagram-API — CodeIgniter library to interact with the Instagram API.
- Refinery — «Ready-to-eat» migrations for CodeIgniter.
- Spark Plug — Another way to access CodeIgniter’s instance.
- CodeIgniter-blockchain — Library to use the Blockchain Wallet API
- CodeIgniter-recaptcha — Library to implement Google reCAPTCHA V2
Водяные знаки
Наложение водяных знаков требует GD/GD2 библиотеку.
Существует два типа водяных знаков, которые можно использовать:
- ТЕКСТ: Водяной знак будет создаваться с помощью текста, указанным Вами шрифтом «True Type» или через родной текстовый вывод библиотеки GD. При использовании True Type, версия GD должна быть совместима с используемой True Type (в большинстве случаев).
- НАЛОЖЕНИЕ: Водяной знак будет создаваться путем наложения изоюражения (обычно прозрачный PNG или GIF) содержащий водяной знак.
Так же как и другие методы (изменение размера, обрезка и вращение) общий процесс для создания водяных знаков подразумевает установку предпочтений действию, которое вы намерены выполнить, вызовая функцию создания водяных знаков. Вот пример:
$config'source_image' = '/path/to/image/mypic.jpg'; $config'wm_text' = 'Copyright 2006 - John Doe'; $config'wm_type' = 'text'; $config'wm_font_path' = './system/fonts/texb.ttf'; $config'wm_font_size' = '16'; $config'wm_font_color' = 'ffffff'; $config'wm_vrt_alignment' = 'bottom'; $config'wm_hor_alignment' = 'center'; $config'wm_padding' = '20'; $this->image_lib->initialize($config); $this->image_lib->watermark();
Приведенный выше пример будет использовать 16 пиксельный шрифт True Type, чтобы создать текст “Copyright 2006 — John Doe”. Водяной знак будет располагаться внизу по центру изображения, с отступом в 20 пикселов от нижней части изображения.
Примечание
Для того чтобы класс изображений мог делать любые обработки, файл изображения должен иметь права на “запись” — 777 (например).
Что такое модель?
Модели — это PHP классы, которые предназначены для работы с информацией в вашей базе данных. Например, предположим, что вы используете CodeIgniter для управления блогом. У вас может быть класс модели, который содержит функции для вставки, обновления и извлечения данных вашего блога. Вот пример того, как может выглядеть подобная модель класса:
class Blog_model extends CI_Model { public $title; public $content; public $date; public function __construct() { // Call the CI_Model constructor parent::__construct(); } public function get_last_ten_entries() { $query = $this->db->get('entries', 10); return $query->result(); } public function insert_entry() { $this->title = $_POST'title']; // please read the below note $this->content = $_POST'content']; $this->date = time(); $this->db->insert('entries', $this); } public function update_entry() { $this->title = $_POST'title']; $this->content = $_POST'content']; $this->date = time(); $this->db->update('entries', $this, array('id' => $_POST'id'])); } }
Примечание
Способы, описанные в приведенном выше примере используют Квери билдер (конструктор запросов) базы данных методов.
Complex
- Faster Development of CodeIgniter Apps — Jumpstart your CodeIgniter web applications.
- Sprint PHP — A lightweight, modern addition to CodeIgniter 3. The heart of Bonfire Next.
- Ignition-Go Codeigniter Modular App Building Framework and App starter — build enterprise class web applications
- ErtikazOS A complete platform for building web applications.
- CodeIgniter Skeleton — Yet another CodeIgniter Skeleton with ready-to-use dashboard, database, hooks system, plugins, themes and lots of other features.
- Luthier CI — Improved routing, middleware support, authentication tools and more for CodeIgniter 3 framework
- Rimbun Codeigniter Starter — A Complete platform for building web application from Indonesia Programmer. Built with Codeigniter 3
Создание циклов
Данные передаваемые массивом в файл вида не ограничиваются простыми переменными. Вы можете передавать многомерные массивы, которые могут быть обработаны циклом, чтобы создать несколько строк. Например, если вы вытягиваете данные из базы данных, то это обычно будет в виде многомерного массива.
Вот простой пример. Добавьте это в контроллер:
<?php class Blog extends CI_Controller { public function index() { $data'todo_list' = array('Clean House', 'Call Mom', 'Run Errands'); $data'title' = "My Real Title"; $data'heading' = "My Real Heading"; $this->load->view('blogview', $data); } }
Теперь откройте файл вида и создайте цикл:
<html> <head> <title><?php echo $title;?></title> </head> <body> <h1><?php echo $heading;?></h1> <h3>My Todo List</h3> <ul> <?php foreach ($todo_list as $item):?> <li><?php echo $item;?></li> <?php endforeach;?> </ul> </body> </html>
Формат файла
Файл должен быть сохранен в кодировке Unicode (UTF-8). BOM использовать НЕ следует. В отличии от UTF-16 и UTF-32, нет порядка обозначения байтов в файле с UTF-8 кодировкой, и BOM может иметь отрицательный эффект в PHP при отправе выхода, предотвращая возможность установки собственных заголовков. Следует использовать Unix окончания строк (LF).
Вот как применить эти настройки в некоторых из наиболее распространенных текстовых редакторах. Инструкция вашего редактора может отличаться; проверьте документацию вашего текстого редактора.
- Откройте настройки приложения (Application Preferences)
- Нажмите кнопку дополнительно (Advanced), а затем вкладку “Сохранить” (“Save”)
- В “Кодировка файла” (“File Encoding”), выберите “UTF-8 (рекомендуется)” (“UTF-8 (recommended)”)
- В “Окончания строк” (“Line Endings”), выберите “LF (рекомендуется)” (“LF (recommended)”)
- Опционально: отметьте “Использовать для существующих файлов” если вы хотите изменять окончания строк в открытых файлах для новых предпочтений.
Справочник
Как и большинство других классов CodeIgniter, класс загрузки инициализируется в контроллере с помощью $this->load->library() метода:
$this->load->library('upload');
Как только класс загрузки загружен(подключен), объект будет доступен через: $this->upload
Как и в других библиотеках, вы можете контролировать то, что разрешено загружать на основе ваших установок. В контроллере, указанном выше установите следующие настройки:
$config'upload_path' = './uploads/'; $config'allowed_types' = 'gif|jpg|png'; $config'max_size' = '100'; $config'max_width' = '1024'; $config'max_height' = '768'; $this->load->library('upload', $config); // Альтернативно, вы можете установить настройки вызывая ``initialize()`` метод. Полезно, если класс загружен автозагрузкой: $this->upload->initialize($config);
Вышеуказанные настройки очевидны. Ниже приведена таблица с описанием всех существующих настроек.
Доступны следующие настройки. Значение по умолчанию указывает, что будет использоваться, если не указан параметр настройки.
Настройка | Значение по умолчанию | Варианты | Описание |
---|---|---|---|
upload_path | Нет | Нет | Путь к директории, где должны быть размещены файлы загрузки. Директория должна быть доступна для записи и путь может быть абсолютным или относительным. |
allowed_types | Нет | Нет | MIME типы, соответствующие типам файлов, разрешенные для загрузки. Обычно расширение файла может быть использован в качестве типа MIME. Может быть либо массив либо строка, разделенная пробелом. |
file_name | Нет | Желаемое имя файла | Если установлена CodeIgniter будет переименовать загруженный файл в это имя. Расширения, устанавлеваемые в имени файла также должно быть разрешенного типа. Если нет расширения, устанавливается оригинальное file_name. |
file_ext_tolower | FALSE | TRUE/FALSE (булево) | Если значение TRUE, расширение файла будет в нижнем регистре |
overwrite | FALSE | TRUE/FALSE (boolean) | Если значение TRUE, то файл с таким же именем будет перезаписан. Если задано значение FALSE, то к имени файла будет добавляться число, если файл с таким же именем существует. |
max_size | Нет | Максимальный размер (в килобайтах) файла для загрузки. Значение ноль — без ограничений. Примечание: большинство PHP установок имеют свои собственные ограничения, как указано в php.ini файле. Обычно 2 MB (или 2048 KB) по умолчанию. | |
max_width | Нет | Максимальная ширина (в пикселях) изображения. Значение ноль — без ограничений. | |
max_height | Нет | Максимальная высота (в пикселях) изображения. Значение ноль — без ограничений. | |
min_width | Нет | Минимальная ширина (в пикселях) изображения. Значение ноль — без ограничений. | |
min_height | Нет | Минимальная высота (в пикселях) изображения. Значение ноль — без ограничений. | |
max_filename | Нет | Максимальная длина имени файла. Значение ноль — без ограничений. | |
max_filename_increment | 100 | Нет | Если параметр overwrite имеет значение FALSE, используйте это значение для установки максимального значения инкремента для добавления к имени файла. |
encrypt_name | FALSE | TRUE/FALSE (булево) | Если значение TRUE имя файла будет преобразовано в случайную зашифрованную строку. Это может быть полезно, если вы хотите сохранить файл с именем, которое не может понять человек. |
remove_spaces | TRUE | TRUE/FALSE (булево) | Если значение TRUE, все пробелы в имени файла будут преобразованы в подчеркивания. Рекомендуется. |
detect_mime | TRUE | TRUE/FALSE (булево) | Если значение TRUE, на сервере будут обнаруживаться типы файлов, во избежания атак путем внедрения кода. НЕ ОТКЛЮЧАЙТЕ эту опцию, если у вас нет другого выбора. Вызывает риск для безопасности. |
mod_mime_fix | TRUE | TRUE/FALSE (булево) | Если значение TRUE, будет присоединено несколько расширений файла с символа подчеркивания во избежание срабатывания (выполнения). НЕ ОТКЛЮЧАЙТЕ эту опцию, если у вас нет другого выбора. Вызывает риск для безопасности. |
Распределение вызовов Методов
Как уже было отмечено выше, второй сегмент URI обычно определяет какой метод в контроллере будет вызван. CodeIgniter позволяет отменить это поведение используя _remap() метод:
public function _remap() { // Some code here... }
Важно
Если контроллер содержит метод _remap(), он всегда будет вызван независимо от того что содержит URI. Он отменяет нормальное поведение URI, где определено какой метод вызвать, давая возможность назначить свои правила маршрутизации.
Вызов отмененного метода (обычно второй сегмент URI) будет передан как параметр в _remap() метод:
public function _remap($method) { if ($method === 'some_method') { $this->$method(); } else { $this->default_method(); } }
Любой дополнительный сегмент после названия метода передается в _remap() как дополнительный второй параметр. Этот массив может быть использован в комбинации с PHP функцией call_user_func_array() для эмитации стандартного поведения CodeIgniter.
Example:
Templates
- Twiggy — Template engine implementation for CodeIgniter.
- CodeIgniter-Template — Template library for CodeIgniter.
- CodeIgniter Template Library — A template library for CodeIgniter.
- MY_Controller — Simple template engine and many convenience features.
- Assets — Simple assets manager supports LESS, SASS, CoffeeScript.
- Attire — An implementation of Twig template engine and Sprockets-PHP asset manager framework for CodeIgniter 3.0x.
- CI-Blade — Laravel blade template engine for Codeigniter 3.0+!
- Codeigniter Template Engine
- Slice-Library — Slice-Library is a CodeIgniter library that simulates Laravel’s Blade templating system!
Процесс
Загрузка файла состоит из следующих основных процессов:
- Отображается форма загрузки, позволяя пользователю выбрать файл и загрузить его.
- При отправке формы, файл загружается в казанное вами место.
- По пути файл будет проверен, чтобы убедиться, может ли он быть загружен на основе выбранных вами настроек.
- После загрузки, пользователю будет показано сообщение об успешной загрузке.
Чтобы продемонстрировать этот процесс, сделеаем короткий учебник. После этого вы найдете справочную информацию.
Используя текстовый редактор создайте файл с формой с названием upload_form.php. В нем, разместите код указанный ниже и сохраните его в application/views/ папку:
<html> <head> <title>Upload Form</title> </head> <body> <?php echo $error;?> <?php echo form_open_multipart('upload/do_upload');?> <input type="file" name="userfile" size="20" /> <br /><br /> <input type="submit" value="upload" /> </form> </body> </html>
Вы заметили, что мы используем хелпер (помощник) форм для создания открывающего тега Form. Форма загрузки файлов требует «multipart», поэтому хелпер создает правильный синтаксис. Вы также заметили переменную $error. Таким образом, мы выводим сообщения об ошибках в случае, если пользователь делает что-то неправильно.
Используя текстовый редактор создайте файл с формой с названием upload_success.php. В нем, разместите код указанный ниже и сохраните его в application/views/ папку:
<html> <head> <title>Upload Form</title> </head> <body> <h3>Your file was successfully uploaded!</h3> <ul> <?php foreach ($upload_data as $item => $value):?> <li><?php echo $item;?>: <?php echo $value;?></li> <?php endforeach; ?> </ul> <p><?php echo anchor('upload', 'Upload Another File!'); ?></p> </body> </html>
Используя текстовый редактор создайте конроллер с названием Upload.php. В нем, разместите код указанный ниже и сохраните его в application/controllers/ папку:
<?php class Upload extends CI_Controller { public function __construct() { parent::__construct(); $this->load->helper(array('form', 'url')); } public function index() { $this->load->view('upload_form', array('error' => ' ' )); } public function do_upload() { $config'upload_path' = './uploads/'; $config'allowed_types' = 'gif|jpg|png'; $config'max_size' = 100; $config'max_width' = 1024; $config'max_height' = 768; $this->load->library('upload', $config); if ( ! $this->upload->do_upload('userfile')) { $error = array('error' => $this->upload->display_errors()); $this->load->view('upload_form', $error); } else { $data = array('upload_data' => $this->upload->data()); $this->load->view('upload_success', $data); } } } ?>
Вам понадобится папка для загруженных файлов. Создайте папку в корне, где находится CodeIgniter, и установите на нее права доступа (chmod) 777.
Third Party
- Codeigniterplus — Scaffolding for a good standard web application.
- CodeIgniter HMVC Modules — Create HMVC modules with this lightweight extension.
- codeigniter-phpunit — Hack to make CodeIgniter work with PHPUnit.
- CodeIgniter Installer — A starting point for building an installer on CodeIgniter.
- Developer Toolbar — Developer Toolbar is a third party library based on Profiler.
- CodeIgniter Bundle — CodeIgniter Bundle implements a Modular pattern (MMVC) into Codeigniter Framework.
- Codeigniter Global Installer — A Composer global command that installs the latest official CodeIgniter framework.
- Bash Igniter — Create Controllers, Models, routes, Views and Helpers using command line.
4 ответа
1
Лучший ответ
Если вы используете свой текущий сайт, вы можете не захотеть заменить index.php, пока ваш новый сайт не будет готов к работе. Если вы пытаетесь связать эти два вместе, я рекомендую полностью портировать ваш текущий сайт в CodeIgniter, если это вообще возможно.
В противном случае я рекомендую установить CodeIgniter в папку под корневым каталогом и изменить его конфигурационный файл, чтобы указать на него.
22 нояб. 2010, в 21:53
Поделиться
1
Другой способ сделать это — сначала через панель управления создать субдомен, такой как myci.yoursite.com, и выбрать папку для него как /var/www/myci (который обычно будет автоматически)
загрузить распакованные файлы codeigniter в /var/www/myci. если там создается какой-либо файл index.php по умолчанию, он обычно безопасно перезаписывать. если какой-либо файл index.html по умолчанию создан, вам может потребоваться удалить их. любой cgi-bin и т.д. могут быть безопасно оставлены нетронутыми.
вы можете увидеть свой сайт как http://myci.yoursite.com/
одна из первых вещей, которую вы должны сделать, это отредактировать вашу систему/приложение/config/config.php и исправить $config
23 нояб. 2010, в 23:58
Поделиться
Прежде всего создайте резервную копию всех существующих файлов в корневой папке, установите Codeigniter в соответствии с руководством, которое находится по адресу
.
Ваш файл index.php отличается по сравнению с файлом Codeigniter index.php, Codeigniter использует файл index.php в качестве файла конфигурации для установки необходимых путей и загрузки различных классов, включая Router, таким образом загружается страница приветствия по умолчанию что указывает на правильную установку Codeigniter.
Вы можете позже поместить папку и из своего общего каталога, изменяя настройки в файле Codeigniter index.php
14 март 2016, в 00:13
Поделиться
Обратите внимание, что страница индекса CI представляет собой страницу конфигурации, а не страницу приветствия. Ваша «настоящая» индексная страница НЕ является той индексной страницей, о которой вы думаете
Адрес вашего сайта должен быть таким
www.sitename.com/index.php/main
main — это просто имя контроллера, которое вызывает начальную страницу. (Я использую main, вы можете использовать любое имя, которое вы хотите)
если Main — ваш контроллер, который указывает на начальную страницу, m вы бы назвали первую функцию в главном контроллере «index»
Все просмотры страниц в CI вызываются контроллером, нет свободных плавающих страниц
24 нояб. 2010, в 00:00
Поделиться
Routing¶
Before you can start adding news items into your CodeIgniter application
you have to add an extra rule to config/routes.php file. Make sure your
file contains the following. This makes sure CodeIgniter sees ‘create’
as a method instead of a news item’s slug.
$route'news/create' = 'news/create'; $route'news/(:any)' = 'news/view/$1'; $route'news' = 'news'; $route'(:any)' = 'pages/view/$1'; $route'default_controller' = 'pages/view';
Now point your browser to your local development environment where you
installed CodeIgniter and add index.php/news/create to the URL.
Congratulations, you just created your first CodeIgniter application!
Add some news and check out the different pages you made.
Делаем запросы проще
$this->db->insert_string()
Эта функция упрощает процесс написания запроса вставки для базы данных. Он возвращает правильно отформатированную строку запроса SQL. Пример:
$data = array('name' => $name, 'email' => $email, 'url' => $url); $str = $this->db->insert_string('table_name', $data);
Первый параметр — имя таблицы, второй — ассоциативный массив с данными для вставки. Пример выше создает:
INSERT INTO table_name (name, email, url) VALUES ('Rick', 'rick@example.com', 'example.com')
Примечание
Значения экранируются автоматически, создавая безопасные запросы.
$this->db->update_string()
Эта функция упрощает процесс написания запроса обновления базы данных. Он возвращает правильно отформатированную строку обновления SQL. Пример:
$data = array('name' => $name, 'email' => $email, 'url' => $url); $where = "author_id = 1 AND status = 'active'"; $str = $this->db->update_string('table_name', $data, $where);
Первый параметр — имя таблицы, второй — ассоциативный массив с данными которые будут обновлены, и третий параметр — “where” условие. Пример выше создает:
UPDATE table_name SET name = 'Rick', email = 'rick@example.com', url = 'example.com' WHERE author_id = 1 AND status = 'active'
Web Services
- Codeigniter Rest — CodeIgniter 3 RESTful API Resource Base Controller
- CodeIgniter Rest Server — A fully RESTful server implementation for CodeIgniter.
- CodeIgniter-REST Client — A RESTful client CodeIgniter library.
- HybridIgniter — HybridAuth — CodeIgniter integration.
- Omnipay — A framework agnostic, multi-gateway payment processing library.
- Veritrans Codeigniter — Payment gateway library on Veritrans.
- Codeigniter TwitterOauth — CodeIgniter and TwitterOauth library integration.
- — Twitter API library for CodeIgniter.
- — Facebook Graph API, OpenGraph, and Connect.
- CodeIgniter-bitly — A CodeIgniter library for the bit.ly REST API.
Сравнение возвращаемого значения и приведение типов
Некоторые PHP функции возвращают FALSE в случае неудачи, но могут также возвращать значения “” или 0, которые будут возвращать FALSE в свободных сравнениях. Явно сравнивая тип переменной при использовании этих возвращаемых значений в условных операторах, гарантируют возвращаемое значение — это действительно то, что вы ожидаете, а не значение, которое имеет эквивалент свободного типа оценки.
Используйте обязательные требования в возвращаемом типе и проверяйте свои собственные переменные. Используйте === и !== при необходимости.
НЕПРАВИЛЬНО:
// If 'foo' is at the beginning of the string, strpos will return a 0, // resulting in this conditional evaluating as TRUE if (strpos($str, 'foo') == FALSE)
ПРАВИЛЬНО:
if (strpos($str, 'foo') === FALSE)
НЕПРАВИЛЬНО:
function build_string($str = "") { if ($str == "") // uh-oh! What if FALSE or the integer 0 is passed as an argument? { } }
ПРАВИЛЬНО:
function build_string($str = "") { if ($str === "") { } }
Добавление динамических данных в вид
Данные передаются из контроллера в вид в виде массива или объекта вторым параметром вида при его загрузке. Вот пример использования массива:
$data = array( 'title' => 'My Title', 'heading' => 'My Heading', 'message' => 'My Message' ); $this->load->view('blogview', $data);
А тут пример использования объекта:
$data = new Someclass(); $this->load->view('blogview', $data);
Примечание
Если Вы используете объект, класс переменных будет преобразован в элементы массива.
Давайте попробуем это на файле контроллера. Откройте его и добавьте:
<?php class Blog extends CI_Controller { public function index() { $data'title' = "My Real Title"; $data'heading' = "My Real Heading"; $this->load->view('blogview', $data); } }
Теперь откройте ваш файл вида и измените текст на переменные, которые соответствуют ключам массива данных:
<html> <head> <title><?php echo $title;?></title> </head> <body> <h1><?php echo $heading;?></h1> </body> </html>
PHP ошибки
Код должен выполняться без ошибок и не полагаться на предупреждения, уведомления должны быть скрыты, чтобы соответствовать этому требованию. Например, никогда не получайте доступ к переменной, которую вы не ставили себе (ключи массива $_POST) без проверки, чтобы увидеть что она isset() (задана).
Убедитесь, что ваша среда разработки имеет журнал отчетов об ошибках доступный для всех пользователей и что display_errors (отображение ошибок) доступно в среде PHP. Вы можете проверить этот параметр:
if (ini_get('display_errors') == 1) { exit "Enabled"; }
На некоторых серверах, где display_errors отключен, и у вас нет возможности изменить это в php.ini, вы также можете включить его так:
ini_set('display_errors', 1);