php 判断是否为ajax请求

 更新时间:2016年11月25日 15:07  点击:1614
大多数的 JavaScript 框架如 jquery,Mootools 等,在发出 Ajax 请求时,都会发送额外的 HTTP_X_REQUESTED_WITH 头部信息,头当他们一个ajax请求,因此你可以在服务器端侦测到 Ajax 请求

1,   通过传递_GET参数的方法简单实现网页请求的判断。

url上这么传递:*******.php?ajax

php这么判断:

if(isset($_GET['ajax'])) {

...这是一个ajax请求,然后...

}

else {

...这不是一个ajax请求,然后...

}

这种实现方法很差劲,相当容易容易容易伪造。判断和不判断么有任何区别。
所以又出来一种自认为很科学的处理方式,这种方式确实有一定的学习价值。


Php获取系统变量中的xmlHttpRequest判读。

首先你必须使用jquery,Js发送ajax请求,通过jquery发送的$.ajax, $.get, or $.post方法请求网页内容时,它会向服务器传递一个HTTP_X_REQUESTED_WITH的参数,这个参数的值是xmlHttpRequest。

Js 代码:

 代码如下 复制代码

beforeSend : function (XMLHttpRequest) {

    XMLHttpRequest.setRequestHeader("X-Requested-With","XMLHttpRequest");

};

参数名X-Requested-With,参数值XMLHttpRequest,你可以任意定义。Php取得时候要在参数名前面加上大写的http字样

 

 代码如下 复制代码

if(!emptyempty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
//If AJAX Request Then
}else{
//something else
}

1,  如果

你的jquery请求是通过iframe打开网页的,那么HTTP_X_REQUESTED_WITH参数不会被传递,也就是说你没有办法判断请求的类型。

2,  IE5,IE6老版本的浏览器总中$.ajax, $.get, or $.post方法不会自动发送HTTP_X_REQUESTED_WITH的参数到头部信息,因为php中也是无法获取参数进行判断。除非你自己构造XMLHttpRequest对象出来,然后再发送给php脚本,相当于用最原始的js实现ajax功能。这样做,jquery框架本来封装好的ajax就失去意义啦

一个初学者写的一款php分页哦,共 20 条 上一页 下一页这种效果,有需要分页的朋友可以参考一下,
 代码如下 复制代码

<?php
  include("file.php");
  $pagesize=5;
  $url=$_SERVER[REQUEST_URI];
  $url=parse_url($url);
  $url=$url[path];


  $a=mysql_query("select * from message");
  $b=mysql_num_rows($a);
   if($_GET[page]){
       $pagevel=$_GET[page];
       $page=($pagevel-1)*pagesize;
       $page.=',';
   }else{
       $page=1;   //这里加个未获取到值的处理
   }

   if($b>$pagesize){
       if($pagevel<=1) $pagevel=1;
       echo "共 $b 条 <a herf=$url?page="($pagevel-1)">上一页</a>" .
               " <a herf=$url?page="($pagevel+1)">下一页</a>";

   }
   $sql="select * from message limit $page ,$pagesize ";
   $query=mysql_query($sql);
   while($row=mysql_fetch_array($query)){
   echo "<hr><br>"."$row[title]"."$row[context]";

  }

?>

介绍了php开发中常用的字符串操作函数,主要是字符查找函数,有需要的朋友可以参考一下
 代码如下 复制代码

 

<?php
//strstr:从左向右查找  返回值:字符串
//strrchr:从右向左查找 返回值:字符串
//strpos:从左向右查找  返回值:整型,假如查找的字符串不存在,则返回空
//strrpos:从右向左查找 返回值:整型
$str="天高任鸟飞,海阔凭鱼跃";//strstr:从左向右查找  strrchr:从右向左查找
echo "原始字符串:".$str."<br />";
echo "用strstr函数搜索“,”的返回结果:".strstr($str,",")."<br>";
echo "用strstr函数搜索“鸟飞”的返回结果:".strstr($str,"鸟飞")."<br>";

$str1="I have a great dream.";
echo "原始字符串:".$str1."<br />";
echo "用strrchr函数搜索“e”的返回结果:".strrchr($str1,"e")."<br>";
echo "用strrchr函数搜索“ea”的返回结果:".strrchr($str1,"ve")."<br>";

$str2="I am an abstract about abroad.";
echo "原始字符串为:".$str2."<br>";
echo "ab在字符串中的第一次出现位置为:".strpos($str2,"ab")."<br>";
echo "ab在字符串中的第一次出现位置为:".strpos($str2,"am")."<br>";
echo "abcd在字符串中第一次出现的位置为:".strpos($str2,"aman")."<br>";

