這里總結了PHP初學者容易感到困惑的10個問題,供大家參考。

1、頁面之間無法傳遞變量

get,post,session在最新的php版本中自動全局變量是關閉的,所以要從上一頁面取得提交過來得變量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']來得到。當然也可以修改自動全局變量為開(php.ini改為register_globals = On);考慮到兼容性,還是強迫自己熟悉新的寫法比較好。

注:PHP中的超全局變量

從PHP 4.2.0 開始,register_globals 的默認值為 off,這樣一來,以前的很多可以直接使用的變量,如 $PHP_SELF 或者你設定的SESSION變量都不能用 “$變量名”的形式訪問了,這可能會給你帶來很多不變,但卻有助於安全性的提高。訪問這些變量,你需要使用PHP 超全局變量,如下:

$_SERVER

變量由 Web 服務器設定或者直接與當前腳本的執行環境相關聯。類似於舊數組 $HTTP_SERVER_VARS 數組。以前的$PHP_SELF對應$_SERVER['PHP_SELF'],你可以使用phpinfo來查看你的$_SERVER變量。

$_GET

經由 HTTP GET 方法提交至腳本的變量。類似於舊數組 $HTTP_GET_VARS 數組。

$_POST

經由 HTTP POST 方法提交至腳本的變量。類似於舊數組 $HTTP_POST_VARS 數組。

$_COOKIE

經由 HTTP Cookies 方法提交至腳本的變量。類似於舊數組 $HTTP_COOKIE_VARS 數組。

$_SESSION

當前注冊給腳本會話的變量。類似於舊數組 $HTTP_SESSION_VARS 數組。

$_FILES

經由 HTTP POST 文件上傳而提交至腳本的變量。類似於舊數組 $HTTP_POST_FILES 數組。

$_ENV

執行環境提交至腳本的變量。類似於舊數組 $HTTP_ENV_VARS 數組。

對於$_FILES變量:(文件域字段為“myfile”)

$_FILES['myfile']['name']

客戶端機器文件的原名稱(包括路徑)。

$_FILES['myfile']['type']

文件的 MIME 類型,需要瀏覽器提供該信息的支持,例如“image/gif”。

$_FILES['myfile']['size']

已上傳文件的大小,單位為字節。

$_FILES['myfile']['tmp_name']

文件被上傳后在服務端儲存的臨時文件名(包括路徑)。

$_FILES['myfile']['error']

和該文件上傳相關的錯誤代碼。['error'] 是在 PHP 4.2.0 版本中增加的。

當 php.ini 中的 register_globals 被設置為 on 時,$myfile_name 等價於 $_FILES['myfile']['name'],$myfile_type 等價於 $_FILES['myfile']['type']等。

2、win32下的session不能正常工作

php.ini默認的session.save_path = /tmp

這顯然是linux下的配置,win32下php無法讀寫session文件導致session無法使用,把它改成一個絕對路徑就可以了,例如session.save_path = c:\windows\temp。

3、顯示錯誤信息

當php.ini的display_errors = On並且error_reporting = E_ALL時,將顯示所有的錯誤和提示,調試的時候最好打開以便糾錯,如果你用以前php寫法錯誤信息多半是關於未定義變量的。變量在賦值以前調用會有提示,解決辦法是探測或者屏蔽,例如顯示$foo,可以if(isset($foo)) echo$foo 或者echo @$foo

4、header already sent

這個錯誤通常會在你使用HEADER的時候出現,他可能是幾種原因:1,你在使用HEADER前PRING或者ECHO了2.你當前文件前面有空行3.你可能INCLUDE了一個文件,該文件尾部有空行或者輸出也會出現這種錯誤。

5、更改php.ini后沒有變化

重新啟動web server,比如IIS,Apache等等,然后才會應用最新的設置。

6、有時候sql語句不起作用,對數據庫操作失敗。最簡便的調試方法,echo那句sql,看看變量的值是否能得到。

7、include和require的區別

兩者沒有太大的區別,如果要包含的文件不存在,include提示notice,然后繼續執行下面的語句,require提示致命錯誤並且退出。根據測試,win32平台下它們都是先包含后執行,所以被包含文件里最好不要再有include或require語句,這樣會造成目錄混亂。或許*nux下情況不同,暫時還沒測試。如果一個文件不想被包含多次可以使用include_once或require_once## 讀取,寫入文檔數據:

function r($file_name) {

$filenum=@fopen($file_name,"r");

@flock($filenum,LOCK_SH);

$file_data=@fread($filenum,filesize($file_name));

@fclose($filenum);

return $file_data;

}

function w($file_name,$data,$method="w"){

$filenum=@fopen($file_name,$method);

flock($filenum,LOCK_EX);

$file_data=fwrite($filenum,$data);

fclose($filenum);

return $file_data;

}

8、isset和empty的區別

兩者都是測試變量用的,但是isset是測試變量是否被賦值,而empty是測試一個已經被賦值的變量是否為空。如果一個變量沒被賦值就引用在php里是被允許的,但會有notice提示。如果一個變量被賦空值,$foo=”"或者$foo=0或者 $foo=false,那么empty($foo)返回真,isset($foo)也返回真,就是說賦空值不會注銷一個變量。要注銷一個變量,可以用 unset($foo)或者$foo=NULL。

9、mysql查詢語句包含有關鍵字

