php必须掌握的库,PHP初學者必須掌握的10個知識點
這里總結了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個知識點相关推荐
- Java tate只要年月日,Java初學者入門必須掌握的30個基本概念
基本概念: 1.OOP中唯一關系的是對象的接口是什么,就像計算機的銷售商她不管電源內部結構 是怎樣的,他只關系能否給你提供電就行了,也就是只要知道can or not而不是how and why.所有 ...
- 郭海鷹導師大學鑒賞課程延伸知識點之2019年6月6日薈萃
知识点之壹如是.托马斯·霍布斯Thomas Hobbes(1588年4月5曰出生而于1679年12月4曰驾鹤西游):他是英囯古典时期的"STATES-MAN.哲学家".Mrs Th ...
- vs2017c语言图像界面库,C語言中在VS2017中構建圖形界面基礎知識點
一.initgraph函數(講解)轉自:https://blog.csdn.net/zhao_fu_lu/article/details/23961111 1.initgraph():初始化圖形系統 ...
- Git 初學筆記 - 指令操作教學
Git 是分散式的版本控制系統, 從架設.簡易操作.設定, 此篇主要是整理基本操作.遠端操作等. 註: Git 的範圍太廣了, 把這篇當作是初學入門就好了. 注意事項 由 project/.git/c ...
- GNU/Linux 初學之旅
GNU/Linux 初學之旅 李果正 Edward G.J. Lee 目 錄 0.1 前言 0.2 強烈建議手頭上要有一.二本基礎書籍!!! 0.3 行前準備 0.4 GNU/Linux 的 dist ...
- STM32Cube和HAL库使用初体验-第5季第2部分-朱有鹏-专题视频课程
STM32Cube和HAL库使用初体验-第5季第2部分-308人已学习 课程介绍 本季课程主要讲解STM32的全新开发方式:使用STM32CubeMX工具做图形化配置,自动生成初始化代 ...
- 视频教程-STM32Cube和HAL库使用初体验-第5季第2部分-单片机/工控
STM32Cube和HAL库使用初体验-第5季第2部分 互联网课程品牌<朱老师物联网大讲堂>创始人.精通U-Boot.Linux kernel移植及驱动程序开发;精通C.C++.Java. ...
- 小猪的Python学习之旅 —— 13.文字识别库pytesseract初体验
小猪的Python学习之旅 -- 13.文字识别库pytesseract初体验 标签:Python 引言 度过了短暂的春节假期,又要开始继续搬砖了,因为还处于节后 综合征,各种散漫,不想看任何代码相关 ...
- 使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情、5日均线、10日均线行情并显示
使用Python对股票数据进行数据分析(二)-使用ta-lib库获取日线行情.5日均线.10日均线行情并显示 这个文章其实和我的上一篇文章,https://blog.csdn.net/lost0910 ...
最新文章
- Eclipse下配置struts很让我痛苦
- tkFileDialog报错,模块未找到出错:没有名字叫做 tkFileDialog 的模块
- 不做旁观者,给博主最有力的支持——博客之星评选,期待您的支持,谢谢路过的朋友投上您宝贵的一票...
- JavaScript动态加载js文件
- build settings参数详解
- 运营体系_用户运营系统论:解构复杂产品的大规模用户运营体系
- MySQL定时备份(全量备份+增量备份)
- 树莓派 小屏幕_树莓派学习手动积累(1)
- 400 fps!CenterFace+TensorRT部署人脸和关键点检测
- python 日志解决方案_日常Python问题的绝佳解决方案
- Sharepoint学习笔记--- 快速确定VisualStudio2010当前Project的assembly name
- html模仿抖音,仿抖音示例
- 十四步实现拥有强大AI的五子棋游
- 一线协议—ds18b20
- 地球上20张最惊人照片!不看将后悔一辈子
- 联想小新14风扇一直很响怎么办
- 决策树之CART算法
- 【Codeforces】1051F. The Shortest Statement【MST+LCA+最短路】
- 【Android App】在线语音识别功能实现(使用云知声平台与WebSocket 超详细 附源码)
- 第七章:CSS3基础---变形旋转 2d/3d、c3边框图片、变形缩放 2d/3d、变形倾斜2d、动画属性
热门文章
- AD4003 VHDL设计及仿真
- easyui数据请求两个url_easyui使用是调用两次后台请求(解决)
- python变量类型是集合_python基础-基本数据类型:集合
- python parser count_8 个 Python 实用脚本,早掌握早下班!
- android复位机器人图片,安卓(Android)新图标!小绿机器人换脸啦
- python画皇冠_用Python画小女孩放风筝的示例
- phpexcel导出大量数据合并单元格_php 数据导出到excel 2种带有合并单元格的导出...
- oracle ebs po_header_all含税单价,Oracle EBS-追踪PO全过程
- python summary结果提取_Python coverage.summary方法代码示例
- C++相关:部分标准库特殊设施