$str3="I am is wang hui.";
echo "原始字符串为:".$str3."<br>";
echo "I在字符串中的最后一次出现位置为:".strrpos($str3,"I")."<br>";
echo "an在字符串中的最后一次出现位置为:".strrpos($str3,"an")."<br>";
echo "i在字符串中最后一次出现的位置为:".strrpos($str3,"i");

?>

 

如果$a和$b指向同一内存地址,自己了不太清楚不过网站找有需要的朋友参考一下。
 代码如下 复制代码

<?php
$a='CC';
$b=$a;//$a和$b指向同一内存地址
$a='DD';
echo $b;
/*
php中对于地址的指向(类似指针)功能不是由用户自己来实现的,
是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,
就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。
当$a='DD';
由于$a与$b所指向的内存的数据要重新写一次了,此时Zend核心会自动判断
自动为$b生产一个$a的数据拷贝,重新申请一块内存进行存储。
* */

echo '<hr>';
$c='ABC';
$d=&$c;//$b指向$a的内存地址,传地址赋值
$d='E';
echo $c;
/**
CC
--------------------------------------------------------------------------------
E
* */
?>

<?php
//函数的引用返回
function &test()
{
static $b=0;//申明一个静态变量
$b=$b+1;
echo '$b='.$b;
echo '<br>';
return $b;
}
$a=test();
echo '$a='.$a;//这里不是函数的引用返回,跟普通的函数调用没有区别
$a=&test();  //这种方式才是函数的引用返回。
//至于什么是引用返回呢(PHP手册上说:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。)
//用在这里意思就是test()被绑定在$a上了。
echo '$a='.$a;
$a=6;
test();//这条语句会输出$b的值 为7
echo '$a='.$a;
/*
$b=1
$a=1$b=2
$a=2$b=7
$a=7
* */
?>

<?php
//引用传递
function printArray(&$arr){
     //echo count($arr);
     array_pop($arr);
     echo count($arr);

}
//值传递
function printArray2($arr){
     //echo count($arr);
     array_pop($arr);
     echo count($arr);
}
$a=array(1,2,3);
$b=$a;
//$b=&$a;
printArray($a);
print_r($b);
print_r($a);
echo '<hr>';
printArray($a);
print_r($b);
print_r($a);
/**
  2Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 [1] => 2 )
--------------------------------------------------------------------------------
1Array ( [0] => 1 [1] => 2 [2] => 3 ) Array ( [0] => 1 )
  * */
?>
<?php
//对象的引用
class a{
var $name="ABC";
}
$b=new a;
$c=$b;
echo '$b->name='.$b->name;//这里输出ABC
echo '<br>';
echo '$c->name='.$c->name;//这里输出ABC
echo '<br>';
$b->name="DEF";
echo '$b->name='.$b->name;
echo '<br>';
echo '$c->name='.$c->name;
echo '<hr>';
/*
在PHP5中 对象的复制 是通过引用来实现的。
上列中$b=new a; $c=$b; 其实等效于$b=new a; $c=&$b;
PHP5中默认就是通过引用来调用对象,
但有时你可能想建立一个对象的副本,
并希望原来的对象的改变不影响到副本 .
为了这样的目的,PHP定义了一个特殊的方法,称为__clone.
* */
$x=new a;
$y=clone $x;
$x->name='XXX';
echo '$x->name='.$x->name;
echo '<br>';
echo '$y->name='.$y->name;

/*
  $b->name=ABC
$c->name=ABC
$b->name=DEF
$c->name=DEF
--------------------------------------------------------------------------------
$x->name=XXX
$y->name=ABC
  * */
?>

这是一款用户注册的功能,可以实现简单的用户由创建数据库到注册成功,有需要的朋友可以参考一下。
 代码如下 复制代码

<?php教程
$DB_HOST = "localhost";  //数据库教程主机位置
$DB_LOGIN = "root";  //数据库的使用账号
$DB_PASSWORD = "admin";  //数据库的使用密码
$DB_NAME = "flag"; //数据库名称

$conn= mysql教程_connect($DB_HOST, $DB_LOGIN, $DB_PASSWORD);
mysql_select_db($DB_NAME);
?>


************************222222

<?php
functiondb_query($sqlstr) {returnmysql_query($sqlstr);}
functiondb_num_rows($res) {returnmysql_num_rows($res);}
functiondb_fetch_array($res) {returnmysql_fetch_array($res);}
functiondb_fetch_object($res) {returnmysql_fetch_object($res);}
functiondb_data_seek($res,$num){return mysql_data_seek($res,$num);}
functiondb_insert_id($res) {returnmysql_insert_id($res);}
?>


 

**************************333333333333

