這篇文章帶給大家的內容是關於PHP常見的一些問題總結(收藏),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
1. 字串定義的時候單引號和雙引號有什麼差別?
單引號載入速度比雙引號載入速度快
2.echo(),print(),print_r()的差別?
(1)echo 是語法,Output one or more strings,沒有回傳值;
(2)print 是函數,不能輸出數組和對象,Outputastring,print
有返回值;
(3)print_r 是函數,可以輸出數組。 print_r 是個比較有趣的函數,可以輸出stirng、int、float、array、object 等,輸出array 時會用結構表示,print_r 輸出成功時回傳true;而且print_r 可以透過print_r($str,true)來,使print_r不輸出而傳回print_r 處理後的值。此外,對於 echo 和 print,基本上以 使用 echo 居多,因為其效率比 print 要高。
3. 依照功能分類說說有哪些字串處理函數?這些函數的作用是什麼?
A. 字串輸出函數
(1)echo $a,$b,$c......; 是一個語言結構,而不是一個真正的
函數。
(2)print($a) 本函數輸出字串。若成功則回傳1,失敗回傳0
(3)print_r($a)
(4)var_dump($a); 能輸出型別、長度、值
B. 移除字串首尾空格的函數: trim ltrim rtrim(別名: chop) 使用第二個參數,也可以移除指定的字元。
C. 轉義字串函數:addslashes()
D. 取得字串長度的函數:strlen()
E. 截取字串長度的的函數:substr()
F.檢索字串函數: strstr() , strpos()
G. 取代字串函數:str_replace()
4. 請給出以下問題的正確答案?
1).$arr = array('james', 'tom', 'symfony');請將$arr 陣列的值用',' 分割並合併成字串輸出?
echo implode(‘,’,$arr);
2).$str = 'jack,james,tom,symfony'; 請將$str 用','分割, 並且把分割後的值放到$arr 陣列中?
$arr = explode(‘,’,$str);
3).$arr=array(3,7,2,1,'d','abc');請將$arr依照從大到小的順序排序,並保持其鍵值不變?
arsort($arr); print_r($arr);
4).$mail = “gaofei@163.com”;請將此信箱的網域(163.com)取出並列印,看最多能寫出幾種方法?
echostrstr($mail,'163'); echosubstr($mail,7); $arr=explode("@",$mail);echo$arr[1];
5.頁面字元出現亂碼,怎麼解決?
1.首先考慮當前檔案是不是設定了字元集。看是否為meta 標籤寫了charset,如果是php 頁面也可以看看是不是
在header()函數中指定了charset;
例如:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> header(“content-type:text/html;charset=utf-8”);
2.如果設定了字元集(也就是charset),那麼判斷目前檔案
儲存的編碼格式是否跟頁面設定的字元集保持一致,
兩者必須保持統一;
3.如果涉及到從資料庫提取數據,那麼判斷資料庫查詢時的
字元集是否跟目前頁面設定的字元集一致,兩者必須統一,
例如:
mysql_query(“set names utf8”)。
6. 正则表达式是什么?php 中有哪些常用的跟正则相关的 函数?请写出一个 email 的正则,中国手机号码和座机号码的正则表达式?
正则表达式是用于描述字符排列模式的一种语法规则。正则表达式也叫做模式表达式。网站开发中正则表达式最常用于表单提交信息前的客户端验证。
比如验证用户名是否输入正确,密码输入是否符合要求, email、手机号码等信息的输入是否合法
在 php 中正则表达式主要用于字符串的分割、匹配、查找和
替换操作。
preg 系列函数可以处理。具体有以下几个:
stringpreg_quote(stringstr[,stringdelimiter])
转义正则表达式字符 正则表达式的特殊字符包括:.\\+*? [^]$(){}=!|:。
preg_replace-- 执行正则表达式的搜索和替换
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject[,intlimit]
preg_replace_callback -- 用回调函数执行正则表达式的搜索
和替换
mixed preg_replace_callback ( mixed pattern, callback callback, mixedsubject[,intlimit])
preg_split-- 用正则表达式分割字符串
array preg_split ( string pattern, string subject [, int limit [, int flags]])
常用的正则表达式写法:
中文:/^[\u4E00-\u9FA5]+$/
手机号码:/^(86)?0?1\d{10}$/
EMAIL:
/^[\w-]+[\w-.]?@[\w-]+\.{1}[A-Za-z]{2,5}$/
密码(安全级别中) :
/^(\d+[A-Za-z]\w*|[A-Za-z]+\d\w*)$/
密码(安全级别高) :
/^(\d+[a-zA-Z~!@#$%^&(){}][\w~!@#$%^&(){}]*|[a-zA-Z~! @#$%^&(){}]+\d[\w~!@#$%^&(){}]*)$/
7.preg_replace()和 str_ireplace()两个函数在使用上有什么 不同?preg_split()和 split()函数如何使用?
preg_replace — 执行正则表达式的搜索和替换
str_ireplace — str_replace() 的 忽 略 大 小 写 版 本 str_replace — 子字符串替换
preg_split — 用正则表达式分割字符串
split — 用正则表达式将字符串分割到数组中
8. 获取当前时间戳的函数主要有哪些?用 PHP 打印出今 天的时间,格式是2010-12-10 22:21:21?用 PHP 打印出前一天的时间格式是2010-12-10 22:21:21? 如何把2010-12-25 10:30:25变成 unix 时间戳?
echodate("Y-m-dH:i:s",strtotime(‘-1,days’)); date('Y-m-dH:i:s',time()); $unix_time = strtotime("2009-9-2 10:30:25");//变成 unix 时间戳 echodate("Y-m-dH:i:s",$unix_time);//格式化为正常时间格式
9.在 url 中用 get 传值的时候,若中文出现乱码,应该用哪个函数对中文进行编码?
用户在网站表单提交数据的时候,为了防止脚本攻击(比如 用户输入<script>alert(111);</script>),php 端接收数据的
时候,应该如何处理?
使用 urlencode()对中文进行编码,使用 urldecode()来解码。
使用 htmlspecialchars($_POST[‘title’])来过滤表单传参就可以避免脚本攻击。
10. 说 说 mysql_fetch_row() 和 mysql_fetch_assoc() 和 mysql_fetch_array 之间有什么区别?
第一个是返回结果集中的一行作为索引数组,第二个是返回
关联数组,而第三个既可以返回索引数组也可以返回关联数 组,取决于它的第二个参数 MYSQL_BOTH MYSQL_NUM MYSQL_ASSOC 默认为 MYSQL_BOTH
$sql=”select*fromtable1”; $result=mysql_query($sql); mysql_fetch_array($result,MYSQL_NUM);
11. 请说出目前学过的返回是资源的函数?
答:fopen(打开文件)
imagecreatefromjpeg(png gif) — 从 JPEG
文件新建一图像
imagecreatetruecolor — 新建一个真彩色
图像
imagecopymerge — 拷贝并合并图像的一
部分
imagecopyresized — 拷贝部分图像并调
整大小
mysql_connect — 打开一个到 MySQL MySQL MySQL MySQL
服务器的连接
mysql_query();只有这执行 select 的时候成功,才返回资源, 失败返回 FALSE
12. 文件上传需要注意哪些细节?怎么把文件保存到指定目录?怎么避免上传文件重名问题?
1.首现要在 php.ini 中开启文件上传;
2.在 php.ini 中有一个允许上传的最大值,默认是2MB。必要
的时候可以更改;
3. 上 传 表 单 一 定 要 记 住 在 form 标 签 中 写 上 enctype="multipart/form-data";
4. 提交方式 method 必须是 post;
5. 设定 type="file" 的表单控件;
6.要注意上传文件的大小 MAX_FILE_SIZE、文件类型是否符合要求,上传后存放的路径是否存在。可以通过上传的文件名获取到文件后缀,然后使用时间戳+文件后缀的方式为文件重新命名,这样就避免了重名。可以自己设置上传文件的保存目录,与文件名拼凑形成一个文件 路径,使用 move_uploaded_file(),就可以完成将文件保存到指定目录。
13. $_FILES 是几维数组?第一维和第二维的索引下标分别是什么?批量上传文件的时候需要注意什么?
二维数组。第一维是上传控件的 name,二维下标分别为 name/type/tmp_name/size/error.
14.header()函数主要的功能有哪些?使用过程中注意什么?
答:
header()发送 http 头信息 -header("content-type:text/html; charset=utf-8");-------------------//当前页面输出内容是 html,编 码为 utf-8格式 -<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> -header("content-type:image/png gif jpeg");----------------------------------//当前页面输出内容的格式是图片 -header("refresh:5;url=http://www.1004javag.com/five/string.ph p");--//页面5秒后要跳转到新网址 -header("location:http://1004javag.com/five/string.php");----------//页面重定向
15. 文件下载的时候如果使用 header()函数?
答 : header("content-type: application/octet-stream;charset=UTF-8"); //在这里加 utf-8和
在上面定义有什么区别?、??
header("accept-ranges:bytes"); header("accept-length: ".filesize($filedir.$filename)); header("content-disposition: attachment; filename=".$filedir.$filename);
16. 什么是 ajax?ajax 的原理是什么?ajax 的核心技术是什 么?ajax 的优缺点是什么?
ajax 是 asynchronous JavaScript JavaScript JavaScript JavaScript and xml 的 缩 写 , 是 javascript、xml、css、DOM 等多个技术的组合。'$'是 jQuer jQuer jQuer jQuery y y y 的别名.
页面中用户的请求通过 ajax 引擎异步地与服务器进行通 信,服务器将请求的结果返回给这个 ajax 引擎,
最后由这个ajax引擎来决定将返回的数据显示到页面中的 指定位置。Ajax 最终实现了在一个页面的指定位置可以加载 , 另一个页面所有的输出内容。
这样就实现了一个静态页面也能获取到数据库中的返回数 据信息了。所以 ajax 技术实现了一个静态网页在不刷新整个
页面的情况下与服务器通信,
减少了用户等待时间,同时也从而降低了网络流量,增强了
客户体验的友好程度。
Ajax 的优点是:
1. 减轻了服务器端负担,将一部分以前由服务器负担的工
作转移到客户端执行,利用客户端闲置的资源进行处理;
2. 在只局部刷新的情况下更新页面,增加了页面反应速度,
使用户体验更友好。
Ajax 的缺点是不利于 seo 推广优化,因为搜索引擎无法直接 访问到 ajax 请求的内容。
ajax 的核心技术是 XMLHttpRequest,它是 javascript 中的
一个对象。
17.jquery 是什么?jquery 简化 ajax 后的方法有哪些?
jQuery 是 Javascript 的一种框架。
$.get(),$.post(),$.ajax()。$是 jQuery 对象的别名。
代码如下:
$.post(异 步 访 问 的 url 地 址 , {' 参 数 名' : 参 数 值} , function(msg){ $("#result").html(msg); }); $.get( 异 步 访 问 的 url 地 址 , {' 参 数 名 ' : 参 数 值 } , function(msg){ $("#result").html(msg); }); $.ajax({ type:"post", url:loadUrl, cache:false, data:"参数名=" + 参数值, success:function(msg){ $("#result").html(msg); } });
18. 什么是会话控制?
简单地说会话控制就是跟踪和识别用户信息的机制。会话控制的思想就是能够在网站中跟踪一个变量,通过这个变量,系统能识别出相应的用户信息,根据这个用户信息可以得知用户权限,从而展示给用户适合于其相应权限的页面内容。 目前最主要的会话跟踪方式有 cookie,session。
19. 会话跟踪的基本步骤
1).访问与当前请求相关的会话对象
2).尋找與會話相關的資訊
3).儲存會話資訊
4).廢棄會話資料
20. 使用 cookie 的注意事項有哪些?
1) setcookie()之前不可以有任何頁面輸出,就是空格,空白行也不可以;
2) setcookie()後,在目前頁面呼叫$_COOKIE['cookiename'] 不會有輸出,必須刷新或到下一個頁面才可以看到cookie值;
#3)不同的瀏覽器對cookie 處理不同,客戶端可以禁用cookie,瀏覽器也可以閒置cookie 的數量,一個瀏覽器能創建的cookie 數量最多300個,並且每個不可以超過4kb,每個web 網站能設定的cookie 總數不能超過20個。
4) cookie 是儲存在客戶端的,使用者停用了 cookie,那麼 setcookie 就不會運作了。所以不可以過度依賴 cookie。
21. 使用 session 的時候,透過什麼來表示目前用戶,從而與其他用戶區分?
sessionid , 通 過 session_id() 函 數 可 以 取 得 當 前 的 session_id。
22. session 和 cookie 的使用步驟分別是什麼?什麼 是 sesssion 和 cookie 的生命週期? session 和 cookie 的差別是什麼?
1. cookie 是儲存在客戶端機器的,對於未設定過期時間的 cookie,cookie 值會儲存在機器的記憶體中,只要關閉瀏覽器 則 cookie 會自動消失。如果設定了 cookie 的過期時間,那麼 瀏覽器會把 cookie 以文字檔案的形式儲存到硬碟中,當再次 開啟瀏覽器時 cookie 值依然有效。
2. session 是把使用者需要儲存的資訊保存在伺服器端。每個使用者 的 session 資訊就像是鍵值對一樣儲存在伺服器端,其中的 鍵就是 sessionid,而值就是使用者需要儲存資訊。伺服器就是透過 sessionid 來區分儲存的 session 資訊是哪個使用者的。
兩者最大的差別就是 session 儲存在伺服器端,而 cookie 是 在客戶端。 session 安全性較高,而 cookie 安全性弱。
3. session 在 web 開發中具有非常重要的份量。它可以將使用者正確登入後的資訊記錄到伺服器的記憶體中,當使用者以此身分#造訪網站的管理後台時,無需再次登入即可得到身分確認。而沒有正確登入的使用者則不指派session 空間,即便輸入了 管理後台的存取位址也不能看到頁面內容。透過session 的確定了使用者對頁面的操作權限。
使用 session 的步驟:
1. 啟動 session:使用 session_start()函數來啟動。
2. 註冊會話:直接為$_SESSION 陣列新增元素即可。
3. 使用會話:判斷 session 是否為空或是否已經註冊,如果實已經存在則像普通數組一樣使用即可。
4. 刪除會話:
1.可以使用unset 刪除單一session;
2.使用$_SESSION=array()的方式,一次註銷所有的會話變量;
3.使用session_destroy()函數來徹底銷毀session。
cookie 怎麼使用?
1. 記錄使用者存取的部分資訊
2. 在頁間傳遞變數
3. 將會檢視的internet 頁儲存在cookies 暫存資料夾中,可以提高以後的瀏覽速度。
创建 cookie:setcookie(stringcookiename,stringvalue,int expire);
读取 cookie:通过超级全局数组$_COOKIE 来读取浏览器端 的 cookie 的值。
删除 cookie:有两种方法
1.手工删除方法:
右击浏览器属性,可以看到删除 cookies,执行操作即可将所 有 cookie 文件删除。
2.setcookie()方法:
跟设置 cookie 的方法一样,不过此时将 cookie 的值设置为 空,有效时间为0或小于当前时间戳。
23. 设置或读取 session 之前,需要做什么?
可以直接在php.ini中开启session.auto_start=1或者在页面 头部session_start();
开启 session,session_start()前面不能有任何输出,包括空行。
24. 在实际开发中,session 在哪些场合使用?
session 用来存储用户登录信息和用在跨页面传值。
1)常用在用户登录成功后,将用户登录信息赋值给 session;
2)用在验证码图片生成,当随机码生成后赋值给 session。
25. 注销 session 会话的形式有几种?
unset() $_SESSION=array(); session_destroy();
相关推荐:
php服务nginx不能使用file_get_contents的解决方法
以上是PHP常見的一些問題總結(收藏)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

