作者HuangJC (吹笛牧童)
看板PHP
标题Re: [请益] 前往页面的问题
时间Sat Jul 26 08:37:15 2008
: 推 HuangJC :简单说,header 是产生一些资料给 Client 看,并没有 07/26 02:46
: → HuangJC :Server 自己想跳往哪个网页这种 JUMP 指令;如果有 07/26 02:47
: → HuangJC :JUMP,那也不必 exit 了;header 给 Client 看,exit 给 07/26 02:47
: → HuangJC :Server 看;而 Client 看了特定 header 是会想JUMP.. 07/26 02:48
: → HuangJC :广义的说,setcookie 也动手脚在 header;而 header 名 07/26 02:48
: → HuangJC :为 header,所以在其上就不能先有其他资料 07/26 02:49
: 推 bigair :可参照这篇 http://0rz.tw/ec4uz 良好的习惯是重要的 07/26 02:51
: 推 HuangJC :那个网址正好在争论题目 XD 07/26 08:13
该网址题目的争论,到最後还是没改好?
其实主要问题是
php 是动态产生网页的工具
而网页是一串文字
事实上它在此是担任文字处理
也就是说,根本不存在叫 server redirect 的指令
它的实际流程是:
1。php 产生文字,该文字内含 redirect 要求,存放在网页 header 内
2。Client 端浏览器,比如 ie,收到 redirect 要求,便会去要求查看新的网页
3。Client 端向 Server,比如 Apache,要求新网页
因此,redirect 指令并不是向 server 直接发出
而是绕一圈由 client 发出的
我们如果以 multithread 的观点来说,向 client 发出的要求送达
并不代表 server 端的程式必需同时被截止;server 端是处理完一页 php 为止
而 client 端如果支援些什麽转向,拦截,就可以把这个 redirect 毁掉了
(比如,我认为这是个病毒网址,我装的扫毒程式提出拦截呢?)
而这样的问题其实未来可能创出一个 redirect 函式,内含 exit 就解掉了
programmer 大可真的以为有要求 server 端直接转址的 php 指令存在
直到哪天发生灵异现象再来考古
比如前面我说的,setcookie 现在是独立指令
但它内部是靠修改 header 完成
所以在旧版 php 中没有 setcookie,但在 phpbb 中我见到的范例是
header('cookie:xxxxxxx'); //详细格式我忘了,总之 cookie 也是用 header 做的
一面网页的格式可能是这样
<header>
<body>
body 就是我们常看到的 html 内文,而 header 就包了一堆 get/post method
在传递变数;它非得在前面不可
要说 php 特别支援网页?这里或许是个证据
我不用懂这些考古的格式,我只要说麻烦帮我摆 cookie 就好了
如果我真的有兴趣用 C 来写动态网页
那我就必需把整份文件,header 连同 body 全部自己产生
但目前我们看 php 程式 <?php xxxxx ?> 这样的格式里,并没有 header 在最前面
而是有 header 在内文,有指令可用;但又限制这指令必需在一页的文字中最早出现
所谓 header 在最前面,而且有规定格式在做 get/post method,这好像就是 cgi 了。。
如果 php 再进步下去,难保以後不会放宽 header 出现时机
因为 php 是 compile 完一页再执行
它大可设计成只要发现 header,就把该行摆到最前面去
与其 warning programmer 你这行不是摆最前面,不如就硬帮你摆了 :p
代价大概是一页产出必需先摆 buffer,全产出完再送往 client 吧。。
程式语言帮我们做愈多,我们需要知道细节就愈少
但碰到灵异现象时也更难应变了
回头看到该网址,这当然不是 header 放在函式与否的问题
不放函式一样有问题
直接说是探讨 header 机制就好了
所以如果我一边叫用 setcookie 指令
一边又因为自己的了解用 header 去形成 setcookie 互摃会怎样?
那当然可以打乱自己的程式
另外,前面有人提及如何送变数至另一个网页
解答之一是用 form,再用 java 自己按下去
那其实放在 header 应该也办得到?
get/post 一个是把资料放在网址中,有安全性(易伪造)的问题
一个是放在 header 中,我前文应该是有写错了
只是现在急着出门。。
(闪)有正妹在等我 :P
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.219.65.16