【PHP实习报告要点详解】
1. **页面间变量传递**:
在PHP最新版本中,自动全局变量默认关闭。要获取GET、POST或SESSION中的变量,需使用`$_GET['foo']`、`$_POST['foo']`和`$_SESSION['foo']`。尽管可以修改配置开启自动全局变量(`register_globals = On`),但为了代码的兼容性和安全性,推荐使用新的写法。
2. **Win32下Apache2 GET传递中文参数问题**:
当使用GET方法传递包含中文的参数时,可能会遇到内部错误。解决方法是对中文参数进行URL编码,如`"?a=".urlencode("你好")."&b=".urlencode("你也好")`。
3. **Win32下的Session问题**:
默认的`session.savepath = /tmp`适用于Linux,但在Win32环境下会导致PHP无法读写Session文件。需要在php.ini中将其更改为Win32下的绝对路径,如`session.savepath = "c:\windows\temp"`。
4. **错误信息显示**:
调试阶段建议开启`display_errors`和`error_reporting`,以便查看所有错误。未定义变量的错误可以通过`isset()`函数或使用`@`符号来避免,如`if(isset($foo)) echo $foo`或`echo @$foo`。
5. **Win32下mail()函数邮件发送**:
在Windows下,需要配置SMTP服务器才能发送邮件。在php.ini中设置`SMTP = IP`,其中IP是不需验证的SMTP服务器地址。更好的解决方案是直接通过socket连接到目标邮件服务器发送邮件。
6. **MySQL初始密码设置**:
安装MySQL后,如果未设置密码,应使用SQL命令`UPDATE mysql.user SET password=PASSWORD('yourpassword') WHERE User='root'`来修改root用户的密码。
7. **Header已发送错误**:
出现此错误通常是因为在使用`header()`函数之前有输出(如打印、echo)或者文件开头有空白行。确保在使用`header()`之前没有其他输出。
8. **php.ini更改无效**:
修改php.ini后,需要重启Web服务器(如IIS或Apache),以使新设置生效。
9. **ISAPI方式安装PHP**:
PHP的ISAPI扩展与某些Web服务器可能存在冲突。可以使用CGI模式安装。安装过程中,需要配置Web服务扩展,指定PHP可执行文件路径,并启用PHP扩展。
10. **SQL语句调试**:
如果SQL语句执行失败,可以通过echo SQL语句来检查变量值,确保语句正确无误。
11. **include与require的区别**:
include在文件不存在时只会发出Notice,程序将继续执行;require则会抛出致命错误并停止执行。两者都会先包含后执行,包含文件中避免再次包含,以免造成无限递归。若需防止重复包含,可以使用`include_once`或`require_once`。
12. **读写文件数据**:
示例代码展示了如何读取文件内容。`r()`函数打开文件,使用`flock()`加锁,然后读取文件内容。注意,文件操作后记得释放锁并关闭文件句柄。完整的读取、写入或追加文件内容的方法还包括`file_get_contents()`、`file_put_contents()`等函数。
以上就是PHP实习报告中涉及的主要知识点,涵盖了变量传递、错误处理、Session配置、邮件发送、数据库操作等多个方面,对于理解和实践PHP开发具有重要意义。