使用數據庫存儲會話的主要優勢包括持久性、可擴展性和安全性。 1.持久性:即使服務器重啟,會話數據也能保持不變。 2.可擴展性:適用於分佈式系統,確保會話數據在多服務器間同步。 3.安全性:數據庫提供加密存儲,保護敏感信息。

在PHP中實現自定義會話處理可以通過實現SessionHandlerInterface接口來完成。具體步驟包括:1)創建實現SessionHandlerInterface的類,如CustomSessionHandler;2)重寫接口中的方法(如open,close,read,write,destroy,gc)來定義會話數據的生命週期和存儲方式;3)在PHP腳本中註冊自定義會話處理器並啟動會話。這樣可以將數據存儲在MySQL、Redis等介質中,提升性能、安全性和可擴展性。

SessionID是網絡應用程序中用來跟踪用戶會話狀態的機制。 1.它是一個隨機生成的字符串,用於在用戶與服務器之間的多次交互中保持用戶的身份信息。 2.服務器生成並通過cookie或URL參數發送給客戶端,幫助在用戶的多次請求中識別和關聯這些請求。 3.生成通常使用隨機算法保證唯一性和不可預測性。 4.在實際開發中,可以使用內存數據庫如Redis來存儲session數據,提升性能和安全性。

在無狀態環境如API中管理會話可以通過使用JWT或cookies來實現。 1.JWT適合無狀態和可擴展性,但大數據時體積大。 2.Cookies更傳統且易實現,但需謹慎配置以確保安全性。

要保護應用免受與會話相關的XSS攻擊,需採取以下措施:1.設置HttpOnly和Secure標誌保護會話cookie。 2.對所有用戶輸入進行輸出編碼。 3.實施內容安全策略(CSP)限制腳本來源。通過這些策略,可以有效防護會話相關的XSS攻擊,確保用戶數據安全。

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显著提升应用在高并发环境下的效率。

theSession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceisesneededeededeedeedeededto toavoidperformance andunununununexpectedLogOgouts.3)

在PHP中,可以使用session_name()函數配置會話名稱。具體步驟如下:1.使用session_name()函數設置會話名稱,例如session_name("my_session")。 2.在設置會話名稱後,調用session_start()啟動會話。配置會話名稱可以避免多應用間的會話數據衝突,並增強安全性,但需注意會話名稱的唯一性、安全性、長度和設置時機。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)