<?
include("registry_up.htm") // 导入网页上半部
?>
<script>
functioncheck()
{
if(document.regstep1.username.value== "")
{
alert("未输入账号");
returnfalse;
}
if(document.regstep1.userpass.value== "")
{
alert("请勿使用空白密码");
returnfalse;
}
if(document.regstep1.userpass.value!= document.regstep1.userpass2.value)
{
alert("两次输入的密码不相同");
returnfalse;
}

document.regstep1.submit();

}
</script>

<script>
<!--------- 打开会员账号重复性检查功能页面的函数 BEGIN---------->
function Checkname(){
var Name = document.regstep1.username.value;
window.open("uniquecheck.php?name="+Name,"Check","width=300,height=10,status=0,scrollbars=0,resizable=1,menubar=0,toolbar=0,location=0");
}
<!---------- 打开会员账号重复性检查功能页面的函数 END----------->
</script>

<form name="regstep1"method="post" action="registry_do.php">
<?php /*?><inputtype="submit" name="username"value="<?=$username?>">
<inputtype="submit" name="userpass"value="<?=$userpass?>">
<inputtype="submit" name="pass_rem"value="<?=$pass_rem?>">
<inputtype="submit" name="pass_ans"value="<?=$pass_ans?>">
<?php */?>

<BR>
<table width="446" border="0"bordercolor="#000000" align="center"cellspacing="0">
<tr>
<td>
<table width="440" border="0"height="220" align="center" bgcolor="#EEEEEE" cellspacing="0"cellpadding="0">
<tr>
<td colspan="2" bgcolor="#FFFFFF">
<divalign="center"><img src="images/1.GIF"width="298" height="41"></div>
</td>
</tr>
<tr>
<td>
  <div align="center">账   号</div>
</td>
<td height="18">
<divalign="center">
<input type="text"name="username" size="15">
<inputonClick="网页特效:Checkname()" type=button value="检查账号"name="button">
  </div>
</td>
</tr>

<tr>
<td bgcolor="#FFFFFF">
<divalign="center">密   码</div>
</td>
<td height="6" bgcolor="#FFFFFF">
<div align="center">
<inputtype="password" name="userpass" size="20">
</div>
</td>
</tr>
<tr>
<td>
<divalign="center">密 码 确 认</div>
</td>
<td height="2">
<divalign="center">
<inputtype="password" name="userpass2" size="20">
</div>
</td>
</tr>
<tr>
<td bgcolor="#FFFFFF">
<divalign="center">密 码 提 示</div>
</td>
<td height="2" bgcolor="#FFFFFF">
<divalign="center">
<selectname="pass_rem">
<optionvalue="0">您宠物的名字</option>
<optionvalue="1">您最想去的国家</option>
  <optionvalue="2">您最喜欢的运动</option>
<optionvalue="3">您最讨厌的食物</option>
<optionvalue="4">您在家最常做什么</option>
<optionvalue="5">您最爱看的电影</option>
</select>
</div>
  </td>
</tr>
<tr>
<td>
<divalign="center">答   案</div>
</td>
<td height="2">
<divalign="center">
<input type="text"name="pass_ans" size="20">
</div>
</td>
</tr>
<tr>
<td colspan="2" bgcolor="#FFFFFF">
<divalign="center">
<inputtype="reset" name="reset" value="清除重填">
<inputtype="button" name="Submit" value="提交"onClick="check();">
</div>
</td>
</tr>
</table>
</td>
</tr>
</table>
</form>

<?
include("registry_down.htm") // 导入网页下半部
?>

******************************44444444444

<?
include("db_conn.php");
include("db_func.php");

//增加会员账号/密码 BEGIN
$SQLStrUser= "INSERT INTO member (m_username, m_userpass, m_pass_rem, m_pass_ans)";
$SQLStrUser.= " VALUES('$username', '$userpass', '$pass_rem', '$pass_ans') ";
db_query($SQLStrUser);
//增加会员账号及密码 END


?>

<script>
alert("<?php echo "注册完成"; ?>");
  location.href = "www.111cn.net";
</script>

 

****************************55555555555555555


<?
include("db_conn.php");
include("db_func.php");

//查询注册账号名称是否包含不雅字词 BEGIN
$SQLStr= "SELECT * FROM nogood WHERE n_name LIKE '%$username%'";
$res= db_query($SQLStr);
//查询注册账号名称是否包含不雅字词 END

if(db_num_rows($res)>0) // 若查询数据有相符
{
echo"<script>";
echo"alert("请勿使用不雅名称" . $username . "为账号");";
echo"location.href = "registry1.php";";
echo"</script>";
}
?>

 

******************************6^^^^^^^^


<?
include("db_conn.php");
include("db_func.php");

//查询数据库是否有此用户名称BEGIN
$sqlstr= "SELECT * FROM member WHERE m_username='$name'";
$res= db_query($sqlstr);
//查询数据库是否有此用户名称BEGIN

