搜尋
首頁後端開發php教程关于 服务器脚本 跟 浏览器脚本

关于 服务器脚本 和 浏览器脚本
    小弟新学 web 相关知识,我知道这个问题很2,请不吝赐教。

    我认为,浏览器脚本,如javascript,就是浏览器解释执行的。服务器脚本,就是服务器执行的,如PHP。
在W3C的PHP教程里面也说了:

引用
您无法在浏览器中通过查看源文档的方式来查看 PHP 的源代码 - 您只能看到 PHP 文件的输出,即纯粹的 HTML。这是因为在结果返回浏览器之前,脚本就已经在服务器执行了。


    那么我的理解就是,php是拿来生成一个html页面的,在浏览器访问的时候,生成一个页面,然后这个页面给浏览器,这个php的任务就完成了。或者说php就在这就结束了。


    但是PHP又可以操作cookie,cookie不是在浏览器的东西么,理解不能啊。

    我分析了下可能的情况就是,php生成的页面里面,用了javascript或者类似的东西来操作这个。但是不确定,求指教。

------解决方案--------------------
理解基本正确。至于php能读写客户端的cookie,是通过http头实现的。
当你用浏览器访问一个网站时,实际上是发送了一次http request。请求头中包含客户机器上的cookie。你机器上的cookie就是这样发送到服务器那里的,你可以把服务器理解为一个php脚本。php脚本处理请求完毕,解释成html后,就会http response,response会把解释完毕的html和cookie返回给客户机器。这样php就实现了对你机器上cookie的读写。

一次http交互有很多东西。以下就是我打开百度的http交互过程。你可以看到request和response都交互了什么内容。

request headers
---------------------------------
Request URL:http://www.baidu.com/
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:BAIDUID=9222A2A4BF6D80D713705CD25FE0390E:FG=1; bdshare_firstime=1357125911300; BDUSS=ldMY2JRSFVXR2Jva0FIb0lOemJIQ0s4anZab1ZGcEZ2aWJlN1hXSnFFTHNZc0ZSQVFBQUFBJCQAAAAAAAAAAAouSSDzIfYFMW5qZWN0MTBuAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAYIArMAAAALD275YqAAAA6p5DAAAAAAAxMC4zNi4xNOwU1FDsFNRQe; BDUT=4dim9222A2A4BF6D80D713705CD25FE0390E13b748d0bb81; PMS_Cache=1358090765568; BDRCVFR[feWj1Vr5u3D]=I67x6TjHwwYf0; 


response header
------------------------
Cache-Control:private
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:8379
Content-Type:text/html;charset=utf-8
Date:Sat, 19 Jan 2013 21:55:43 GMT
Expires:Sat, 19 Jan 2013 21:55:43 GMT
Server:BWS/1.0
Set-Cookie:H_PS_PSSID=1792_1421_1760_1788; path=/; domain=.baidu.com
Vary:Accept-Encoding
------解决方案--------------------
LZ 理解得非常好,比起很多在本版问“怎样把javascript赋值给php变量”的人(并无BS的意思,我也是这样走过来的)迈进了一步,至少知道php运行结束了 ,也有不结束的情况,那是相对高深的话题,有需要再研究

当年我是做js,然后发觉有些事情要在服务器才能做,接触到server side javascript这个名称(期间就出现过上述的思维),发现支持很少,再发现php,这样才走上php的道路

楼上说的http头,我建议你可以从现在就开始了解,以前没什么东西辅助,光靠看书理解这个比较困难;但时代不同了,现在很多工具(而且是简单的工具)可以实现抓包,抓包不是什么难事,我早年还一直以为这是黑客才做的事,见笑了;在firefox装个firebug插件,或者chrome也有类似功能(或者说chrome可能更简单些)

一个http过程是这样的,连接那些就省略了,你可以学到socket或者抓网页再去了解tcp连接,只说说数据传输的部分——
1.客户端请求,例如访问一个网址:这时发送的数据并不仅仅是一个网址,而是一堆请求头信息,请求头信息包含方法(GET、POST……)+网址,网站host+端口、访问的软件和版本、传输方式(是否压缩等),语言、以及其他,再加上get或post的数据——详细请看楼上的例子和http协议的RFC2616,如果访问是第二次或以后,还可能加上cookie信息(这些基本都是浏览器自己完成)
2.服务器处理后返回数据:返回的也并不仅仅是网页(或文件),在之前还有一堆返回头信息,返回信息也很多,第一行是状态(只有一种状态),200表示成功返回,404表示找不到,500表示服务器问题等等,更多状态号也要看协议文档;然后就是其他例如返回的数据类型,text/html当然就是html了;过期时间、传输方式……上面这些基本都由web服务器(如apache)自动完成,但也可以通过php改变。cookie就是加载这个头里面的,php的header函数就是改变上述的内容,只不过把session和cookie另外单独抽出来方便编程而已。返回头结束后才是“正式的”传输内容,例如网页本身、图片本身等等

