本文目錄一覽:
- 1、php要學哪些?學習php需要掌握哪些東西
- 2、php博客系統讀文件出錯
- 3、PHP與MYSQL數據庫連接成功但是查詢表失敗的問題
- 4、php文件上傳失敗的問題
- 5、PHP表單提交失敗,如何返回原值?
php要學哪些?學習php需要掌握哪些東西
PHP需要掌握的知識還是比較多的,最基本的比如:PHP基本的語法、php框架以及CMS、mysql數據庫設計表、mysql數據庫的基本SQL語句。現在一般PHP的都得會前端,那就包括:js/ajax、html、css。如果更高點層次的就是linux服務器。
下面參考雷雪松的個人博客學習PHP的路線和一些方法。
1、用集成環境安裝PHP環境,一定要記住這一點,不要自己分開去裝,尤其是自學的朋友。不然你會覺得很複雜,會沒有信心學下去的。也要注意任何高手都不是一蹴而就的,是一步一步,不同的階段歷練才有最後的沉澱。
2、先了解一些基本的變量類型,語法,函數,基本邏輯,寫簡單的代碼。前期以嘗試,培養興趣為主。這段時間是打基礎很好的時候,這個會影響你後面的發展,不過也可以在後期去完善。
3、這時候你可能覺得PHP就這樣,沒什麼難度,或者有的覺得太難了,簡直一臉疑惑。這個到底有什麼用。在這時候一定要堅持下來,可以試試先放一下,別太較真。慢慢的困惑你的會被你領悟的。這時,建議學習html+css+js,緩解自己的壓力,這個相對簡單,簡歷信心。尤其是js,總結其實有相同的思路,可以結合著一起體會。
4、這些都感覺有80%了解就可以先放放了,現在在學習MySQL,也是先了解基礎的。這個是幹什麼的,我可以用它做什麼。因為之前裝的集成環境。為什麼感覺是凌亂的,我想告訴你的是,一是不要在自己沒能力解決問題的時候死磕,浪費時間,喪失信心。這時候我們要做的是學習壯大自己,不要灰心。二是我本來覺得這一切都了解才是完整的。我們的目標也是要把這些都做好,這才是一個合格的PHP程序員。
5、這一切都順利的話,你基本離預設的目標不遠了,完成了整個學習的70%了。後面的是在之前的基礎上升華。把HTML和css、js結合、靜態文件和PHP結合、PHP和MySQL結合。這個階段可能越到的問題會異常的多,一定要學會解決問題。網上很多都是答案,同樣你要學會問問題。
6、這些之後你基本已經快到學習的尾聲了,但還缺少經驗。這時,你可以看一些網上開源的cms,例如織夢,國內用的多,越到問題好解決。看看一些視頻(網上免費的很多),查漏補缺,總結歸納形成自己的知識體系。是時候該準備慶祝下自己這段的時間沒有白費(一般2到3各月,看平時每天花的時間),基本成為一個合格的PHP程序員了。也該恭喜你了,其實並不那麼難。堅持,堅持;努力,努力;學習,學習。
php博客系統讀文件出錯
warning:opendir(contents)[function opendir]failed to open dir:no such file or directory in archives.php in line 36
檢查一下你讀取的文件路徑和文件名是否正確
PHP與MYSQL數據庫連接成功但是查詢表失敗的問題
mysql_select_db。如果未指定,則使用上一個連接。
2.你的mysql_select_db的第二個參數$link_identifier沒有值,即$mysql不能賦值給mysql_select_db.
使得連接數據庫失敗。才使得mysql_query查詢失敗。
可修改為:
?php
$startTime = microtime ( true ); //打開數據庫
$mysql=mysql_connect(‘localhost’,’root’,’123456′);
mysql_select_db(‘db_test’);
if (!$mysql){
echo “連接失敗,原因為:”.mysql_error();
exit();
} //讀取prodtuct表
$query = mysql_query(“select * from user”,$mysql) or die(“查詢失敗”); //關閉數據庫
mysql_close($mysql );
?
php文件上傳失敗的問題
在用PHP進行文件上傳的操作中,需要知道怎麼控制上傳文件大小的設置,而文件可傳大小是受到多種因素制約的,現總結如下:
1、php.ini:upload_max_filesize 所上傳的文件的最大大小。默認值2M。
2、php.ini:memory_limit 本指令設定了一個腳本所能夠申請到的最大內存字節數,默認值8M。如果不需要任何內存上的限制,必須將其設為 -1。如果內存不夠,則可能出現錯誤:Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)
3、php.ini:post_max_size 設定POST數據所允許的最大大小。此設定也影響到文件上傳。要上傳大文件,該值必須大於 upload_max_filesize。
4、php.ini:max_execution_time = 30 ; Maximum execution time of each script, in seconds
5、php.ini:max_input_time = 60 ; Maximum amount of time each script may spend parsing request data
6、如果用到mysql的BLOB進行二進制文件存儲,則需要設置my.ini:max_allowed_packet=xxM
7、httpd.conf
在 Apache 裡面有一個選項是 LimitRequestBody,這個選項可以限制用戶送出的 HTTP 請求內容。這個選項可以在 .htaccess 或 httpd.conf 里使用,而如果在 httpd.conf 內使用,分別可以用在 virtualhost 或目錄屬性設定。而 LimitRequestBody 的設定值是介乎 0 (無限制) 至 2147483647 (2GB)。
例如要在目錄 D:/AppServ/www 設定上傳限制為 100K,可以在 .htaccess 或 httpd.conf 加入以下語句:
LimitRequestBody 1024000000
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride All
Order allow,deny
Allow from all
LimitRequestBody 1024000000Options Indexes FollowSymLinks MultiViews ExecCGIAllowOverride AllOrder allow,denyAllow from all
如果透過 .htaccess 設定,儲存檔案後會立即生效;如透過 httpd.conf 設定,須要重新啟動 Apache。
PHP關於文件上傳部分,特別提到表單隱藏域:MAX_FILE_SIZE,意思是接收文件的最大尺寸。文檔中給出的例子如下:
form enctype=”multipart/form-data” action=”_URL_” method=”POST”
input type=”hidden” name=”MAX_FILE_SIZE” value=”30000″
Send this file: input name=”userfile” type=”file”
input type=”submit” value=”Send File”
form
Send this file:
這裡設置MAX_FILE_SIZE = 30000,期待一種可能,使得瀏覽器在傳送文件之前能夠依此作出預先判斷,如果文件尺寸大於30000字節,則不執行實際的POST動作。也就是不往服務器發送文件內容,而是直接在客戶端提醒用戶“你試圖上傳的文件超過30000字節”。
這的確是一個非常棒的主張,但在現實中卻暫時無法實現。不是因為這個限制可以“被簡單地繞過”,而是IE和FireFox這兩個主流瀏覽器都不支持這個特性。PHP的這個建議尚未被採納。
MAX_FILE_SIZE還有一個用場:後台PHP會判斷接收到的文件大小是否大於這個值,如果超出,$_FILES[‘thisfile’][‘error’]會被設置為UPLOAD_ERR_FORM_SIZE(2),同時放棄保存臨時文件,將$_FILES[‘thisfile’][‘size’]置0。
這個例子,沒問題,表現正常,當我試圖上傳一個40多K的文件時,PHP程序報告“文件超過MAX_FILE_SIZE”。
但是,如果我們將表單中的MAX_FILE_SIZE從30000減少到1000,情形又如何呢?
上傳800字節的文件,正常;
上傳40K的文件,PHP報告文件過大,也正常;
上傳3000個字節的文件,PHP未報告錯誤,它成功保存了文件!出乎意料!
問題就出在main/rfc1867.c中判斷文件是否超長的這部分代碼上。php每次從buffer中讀取FILLUNIT字節長度的內容後,首先判斷“已經讀到的內容長度(total_bytes)”是否大於MAX_FILE_SIZE,然後再增加“已經讀到的內容長度(total_bytes)”。這樣一來,和預計的結果之間至多會有FILLUNIT字節的誤差,而FILLUNIT=1024*5=5K。(點擊bug了解詳細內容)
這就是說,當MAX_FILE_SIZE5K時,上傳一個大於MAX_FILE_SIZE,但是小於5K的文件是沒有問題的。
當然,因為這個設置很容易被繞過,所以服務器端編程不應當依賴於MAX_FILE_SIZE。而且,5K到底是個很小的數值,對大多數上傳文件的表單來說沒有影響。
PHP中post_max_size,upload_max_filesize, MAX_FILE_SIZE的設置,和客戶端上傳給服務器端的流量大小無關。
Apache服務器從客戶端接收長度不超過LimitRequestBody字節數的請求,然後傳送給php模塊,php模塊再決定是否保存成臨時文件,設置$_FILES全局變量,移交給script進一步處理。
這個Apache的LimitRequestBody選項缺省值=0,允許Request body的最大字節數是2G(Linux + Apache)
最後還要注意的是:
html本身能夠post數據也是有限制的,不能超過2G。
FTP客戶端有文件偏移指針的2GB邊界限制,未使用特殊編譯flag編譯的ftp服務器端或者客戶端,無論在什麼FS中都不支持大於2GB的文件。不知道PHP會不會也有這種情況。
PHP表單提交失敗,如何返回原值?
可以通過兩種方案:
第一,表單提交的時候在php端會員獲取表單內容的,如果表單信息存儲或者驗證有問題那麼原樣返回提交的值到表單頁面,類似編輯一個已經保存的信息;
第二,通過Ajax來傳值,Ajax把表單數據提交給php,php處理完表單數據返回給Ajax一個狀態值,這樣表單頁面是不會刷新,表單原數據還是會存在。
原創文章,作者:INPBK,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/317661.html