php查詢mysql的時候,有時候mysql表名或者列名會有關鍵字,這時候查詢會有錯誤。例如表名是order,查詢時候會出錯,簡單的辦法是sql語句里表名或者列名加上`[tab鍵上面]來加以區別,例如select * from `order`。

10、通過HTTP協議一次上傳多個文件的方法

有兩個思路,是同一個方法的兩種實現。具體程序還需自己去設計

1. 在form中設置多個文件輸入框,用數組命名他們的名字,如下:

這樣,在服務器端做以下測試

echo "

";

print_r($_FILES);

echo "

";

2. 在form中設置多個文件輸入框,但名字不同,如下:

在服務器端做同樣測試:

echo "

";

print_r($_FILES);

echo "

";

php必须掌握的库,PHP初學者必須掌握的10個知識點相关推荐

  1. Java tate只要年月日,Java初學者入門必須掌握的30個基本概念

    基本概念: 1.OOP中唯一關系的是對象的接口是什么,就像計算機的銷售商她不管電源內部結構 是怎樣的,他只關系能否給你提供電就行了,也就是只要知道can or not而不是how and why.所有 ...

  2. 郭海鷹導師大學鑒賞課程延伸知識點之2019年6月6日薈萃

    知识点之壹如是.托马斯·霍布斯Thomas Hobbes(1588年4月5曰出生而于1679年12月4曰驾鹤西游):他是英囯古典时期的"STATES-MAN.哲学家".Mrs Th ...

  3. vs2017c语言图像界面库,C語言中在VS2017中構建圖形界面基礎知識點

    一.initgraph函數(講解)轉自:https://blog.csdn.net/zhao_fu_lu/article/details/23961111 1.initgraph():初始化圖形系統 ...

  4. Git 初學筆記 - 指令操作教學

    Git 是分散式的版本控制系統, 從架設.簡易操作.設定, 此篇主要是整理基本操作.遠端操作等. 註: Git 的範圍太廣了, 把這篇當作是初學入門就好了. 注意事項 由 project/.git/c ...

  5. GNU/Linux 初學之旅

    GNU/Linux 初學之旅 李果正 Edward G.J. Lee 目 錄 0.1 前言 0.2 強烈建議手頭上要有一.二本基礎書籍!!! 0.3 行前準備 0.4 GNU/Linux 的 dist ...

  6. STM32Cube和HAL库使用初体验-第5季第2部分-朱有鹏-专题视频课程

    STM32Cube和HAL库使用初体验-第5季第2部分-308人已学习 课程介绍         本季课程主要讲解STM32的全新开发方式:使用STM32CubeMX工具做图形化配置,自动生成初始化代 ...

  7. 视频教程-STM32Cube和HAL库使用初体验-第5季第2部分-单片机/工控

    STM32Cube和HAL库使用初体验-第5季第2部分 互联网课程品牌<朱老师物联网大讲堂>创始人.精通U-Boot.Linux kernel移植及驱动程序开发;精通C.C++.Java. ...

  8. 小猪的Python学习之旅 —— 13.文字识别库pytesseract初体验

    小猪的Python学习之旅 -- 13.文字识别库pytesseract初体验 标签:Python 引言 度过了短暂的春节假期,又要开始继续搬砖了,因为还处于节后 综合征,各种散漫,不想看任何代码相关 ...

  9. 使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情、5日均线、10日均线行情并显示

    使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情.5日均线.10日均线行情并显示 这个文章其实和我的上一篇文章,https://blog.csdn.net/lost0910 ...

最新文章

  1. Eclipse下配置struts很让我痛苦
  2. tkFileDialog报错,模块未找到出错:没有名字叫做 tkFileDialog 的模块
  3. 不做旁观者,给博主最有力的支持——博客之星评选,期待您的支持,谢谢路过的朋友投上您宝贵的一票...
  4. JavaScript动态加载js文件
  5. build settings参数详解
  6. 运营体系_用户运营系统论:解构复杂产品的大规模用户运营体系
  7. MySQL定时备份(全量备份+增量备份)
  8. 树莓派 小屏幕_树莓派学习手动积累(1)
  9. 400 fps!CenterFace+TensorRT部署人脸和关键点检测
  10. python 日志解决方案_日常Python问题的绝佳解决方案
  11. Sharepoint学习笔记--- 快速确定VisualStudio2010当前Project的assembly name
  12. html模仿抖音,仿抖音示例
  13. 十四步实现拥有强大AI的五子棋游
  14. 一线协议—ds18b20
  15. 地球上20张最惊人照片!不看将后悔一辈子
  16. 联想小新14风扇一直很响怎么办
  17. 决策树之CART算法
  18. 【Codeforces】1051F. The Shortest Statement【MST+LCA+最短路】
  19. 【Android App】在线语音识别功能实现(使用云知声平台与WebSocket 超详细 附源码)
  20. 第七章:CSS3基础---变形旋转 2d/3d、c3边框图片、变形缩放 2d/3d、变形倾斜2d、动画属性

热门文章

  1. AD4003 VHDL设计及仿真
  2. easyui数据请求两个url_easyui使用是调用两次后台请求(解决)
  3. python变量类型是集合_python基础-基本数据类型:集合
  4. python parser count_8 个 Python 实用脚本,早掌握早下班!
  5. android复位机器人图片,安卓(Android)新图标!小绿机器人换脸啦
  6. python画皇冠_用Python画小女孩放风筝的示例
  7. phpexcel导出大量数据合并单元格_php 数据导出到excel 2种带有合并单元格的导出...
  8. oracle ebs po_header_all含税单价,Oracle EBS-追踪PO全过程
  9. python summary结果提取_Python coverage.summary方法代码示例
  10. C++相关:部分标准库特殊设施