了解这些,对于你使用header函数和处理其他的事有帮助,例如知道为何php画图后要在输出前先发一个header函数,为何session要放在程序最前面,php怎样输出xml,怎样让浏览器缓存或不缓存某个页面……诸如此类

至于javascript也能发送cookie,那个是跟php发cookie无关的,但因为都是cookie,javascript发送的在下一次请求php也能读取,这就引申一个话题,任何其他软件或程序写的cookie,服务器端也能读,这个到讨论其他话题再研究吧
陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
PHP與Python:了解差異PHP與Python:了解差異Apr 11, 2025 am 12:15 AM

PHP和Python各有優勢,選擇應基於項目需求。 1.PHP適合web開發,語法簡單,執行效率高。 2.Python適用於數據科學和機器學習,語法簡潔,庫豐富。

php:死亡還是簡單地適應?php:死亡還是簡單地適應?Apr 11, 2025 am 12:13 AM

PHP不是在消亡,而是在不斷適應和進化。 1)PHP從1994年起經歷多次版本迭代,適應新技術趨勢。 2)目前廣泛應用於電子商務、內容管理系統等領域。 3)PHP8引入JIT編譯器等功能,提升性能和現代化。 4)使用OPcache和遵循PSR-12標準可優化性能和代碼質量。

PHP的未來:改編和創新PHP的未來:改編和創新Apr 11, 2025 am 12:01 AM

PHP的未來將通過適應新技術趨勢和引入創新特性來實現:1)適應云計算、容器化和微服務架構,支持Docker和Kubernetes;2)引入JIT編譯器和枚舉類型,提升性能和數據處理效率;3)持續優化性能和推廣最佳實踐。

您什麼時候使用特質與PHP中的抽像類或接口?您什麼時候使用特質與PHP中的抽像類或接口?Apr 10, 2025 am 09:39 AM

在PHP中,trait適用於需要方法復用但不適合使用繼承的情況。 1)trait允許在類中復用方法,避免多重繼承複雜性。 2)使用trait時需注意方法衝突,可通過insteadof和as關鍵字解決。 3)應避免過度使用trait,保持其單一職責,以優化性能和提高代碼可維護性。

什麼是依賴性注入容器(DIC),為什麼在PHP中使用一個?什麼是依賴性注入容器(DIC),為什麼在PHP中使用一個?Apr 10, 2025 am 09:38 AM

依賴注入容器(DIC)是一種管理和提供對象依賴關係的工具,用於PHP項目中。 DIC的主要好處包括:1.解耦,使組件獨立,代碼易維護和測試;2.靈活性,易替換或修改依賴關係;3.可測試性,方便注入mock對象進行單元測試。

與常規PHP陣列相比,解釋SPL SplfixedArray及其性能特徵。與常規PHP陣列相比,解釋SPL SplfixedArray及其性能特徵。Apr 10, 2025 am 09:37 AM

SplFixedArray在PHP中是一種固定大小的數組,適用於需要高性能和低內存使用量的場景。 1)它在創建時需指定大小,避免動態調整帶來的開銷。 2)基於C語言數組,直接操作內存,訪問速度快。 3)適合大規模數據處理和內存敏感環境,但需謹慎使用,因其大小固定。

PHP如何安全地上載文件?PHP如何安全地上載文件?Apr 10, 2025 am 09:37 AM

PHP通過$\_FILES變量處理文件上傳,確保安全性的方法包括:1.檢查上傳錯誤,2.驗證文件類型和大小,3.防止文件覆蓋,4.移動文件到永久存儲位置。

什麼是無效的合併操作員(??)和無效分配運算符(?? =)?什麼是無效的合併操作員(??)和無效分配運算符(?? =)?Apr 10, 2025 am 09:33 AM

JavaScript中處理空值可以使用NullCoalescingOperator(??)和NullCoalescingAssignmentOperator(??=)。 1.??返回第一個非null或非undefined的操作數。 2.??=將變量賦值為右操作數的值,但前提是該變量為null或undefined。這些操作符簡化了代碼邏輯,提高了可讀性和性能。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
3 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中