php能实现模拟登陆吗
这种模拟登陆其实很简单,php的话主要用curl来实现。仔细研究一下你要抓的站具体是怎么实现用户登录的,可以用wireshark或者burpsuite(建议用后者)抓包看看整个过程都有那几次请求,每次请求都发送了哪些数据,构造好发给他就可以实现登录了。之后获取个人信息就很容易了,找找php解析html库,或者最简单粗暴的就是字符串截取函数加正则表达式,把你想要的数据提取出来就好了。对于你给出的这种验证码属于非常容易识别的验证码了,基本的识别原理参看使用Canvas进行验证码识别。当然比较蛋疼的问题就是网页编码问题,经常爬过来全是乱码,网上找找看转码的方法,都试一下,这是一门玄学,能不能成功看你人品和耐心吧。
form表单中的enctype=""multipart/form-data""什么意思
enctype就是encodetype翻译成中文就是编码类型的意思!multipart/form-data是指表单数据有多部分构成:既有文本数据,又有文件等二进制数据的意思。 另外需要注意的是:默认情况下,enctype的值是application/x-www-form-urlencoded,不能用于文件上传;只有使用了multipart/form-data,才能完整的传递文件数据。 对于文件上传工作,其实是在前端完成的,即,在php,java等语言处理之前,文件其实就已经被上传到服务器了,服务器脚本语言的作用不过是将这些临时文件持久化而已!
PHP使用curl函数发送Post请求的注意事项
对于一个初学者来说,接口可能觉得有些高大上,但是了解后其实比较简单的。
从简单方面理解,你可以理解成get请求或者post请求,只不过是通过curl的模块从PHP层模仿需要从前端提交的get或者post表单而已,本来get或者post的提交,常见的都是通过前端的form表单去提交,但是php写接口,其实就是根据curl模块区模拟而已。
另外如果是对接其他文档的话,你需要仔细的阅读文档,因为写接口的时候,接口需求以及处理加密方式 对于阅读能力差的人来说 很不友好,比如需要加密token,那么这加密该如何加密?怎么加密?需要衔接上才可以。
举例子:A平台 对接 B平台的接口,那么请求接口的时候,就得遵守B平台梳理出来的接口规则,例如加密方式? 请求方式?以及参数类型等等...
php获取不到post方式提交的数据
你把表单form的提交方法method从POST换成GET,你就能在URL清楚地看到每次提交的内容了,这样更方便新手理解.不过你也可以在浏览器提供的F12开发者工具的网络里查看到请求的GET/POST/请求头等信息.
PHP是HTML预处理器,浏览器首次加载test.php页面,服务器PHP其实并没有拿到用户提交的数据,也就是首次访问生成的HTML页面里的内联JS代码里的alert()是没有用户数据的,在你提交表单后才有,所以会出现你说的"页面JS总是获取到前一次请求的值".
最后再说个安全性问题,你的代码中,$_POST['one']是一个用户输出的数据,在你把用户输入的数据输出到页面上时,需要注意防御XSS注入,防御方法如下:
如果你是把用户输入的数据输出到
HTML上下文
中,应该这样:如果你是把用户输入的数据输出到
JS上下文
<script></script>中,应该这样:不过个人还是建议分离JS跟PHP,也就是PHP不要直接输出内容赋值给JS,这样JS代码可以单独放到一个JS文件里.
JS可以这样拿到传统表单提交里的数据并进行AJAX提交,以jQuery为例,将传统form表单提交轻松改造为AJAX提交:
可见HTML传统表单并不需要修改,JS代码里也没有混有PHP代码,编程逻辑就清晰多了.
还没有评论,来说两句吧...