Сегодня я подведу итог головной боли новичков в PHP. 14 вопросов, поднятых ниже, надеюсь, окажутся полезными для новичков в PHP.
1. Переменные
get, post и session не могут быть перенесены между страницами. В последней версии PHP автоматические глобальные переменные отключены, поэтому, чтобы получить отправленные переменные с предыдущей страницы, используйте $_GET['foo'], $_POST. [ 'foo'],$_SESSION['foo'] чтобы получить. Конечно, вы также можете изменить автоматические глобальные переменные, чтобы они были включены (php.ini изменен на Register_globals = On); учитывая совместимость, лучше заставить себя ознакомиться с новым методом записи.
2. Когда apache2 использует метод get для передачи китайских параметров в Win32, возникает ошибка
Test.php?a=Hello&b=Hello.
Передача параметров приведет к внутренней ошибке
. Решение: "test.php?a=".urlencode. (Привет)."&b=".urlencode (пожалуйста)
...
3. Сеанс под win32 работает неправильно.
По умолчанию в php.ini используется session.save_path = /tmp.
Это, очевидно, конфигурация под Linux. под win32 Невозможно прочитать и записать файл сеанса, что делает сеанс непригодным для использования
. Просто измените его на абсолютный путь, например, session.save_path = c:windowstemp
4. Отобразите информацию об ошибке,
когда display_errors = On и. error_reporting = E_ALL в php.ini. Будут отображаться все ошибки и подсказки. Лучше всего включить его во время отладки для исправления ошибок. Если вы используете предыдущий метод написания PHP, большинство сообщений об ошибках будут касаться неопределенных переменных. При вызове переменной до того, как ей будет присвоено значение, появится подсказка. Решение состоит в том, чтобы обнаружить или защитить ее.
Например, чтобы отобразить $foo, вы можете if(isset($foo)) echo $foo или echo @$foo
5. Mail() не может отправлять электронные письма под Win32
. Sendmail, настроенный под Linux, может отправлять сообщения под Win32. вызовите smtp-сервер. Чтобы отправлять электронные письма, измените SMTP php.ini = ip //ip — это SMTP-сервер без функции проверки (трудно найти в Интернете). Лучшее решение для отправки электронных писем в PHP — использовать сокет для. отправлять непосредственно на почтовый сервер другой стороны вместо сервера пересылки.
6. Если пароль не установлен для первоначальной установки mysql, вам следует использовать
обновление mysql.user set pass="yourpassword" где user="root"
для изменения пароля
. 7.
Уже отправленный заголовок ошибки обычно возникает, когда вы. использовать ЗАГОЛОВОК. Он может. Есть несколько причин: 1. Вы ПЕЧАТАЕТЕ или ЭХО перед использованием ЗАГОЛОВКА. 2. Перед текущим файлом есть пустая строка. 3. Возможно, вы ВКЛЮЧИЛИ файл, и в конце есть пустая строка. файл, иначе эта ошибка возникнет на выходе.
8. Если после изменения php.ini изменений не произошло,
перезапустите веб-сервер, например IIS, Apache и т. д., после чего будут применены последние настройки.
9. PHP установлен на 2003 (метод установки ISAPI). эксперты запросили совет).
php4isapi.dll PHP4, похоже, имеет некоторый конфликт с 2003, и его можно установить только в режиме CGI:
Шаг 1, сначала загрузите программу установки с сайта www.php.net , я установил. : php-4.2.3-installer.exe, вы также можете найти последнюю версию. Перед установкой php-4.2.3-installer.exe убедитесь, что ваш IIS6.0 запущен и доступен. После установки перейдите на веб-сайт по умолчанию -> Конфигурация приложения.
Шаг 2. Нажмите «Расширение веб-службы» -> «Новое расширение веб-службы».
Шаг 3. Расширение -> php, а затем добавьте.
Шаг 4. Найдите php.exe. путь;
Шаг 5. Просто подтвердите.
Шаг 6. Выберите расширение службы PHP и нажмите «Разрешить».
10. Иногда оператор sql не работает.
Самый простой способ отладить сбой в работе базы данных — повторить предложение sql и посмотреть, можно ли получить значение переменной.
11. Разница между include и require.
Между ними нет большой разницы. Если файл, который нужно включить, не существует, include выдает уведомление, а затем продолжает выполнять следующий оператор require, выдает фатальную ошибку и завершает работу. по моему тестированию, они оба работают на платформе win32. Сначала они включаются, а затем выполняются, поэтому лучше не включать операторы include или require во включенные файлы, что приведет к путанице в каталогах. Возможно, в *nux ситуация другая.
Если файл не хочет включаться несколько раз, вы можете использовать include_once или require_once## для чтения и записи данных документа:
функция г($имя_файла) {
$filenum=@fopen($file_name,"r ");
@flock($filenum,LOCK_SH);
$file_data=@fread($filenum,filesize($file_name ));
@fclose($filenum);
вернуть $file_data;
}
функция w($file_name,$data,$method="w"){
$filenum=@fopen($file_name,$method );
стадо ($filenum, LOCK_EX);
$file_data=fwrite($filenum,$data);
fclose($filenum);
вернуть $file_data;
}
www.devdao.com
12. Разница между isset() и пустой() заключается в
том, что оба используются для проверки переменных.
Но isset() проверяет, присвоено ли переменной значение, а пустой() проверяет, является ли переменная, которой было присвоено значение, пустой. Если на переменную ссылаются в PHP без присвоения ей значения, это разрешено, но будет выдано уведомление. Если переменной присвоено нулевое значение, $foo="" или $foo=0 или $foo=false, то пустой($foo) возвращает true, а isset($foo) также возвращает true, что означает, что присвоение нулевого значения будет не выходить из переменной.
Чтобы отменить регистрацию переменной, используйте unset($foo) или $foo=NULL.
13. Оператор запроса MySQL содержит ключевые слова.
Когда php запрашивает MySQL, иногда имя таблицы или столбца MySQL содержит ключевые слова. В это время в запросе будут ошибки. Например, если имя таблицы — order, во время запроса возникнет ошибка. Самый простой способ — добавить `[над клавишей табуляции] к имени таблицы или имени столбца в операторе SQL, чтобы отличить его,
например, select * from `order`.
14. Существует два способа одновременной загрузки нескольких файлов по протоколу HTTP
, которые являются двумя реализациями одного и того же метода. Конкретные процедуры необходимо разработать самостоятельно:
1. Настройте в форме несколько полей ввода файлов и назовите их массивами следующим образом:
<form action="" метод=пост>
<тип ввода=имя файла=использованный файл[]>
<тип ввода=имя файла=использованный файл[]>
<тип ввода=имя файла=использованный файл[]>
</форма>
Таким образом, выполните следующий тест на стороне сервера
эхо "<pre>";
print_r ($_FILES);
эхо "</pre>";
2. Установите в форме несколько полей ввода файлов, но с разными именами, как показано ниже:
<form action="" метод=post>
<тип ввода=имя файла=usefile_a>
<тип ввода=имя файла=usefile_b>
<тип ввода=имя файла=usefile_c>
</форма>
Выполните тот же тест на стороне сервера:
эхо "<pre>";
print_r ($_FILES);
эхо "</pre>";