澳门新葡萄京娱乐场php表单提交程序的安全使用方法第1/2页

用于显示错误信息和成功信息,其实也可以直接echo出错误信息,这里我只是想我的出错信息页面漂亮点,定义了一个页面输出的函数罢了。
复制代码 代码如下:
// savecomment.php// 大家先不要看注释,看完本文后,再回过头来看
require (“config.php”);
mysql_connect($servername,$dbusername,$dbpassword) or die (“数据库连接失败”);
$name=$_POST[‘name’];
$content=$_POST[‘content’];
$blogid=$_POST[‘blogid’];
$datearray=getdate(time());
$date=date(“Y-m-d h:i:s”,$datearray[0]);
if (!empty($name) && !empty($content)){               
//用empty函数判断表单非空的话则往下。        
if(strlen($name) > 20){         
//通过非空判断则开始判断$name的长度。        
error(“名字超过20个字节(20个英文或10个汉字)
”);      
}        
f(!is_numeric($_POST[‘blogid’])){               
error(“隐藏数据被非法修改过,请返回
”);
        }        
//由于$blogid待会是要放进select的,此变量是用来标示评论是属于哪篇文章,它是int类型,虽说是隐藏变量,但攻击者也是可以在本地修改远程提交的,所以我们在放进select之前需要检查类型。        
$blogsql = “Select * FROM $comment_table Where blogid=$blogid”        
$blogresult = mysql_db_query($dbname, $blogsql);        
$blog = mysql_fetch_array($blogresult);        
if(strlen($name) == strlen($blog[name]) && strlen($content) == strlen($blog[content])){         
//查询数据库的两个字段的长度,因为名字长度可能相同,但两个都相同正常情况下出现的几率就相当小了,所以用&&同时判断。      
error(“你欲提交的内容评论里已存在,请返回
”);      
}        
//下面就开始判断时间间隔。更详细的说明请看文章后面内容。        
session_start();         
if(session_is_registered(“time”) && time()-$_SESSION[‘time’]<60*2){         error(“对不起,你两次提交的时间间隔还不到2分钟
”);        
} else {        
$sql=”Insert INTO $comment_table(date,name,content,blogid)        VALUES(‘$date’,’$name’,’$content’,’$blogid’)”      
mysql_db_query($dbname,$sql);      
mysql_close();      
$time=time();        
session_register(“time”);        
succeed(“评论提交成功
”);   
     }}      
//结束非空的判断
error(“你没有填写完所有表单
”);
?>

用于显示错误信息和成功信息,其实也可以直接echo出错误信息,这里我只是想我的出错信息页面漂亮点,定义了一个页面输出的函数罢了。
复制代码 代码如下:”); }
//下面就开始判断时间间隔。更详细的说明请看文章后面内容。
session_start();
if(session_is_registered-$_SESSION[‘time’]<60*2){error(“对不起,你两次提交的时间间隔还不到2分钟
”); }else{
$sql=”InsertINTO$comment_table(date,name,content,blogid)VALUES(‘$date’,’$name’,’$content’,’$blogid’)”
mysql_db_query; mysql_close; session_register; succeed; }}
//结束非空的判断 error; ?>上面是一个记录评论数据的文件。表单如下:
复制代码 代码如下: 12下一页阅读全文

好了,html
页面的css与js都写好了下面我们来看看数据库与php程序是如何实现的吧,我们先来看看数据库结构.

上面是一个记录评论数据的文件。表单如下:
复制代码 代码如下:

CREATE TABLE IF NOT EXISTS `su_mon_vote` ( `id` int(11) NOT NULL
auto_increment, `v1` varchar(100) default NULL, `v2` varchar(200)
NOT NULL, `v3` varchar(200) NOT NULL, `v4` varchar(200) NOT NULL,
`v5` varchar(200) NOT NULL, `v6` varchar(200) NOT NULL, `name`
varchar(50) NOT NULL, `tel` varchar(50) NOT NULL, `email`
varchar(50) NOT NULL, `address` varchar(200) NOT NULL, `vip`
varchar(20) NOT NULL, `vdate` datetime NOT NULL, PRIMARY KEY (`id`))
ENGINE=InnoDB DEFAULT CHARSET=gb2312 AUTO_INCREMENT=6
;上面的结构是随便写的没注意数据库其它方面报.好下面我们来看看php程序是怎么判断调查的吧.

“>
您的名字:
评论内容:

if(empty($_COOKIE[cook])){mysql_connect(‘localhost’,’root’,’mailangel’)
or die(‘database server no exists!’);mysql_select_db(‘vot’) or
die(‘database error!’);mysql_query(SET NAMES ‘gbk’);//set document
charset
encode$name=get_value(name,’post’);$tel=get_value(tel,’post’);$email=get_value(email,’post’);$add=get_value(address,’post’);$vip=get_real_ip();$date=date(Y-m-d
h:i:s);$value=$_SERVER[‘HTTP_HOST’];$array=array();for($i=1;$i=6;$i++){$v=’v’.$i;$v=get_value($v,’post’);$array[$i-1]=$v;if(empty($v)){alert(‘对不起,你还有选项未选!’,”);}}if(
strlen($name)100 || strlen($name)3 )
{alert(‘用户名长度3-20’,”);}elseif( strlen($tel)15 ||
strlen($tel)7){alert(‘请输入正确的电话号码!’,”);}elseif(
strlen($email)50 || strlen($email)10 )
{alert(‘对不起,你的邮箱地址不正确!’,”);}elseif( strlen($add)100 ||
strlen($add)10 ){alert(‘地址长度10-100字符!’,”);}$sql=Insert into
su_mon_vote(v1,v2,v3,v4,v5,v6,name,email,address,vip,vdate,tel) value(
;$sql=$sql.’.$array[0].’,’.$array[1].’,’.$array[2].’,’.$array[3].’,’.$array[4].’,’.$array[5].’,’$name’,;$sql=$sql.’$email’,’$add’,’$vip’,’$date’,’$tel’);//mysql_query($sql)
or die($sql.mysql_error());if( mysql_query($sql)){setcookie(cook,
$value, time()+7200,
/);alert(‘答题成功,谢谢你的参与!’,’index.html’);}else{alert(‘系统忙…请稍后再试’,”);}}else{print
答题失败,一人只能参加一次答题!,a href=#
onclick=history.back();点击返回/a;}

当前1/2页 12下一页

function get_value($para,$para2){//获取参数的值if( ‘post’==$para2
){return
addslashes(isset($_POST[$para])?$_POST[$para]:”);}else{return
addslashes(isset($_GET[$para])?$_GET[$para]:”);}}function
alert($str,$para){//提示设置函数,if( ”==
$para){exit(scriptalert(‘$str’);history.back();/script);}else{exit(scriptalert(‘$str’);location=’$para’;/script);}}function
get_real_ip(){$ip=false;if(!empty($_SERVER[HTTP_CLIENT_IP])){$ip
= $_SERVER[HTTP_CLIENT_IP];}if
(!empty($_SERVER[‘HTTP_X_FORWARDED_FOR’])) {$ips = explode (, ,
$_SERVER[‘HTTP_X_FORWARDED_FOR’]);if ($ip) { array_unshift($ips,
$ip); $ip = FALSE; }for ($i = 0; $i count($ips); $i++) {if (!eregi
(^(10|172.16|192.168)., $ips[$i])) {$ip = $ips[$i];break;}}}return
($ip ? $ip : $_SERVER[‘REMOTE_ADDR’]);}?

发表评论

电子邮件地址不会被公开。 必填项已用*标注