Какое расширение должны иметь файлы скриптов на PHP?
Скрипты на PHP должны иметь расширение *.php
Проблема с кодировкой при занесении данных в базу MySQL
При занесении текстовых данных, содержащих символы кирилицы, в базу данных MySQL с помощью PHP-скрипта, желательно указать в скрипте, в какой кодировке данные должны сохраняться в базу данных. Такое указание осуществляется с помощью SQL-запроса:
SET NAMES кодировка
Кодировку необходимо указывать ту же, что используется в самой базе данных для хранения текста. Для того чтобы быть уверенным в том, какая именно кодировка используется в БД для хранения текста, желательно явно указывать эту кодировку при создании таблиц, в противном случае будет использована кодировка по умолчанию, установленная в настройках базы данных MySQL. Явное указание кодировки, в которой хранятся данные в таблице, осуществляется в момент создания таблицы с помощью SQL-запроса:
CREATE TABLE имяТаблицы (список полей) CHARACTER SET кодировка;
Обычно для хранения символов кирилицы (символов русского языка) используют кодировку UTF-8 (обозначается в MySQL как utf8) или windows-1251 (обозначаемое как cp1251).
Таким образом, для создания таблицы хранящей текст в кодировке UTF-8 надо использовать SQL-запрос:
CREATE TABLE имяТаблицы (список полей) CHARACTER SET utf8;
Для того, чтобы при соединении с БД MySQL из PHP-скрипта использовалась необходимая кодировка, сразу после установления соединения с базой необходимо отправить запрос с указанием какая именно кодировка будет использоваться при занесении/извлечении данных. Пример подобных действий для соединения с БД в которой данные хранятся в кодировке UTF-8 приведен ниже:
mysql_connect('localhost', 'логин', 'пароль');
mysql_select_db('имяБД');
mysql_query('SET NAMES utf8');
Почему функции работы со строками не работают с «русскими буквами»?
При обработке текстов, содержащих символы кирилицы («русские буквы»), с помощью функций: strToLower(), strToUpper(), preg_match() и т. п. в некоторых случаях может наблюдаться некорректная работа указанных функций. Собственно проблема возникает тогда, когда кодировка сайта отличается от кодировки, используемой PHP-интерпретатором по умолчанию.
На сегодняшний день наиболее популярной кодировкой является кодировка UTF-8, позволяющая в одном документе использовать символы различных языков, например сочетать символы кирилицы и греческие символы на одной странице. Однако для «старых» русскоязычных сайтов характерно использование кодировки windows-1251 (CP1251). В тех случаях когда сайт с кодировкой CP1251 запускается на web-сервере, использующем по умолчанию кодировку UTF-8, а вместе с web-сервером эту же кодировку по умолчанию будет использовать и PHP-интерпретатор, наблюдается некорректная работа некоторых функций PHP, используемых для обработки текста.
Решением возникающей проблемы является явное указание настроек локализации, в частности кодировок, которые должен использовать PHP-интерпретатор, которое производится с помощью функции setLocale().
Ниже приводится пример использования этой функции:
setLocale(LC_ALL, 'ru_RU.CP1251');
...
$text=strToUpper('Привет');
echo($text);
Почему мой скрипт не может создать файл или папку?
Для создания файлов или папок с помощью PHP-скриптов необходимо чтобы папка, в которой производится создание поддиректории или файла, имела необходимые права доступа.
Права, которые должна иметь папка в которой создаются поддиректории или файлы, должны разрешать чтение, запись и выполнение для группы.
Таким образом минимально необходимые права на папку, в которой ведется работа с файлами или директориями, должны выглядеть как 770 (rwx rwx ---), но обычно можно установить более «мягкие» права: 775 (rwx rwx r-x).
Установить необходимые права можно с помощью FTP-клиента (например FAR Manager) или через контрольную панель к Вашему сайту: cp.brim.ru.
В случае отсутствия необходимых прав на папку, в которой ведется работа с файлами или поддиректориями, возникает ошибка вида: «Permission denied in ...»
Как удалить файл или папку созданную PHP-скриптом?
При попытке удалить через FTP-клиент файл или папку, созданную с помощью PHP-скрипта, могут возникнуть затруднения.
Причиной проблем при удалении файлов или папок созданных скриптами обычно является отсутствие необходимых прав на это действие.
В таких случаях Вы всегда можете воспользоваться контрольной панелью cp.brim.ru для осуществления удаления программно созданных файлов и папок.
Чтобы файл или папка созданные PHP-скриптами удалялась с помощью FTP-клиента, скрипт, создающий такую папку или файл, должен был после создания дать права записи для группы на эту папку или файл.
Пример кода для создания папки с именем «testdir» в той директории где находится скрипт (у этой директории уже должны быть права 770 или 775):
$d='./testdir';
mkdir($d);
chmod($d, 0770);
Аналогично, если планируется удалять программно созданные файлы через FTP-клиент, необходимо программно назначать таким файлам права записи для группы (660 или 664):
$name='./testdir/myfile.txt';
$f=fopen($name,'a');
fwrite($f,'test message');
fclose($f);
chmod($name, 0660);
В документации по PHP можно найти более подробную информацию о работе функции chmod()
Любые материалы с данного сайта не могут быть использованы без разрешения владельцев ресурса.
Можно ли включить register_globals?
По умолчанию настройка register_globals находится в состоянии Off для всех сайтов, но по запросу в службу технической поддержки, данная настройка может быть изменена на On для указанного сайта.
При использовании в своих скриптах глобальных переменных следует учитывать, что безопасность сайта потенциально снижается, и при неаккуратном написании скриптов у злоумышленника появляется возможность выполнить несанкционированные действия, используя уязвимости в коде скриптов.
В документации по PHP можно найти более подробную информацию о проблемах безопасности, связанных с настройкой register_globals.
|