php获取http状态码程序代码
经常需要判断文件是否可以访问,可以通过http状态码判别,200为正常访问,404为找不到该页面,代码如下
代码如下 | 复制代码 |
<?php
$address = gethostbyname($host); socket_write($socket, $request, strlen($request)); $response = split(' ', socket_read($socket, 1024)); |
另一种获取http状态码的办法
使用curl需要在php.ini中设置启用才行 >< Windows的服务器中,打开php.ini,找到:
extension=php_curl.dll
去掉前面的注释既可 。
代码如下 | 复制代码 |
$curl = curl_init(); $url=’http://www.111cn.net’; curl_setopt($curl, CURLOPT_URL, $url); //设置URL curl_setopt($curl, CURLOPT_HEADER, 1); //获取Header curl_setopt($curl,CURLOPT_NOBODY,true); //Body就不要了吧,我们只是需要Head curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //数据存到成字符串吧,别给我直接输出到屏幕了 $data = curl_exec($curl); //开始执行啦~ echo curl_getinfo($curl,CURLINFO_HTTP_CODE); //我知道HTTPSTAT码哦~ curl_close($curl); //用完记得关掉他 |
一些状态代码
1xx:请求收到,继续处理
2xx:操作成功收到,分析、接受
3xx:完成此请求必须进一步处理
4xx:请求包含一个错误语法或不能完成
5xx:服务器执行一个完全有效请求失败
100——客户必须继续发出请求
101——客户要求服务器根据请求转换HTTP协议版本
200——交易成功
201——提示知道新文件的URL
202——接受和处理、但处理未完成
203——返回信息不确定或不完整
204——请求收到,但返回信息为空
205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
206——服务器已经完成了部分用户的GET请求
300——请求的资源可在多处得到
301——删除请求数据
302——在其他地址发现了请求数据
303——建议客户访问其他URL或访问方式
304——客户端已经执行了GET,但文件未变化
305——请求的资源必须从服务器指定的地址得到
306——前一版本HTTP中使用的代码,现行版本中不再使用
307——申明请求的资源临时性删除
400——错误请求,如语法错误
401——请求授权失败
402——保留有效ChargeTo头响应
403——请求不允许
404——没有发现文件、查询或URl
405——用户在Request-Line字段定义的方法不允许
406——根据用户发送的Accept拖,请求资源不可访问
407——类似401,用户必须首先在代理服务器上得到授权
408——客户端没有在用户指定的饿时间内完成请求
409——对当前资源状态,请求不能完成
410——服务器上不再有此资源且无进一步的参考地址
411——服务器拒绝用户定义的Content-Length属性请求
412——一个或多个请求头字段在当前请求中错误
413——请求的资源大于服务器允许的大小
414——请求的资源URL长于服务器允许的长度
415——请求资源不支持请求项目格式
416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求
也不包含If-Range请求头字段
417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求
500——服务器产生内部错误
501——服务器不支持请求的函数
502——服务器暂时不可用,有时是为了防止发生系统过载
503——服务器过载或暂停维修
504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
505——服务器不支持或拒绝支请求头中指定的HTTP版本
CodeIgniter 是一套给 PHP 网站开发者使用的应用程序开发框架和工具包。它提供一套丰富的标准库以及简单的接口和逻辑结构,其目的是使开发人员更快速地进行项目开发。使用 CodeIgniter 可以减少代码的编写量,并将你的精力投入到项目的创造性开发上。
CodeIgniter是由Ellislab公司的CEO RickEllis开发的。其核心框架是为这个程序特别编写的,而其他很多类库、辅助函数和子系统则来自于RickEllis和PaulBurdick编写的内容管理系统ExpressionEngine。来自RubyonRails的灵感启发我们创造了一个PHP框架,并且将框架的概念引入到网络社区的一般意识中。
在这篇文章中,我将介绍如何使用CodeIgniter框架、开发一个登录认证和注册系统。
创建一个数据库来存储用户信息
下表将存储在MySQL用户相关的所有信息。它仅获得一些基本的信息,你可以随意延长。
代码如下 | 复制代码 |
|
创建用户登录表格
由于这将是简单的HTML,我不会在这里写的代码。确保,表单动作应指向用户/注册路线,这样的请求到达用户的控制器,然后执行功能“注册”
创建表格后,我们需要写“模型”逻辑,这样我们就可以存储到数据库中的用户注册信息。我要去,到创建方法create_user,里面的“用户”模式。的create_user方法将下面的代码:
代码如下 | 复制代码 |
function create_user(){ $first_name = $this->input->post('first_name'); $last_name = $this->input->post('last_name'); $username = $this->input->post('user_login'); $eml = $this->input->post('email_address'); $clear_pass = $this->input->post('password'); $member_data = array( 'user_login' => $username, 'user_pass' => md5($clear_pass), 'user_email' => $eml, 'first_name' => $first_name, 'last_name' => $last_name ); $insert = $this->db->insert('ci_users', $member_data); return $insert; } |
现在我们有了模型和视图准备,我们需要写这两个控制器逻辑连接,使我们能够成功地渲染登记表和存储数据。我们也打算把验证逻辑,使用CodeIgniter的内置的验证库,里面的控制器本身。
我假设您知道如何创建在CI的控制器,所以我将讨论控制方法,其中最重要的部分。
首先,讨论,让我们使用下面这行代码加载表单验证库。位于里面的application / config / autoload.php autoload.php通过指定其名称,可以自动加载这个库。
代码如下 | 复制代码 |
|
现在来验证,可以使用下面这行代码:
代码如下 | 复制代码 |
PHP $this->form_validation->set_rules('first_name', 'Name', 'trim|required'); |
哪里的FIRST_NAME是HTML元素的名称,名称是人类可读元素名称,修剪|所需元素的验证规则。
您可以指定其他各种规则,你可以使用回调方法定义自定义验证规则。如需更多信息,验证,检查文档。
要检查如果验证成功,我们使用下面的代码块:
PHP
代码如下 | 复制代码 |
if($this->form_validation->run() == FALSE) { //not validated - reload the view and display errors $this->load->view('signup'); } else { $this->load->database();//load users_mode defined in modes/uses_model.php $this->load->model('users_model'); //create user $this->users_model->create_user(); } |
让我们回顾一下上面的代码片断。我们首先验证表单验证,使用方法$this->form_validation->run() 。如果返回true,那么我们是很好的。否则,我们在视图中显示错误。如果一切都正确输入,我们应该创建新的用户。请注意,我手动创建数据库连接。
如果您的应用程序会更经常地使用数据库,那么你就可以加载库通过指定到autoload.php文件。最后,我们的模型加载并调用我们上面所讨论的create_user。
这应该是你需要做的所有注册一个新用户在您的Web应用程序。
创建一个登录过程
下一步,我们应该提供一种方法,在这些注册用户登录。的过程是相同的。我们创建视图,然后模型和控制器内部终于做加工。
消毒后的用户输入(如上述),在模型中,我们可以查询数据库,用下面的方法:
PHP
代码如下 | 复制代码 |
function validate_user() { $this->db->select('*'); $this->db->limit(1); $this->db->where('user_email',$user_login); $this->db->where('user_pass', md5($password)); $this->db->from('ci_users'); if($query->num_rows == 1) { $data = $query->row_array(); if($data['user_login'] == $user_login) return $data; else return false; } } |
上面的方法是简单易懂。我已经查询拆分,使其更清晰。如果行数是1,那么我们验证用户,否则我们不知道。我们返回完整的用户信息的控制器,我们要建立的会话信息。让我们来看看:
代码如下 | 复制代码 |
if(is_array($user) && !empty($user)) { $user_data = array('is_logged_in' => 1,'user_email' => $user['user_email']); //set the session information $this->session->set_userdata($user_data); //write code here to show the success message redirect(site_url('dashboard')); exit(); } |
我已经重定向数据到仪表板,在这里我们要告诉用户相关信息。只有合法的用户被允许进入,其余全部被重定向到登录页面。
创建一个注销过程
最后,我们需要一个用户注销的方式。通过调用内置的会议库sess_destroy()方法,我们可以摧毁当前会话。
结论
就是这样。使用上面的方法,你可以设置一个登录和注册系统使用CodeIgniter。以此作为基础,根据需要,该系统扩展
php默认有个函数similar_text()用于计算字符串之间的相似度,该函数也可以计算两个字符串的相似度(以百分比计)。不过这个函数感觉对中文计算很不准确比如:
代码如下 | 复制代码 |
echo similar_text("吉林禽业公司火灾已致112人遇难","吉林宝源丰禽业公司火灾已致112人遇难"); |
这两个新闻标题其实都是一样的,如果使用similar_text()相似对结果为:42,即只相似42%,所以这个感觉很不靠谱,今天刚好收集到一段PHP代码也是用于比较两个字符串的相似度,直接贴出代码:
代码如下 | 复制代码 |
<?php $lcs = new LCS(); |
还有一种办法就是利用分词系统我们把标题分词,然后再进行会更准确一些哦。
file_get_contents() 远程文件获取函数,用来获取远程页面内容
preg_match_all()进行全局正则表达式匹配,匹配多次,用于匹配列表
preg_match ()进行正则表达式匹配,匹配一次,用于匹配终端
preg_replace ()进行正则表达式替换,用于过滤终端
具体步骤
Step 1 获取单页列表 和 单篇文章内容
在批量采集列表和内容之前,我们先将网站的单页列表和单篇文章的内容采集作为测试正则表达式对错。
列表页采集文章的链接地址:
代码如下 | 复制代码 |
<?php |
单篇文章的采集:
代码如下 | 复制代码 |
<?php |
分组排序
代码如下 | 复制代码 |
<?php function arr_group_sort($new){ $c=arr_group_sort($new); |
其它的二维数组排序的方法
代码如下 | 复制代码 |
function array_sort($arr,$keys,$type='asc'){ $keysvalue = $new_array = array(); foreach ($arr as $k=>$v){ $keysvalue[$k] = $v[$keys]; } if($type == 'asc'){ asort($keysvalue); }else{ arsort($keysvalue); } reset($keysvalue); foreach ($keysvalue as $k=>$v){ $new_array[$k] = $arr[$k]; } return $new_array; } |
它可以对二维数组按照指定的键值进行排序,也可以指定升序或降序排序法(默认为升序),用法示例:
代码如下 | 复制代码 |
$array = array( $ShoppingList = array_sort($array,'price'); |
相关文章
- 下面本文章来给大家介绍在php中成员变量的一些对比了,文章举了四个例子在这例子中分别对不同成员变量进行测试与获取操作,下面一起来看看。 有如下4个代码示例,你认...2016-11-25
- php 获取用户IP与IE信息程序 function onlineip() { global $_SERVER; if(getenv('HTTP_CLIENT_IP')) { $onlineip = getenv('HTTP_CLIENT_IP');...2016-11-25
- php获取一个文件夹的mtime的程序了,这个就是时间问题了,对于这个问题我们来看小编整理的几个例子,具体的操作例子如下所示。 php很容易获取到一个文件夹的mtime,可以...2016-11-25
- 有一种方法,可以不打开网站而直接查看到这个网站的源代码.. 这样可以有效地防止误入恶意网站... 在浏览器地址栏输入: view-source:http://...2016-09-20
- 获取网站icon,常用最简单的方法就是通过website/favicon.ico来获取,不过由于很多网站都是在页面里面设置favicon,所以此方法很多情况都不可用。 更好的办法是通过google提供的服务来实现:http://www.google.com/s2/favi...2014-06-07
- <?php require('path.inc.php'); header('content-Type: text/html; charset=utf-8'); $borough_id = intval($_GET['id']); if(!$borough_id){ echo ' ...2016-11-25
- 本文实例讲述了JS基于Mootools实现的个性菜单效果代码。分享给大家供大家参考,具体如下:这里演示基于Mootools做的带动画的垂直型菜单,是一个初学者写的,用来学习Mootools的使用有帮助,下载时请注意要将外部引用的mootools...2015-10-23
- 主要功能:获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 :$(window).width(); 获取页面的文档高度 $(document).height(); 获取页面的文档宽度 :$(document).width();...2015-10-21
- 本文实例讲述了JS实现自定义简单网页软键盘效果。分享给大家供大家参考,具体如下:这是一款自定义的简单点的网页软键盘,没有使用任何控件,仅是为了练习JavaScript编写水平,安全性方面没有过多考虑,有顾虑的可以不用,目的是学...2015-11-08
- 本文实例讲述了JS+CSS实现分类动态选择及移动功能效果代码。分享给大家供大家参考,具体如下:这是一个类似选项卡功能的选择插件,与普通的TAb区别是加入了动画效果,多用于商品类网站,用作商品分类功能,不过其它网站也可以用,...2015-10-21
- php 取除连续空格与换行代码,这些我们都用到str_replace与正则函数 第一种: $content=str_replace("n","",$content); echo $content; 第二种: $content=preg_replac...2016-11-25
- php简单用户登陆程序代码 这些教程很对初学者来讲是很有用的哦,这款就下面这一点点代码了哦。 <center> <p> </p> <p> </p> <form name="form1...2016-11-25
- 公司一些wordpress网站由于下载的插件存在恶意代码,导致整个服务器所有网站PHP文件都存在恶意代码,就写了个简单的脚本清除。恶意代码示例...2015-10-23
- jquery中jquery.offset().top / left用于获取div距离窗口的距离,jquery.position().top / left 用于获取距离父级div的距离(必须是绝对定位的div)。 (1)先介绍jquery.offset().top / left css: 复制代码 代码如下: *{ mar...2013-10-13
- 本文实例讲述了JS实现双击屏幕滚动效果代码。分享给大家供大家参考,具体如下:这里演示双击滚屏效果代码的实现方法,不知道有觉得有用处的没,现在网上还有很多还在用这个特效的呢,代码分享给大家吧。运行效果截图如下:在线演...2015-10-30
- 1、先讲讲JQuery的概念,JQuery首先是由一个 America 的叫什么 John Resig的人创建的,后来又很多的JS高手也加入了这个团队。其实 JQuery是一个JavaScript的类库,这个类库集合了很多功能方法,利用类库你可以用简单的一些代...2014-05-31
- 其实挺简单的就是if(navigator.userAgent.indexOf('UCBrowser') > -1) {alert("uc浏览器");}else{//不是uc浏览器执行的操作}如果想测试某个浏览器的特征可以通过如下方法获取JS获取浏览器信息 浏览器代码名称:navigator...2015-11-08
- 一、日期减去天数等于第二个日期function cc(dd,dadd){//可以加上错误处理var a = new Date(dd)a = a.valueOf()a = a - dadd * 24 * 60 * 60 * 1000a = new Date(a)alert(a.getFullYear() + "年" + (a.getMonth() +...2015-11-08
- 简单的php获取linux服务器状态的代码,不多说-直接上函数:复制代码 代码如下:function get_used_status(){ $fp = popen('top -b -n 2 | grep -E "^(Cpu|Mem|Tasks)"',"r");//获取某一时刻系统cpu和内存使用情况 $rs =...2014-05-31
- 微信支付,即便交了保证金,你还是处理测试阶段,不能正式发布。必须到你通过程序测试提交订单、发货通知等数据到微信的系统中,才能申请发布。然后,因为在微信中是通过JS方式调用API,必须在微信后台设置支付授权目录,而且要到...2014-05-31