if(db_num_rows($res)>0) //检查查询结果是否有数据
  echo "<br><center>此账号名称" .$name. "已被注册使用</center>";
else
  echo "<br><center>此账号名称" .$name. "尚未有人注册使用</center>";
?>

 

[!--infotagslink--]

相关文章

  • JavaScript判断浏览器及其版本信息

    本篇文章主要分享了通过window.navigator来判断浏览器及其版本信息的实例代码。具有一定的参考价值,下面跟着小编一起来看下吧...2017-01-23
  • Java如何发起http请求的实现(GET/POST)

    这篇文章主要介绍了Java如何发起http请求的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-31
  • 解决Java处理HTTP请求超时的问题

    这篇文章主要介绍了解决Java处理HTTP请求超时的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-29
  • 一个奇葩的最短的 IE 版本判断JS脚本

    使用 conditional comment 来判断 IE 的版本。嗯,是早早有人提出,但没有认真看代码。昨天刚好在看 CSS3 PIE 的时候看到,觉得是不是不靠谱。今天看到 Paul Irish 也提起,那么,推荐一下吧。这是作者博客上写的:复制代码 代码...2014-05-31
  • c# 判断是否为空然后赋值的4种实现方法

    下面小编就为大家分享一篇c# 判断是否为空然后赋值的4种实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • C#模拟http 发送post或get请求的简单实例

    下面小编就为大家带来一篇C#模拟http 发送post或get请求的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
  • MySql存储过程之逻辑判断和条件控制

    具体详情请看下文小编给大家带来的知识点。同编写程序类似,存储过程中也有对应的条件判断,功能类似于if、switch。在MySql里面对应的是IF和CASE1、IF判断IF判断的格式是这样的:IF expression THEN commands [ELSEIF ex...2015-10-21
  • PHP中empty和isset对于参数结构的判断及empty()和isset()的区别

    废话不多说了,直接给大家贴代码了。<&#63;php class test{} $a1 = null; $a2 = ""; //$a3 = $a4 = 0; $a5 = '0'; $a6 = false; $a7 = array(); //var $a8; $a9 = new test(); for ($i=1; $i <=9 ; $i++) {...2015-11-24
  • java正则表达式判断前端参数修改表中另一个字段的值

    这篇文章主要介绍了java正则表达式判断前端参数修改表中另一个字段的值,需要的朋友可以参考下...2021-05-07
  • C#判断一个字符串是否是数字或者含有某个数字的方法

    这篇文章主要介绍了C#判断一个字符串是否是数字或者含有某个数字的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...2020-06-25
  • C#获得程序的根目录以及判断文件是否存在的实例讲解

    今天小编大家分享一篇C#获得程序的根目录以及判断文件是否存在的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-06-25
  • 从PHP $_SERVER相关参数判断是否支持Rewrite模块

    如果是http://www.jb51.net/p1141.html形式的URL,可通过$_SERVER['REQUEST_URI']和$_SERVER['QUERY_STRING']值的区别来分析,最主要是如果页面是通过重定向会产生$_SERVER['REDIRECT_QUERY_STRING']和$_SERVER['REDIREC...2013-10-04
  • JavaScript判断DIV内容是否为空的方法

    整体思路是这样的:判断div内部是否为空,如果为空,给出无数据提示;否则显示正常页面,下面给大家分享js判断div内容是否为空的方法,对判断div内容是否为空的相关知识感兴趣的朋友一起学习吧...2016-02-01
  • spring cloud gateway中如何读取请求参数

    这篇文章主要介绍了spring cloud gateway中如何读取请求参数的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-07-15
  • toString.call()通用的判断数据类型方法示例

    这篇文章主要给大家介绍了关于toString.call()通用的判断数据类型方法的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-08-29
  • 使用Feign消费服务时POST/GET请求方式详解

    这篇文章主要介绍了使用Feign消费服务时POST/GET请求方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-06-25
  • C#处理和对接HTTP接口请求的方法

    下面通过四步给大家介绍了c#处理和对接http接口请求的方法,分步骤介绍的非常详细,具有参考借鉴价值,感兴趣的朋友一起看下吧...2020-06-25
  • SpringMvc自动装箱及GET请求参数原理解析

    这篇文章主要介绍了SpringMvc自动装箱及GET请求参数原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-19
  • SpringMvc获取请求头请求体消息过程解析

    这篇文章主要介绍了SpringMvc获取请求头请求体消息过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-17
  • js 检测判断fckeditor是否为空

    js 检测判断fckeditor是否为空 <!-- 用一般的js是不可能获取 fck 编辑器内容的是否有值的,我们得用 FCKeditorAPI接口来实例--> <!DOCTYPE html PUBLIC "-//W3C//DTD...2016-09-20