一些PHP写的小东西
2018-09-07 13:55
  一些小东西有时候可能用得上! 
1.得到客户端IP地址 
functiongetip(){ 
if(!empty($_SERVER[HTTP_X_FORWARDED_FOR])){//使用代理的情况 
$tip=split(,,$_SERVER[HTTP_X_FORWARDED_FOR]); 
$cip=$tip[0]; 
} 
else 
$cip=$_SERVER[REMOTE_ADDR];[ 
returndechex(ip2long($cip)); 
} 
2.session控制的函数 
functionsession_begin(){ 
global$userid,$sid,$ip,$session,$db,$islogin; 
$ip=getip(); 
/*短期而言,系统默认需要支持cookie.*/ 
if(!isset($_COOKIE[userid]))returnfalse; 
else$userid=$_COOKIE[userid]; 
if(!isset($_COOKIE[sid]))returnfalse; 
else$sid=$_COOKIE[sid]; 
/*以上返回false意味着用户没有登陆,页面将跳转至首页(登陆页).*/ 
$query=SELECT*FROMuserWHEREnickname=$userid; 
$result=$db->sql_query($query); 
if($row=$db->sql_fetchrow($result)){ 
if($row[sid]!=$sid)returnfalse;/*cookie传送的sid和数据库保存的不吻合*/ 
if($row[lastloginip]!=$ip)returnfalse;/*IP不吻合*/ 
/*是否要考虑session的过期问题呢?*/ 
} 
elsereturnfalse;/*没有这个userid*/ 
$session=$row; 
//$session[]=$row[]; 
unset($row); 
$islogin=true; 
returntrue; 
} 
/*boolsession_end(int$userid,string$sid)*/ 
functionsesssion_end($userid,$sid){ 
returntrue; 
} 
3.做选美的投票程序 
<?php 
header(Refresh:0;url=./);//一秒刷新 
?> 
<script>alert(<?php 
require_once(mysql.php); 
require_once(functions.php); 
$db=newsql_db(localhost,root,,selectmm); 
$user_id=$_GET[user_id]; 
$ip=getip(); 
$deltime=time()0;//减去一小时 
$sql=deletefromvotewheretime<$deltime;//删除掉过期的数据 
$db->sql_query($sql); 
$sql=selectipfromvotewhereip=$ipanduser_id=$user_id;//查看一小时内是否投过 
$linkid=$db->sql_query($sql)ordie(mysql_error()); 
$count=$db->sql_affectedrows(); 
if($count) 
{ 
echo您已经投过票了!; 
} 
else 
{ 
$sql=updateusersetvote_count=vote_count+1WHEREuser_id=$user_id; 
$db->sql_query($sql); 
$count=$db->sql_affectedrows(); 
if($count) 
{ 
echo投票成功!; 
$sql=insertintovote(`ip`,`user_id`,`time`)values($ip,$user_id,.time().);//投票成功就插入一条记录。 
$db->sql_query($sql); 
} 
else 
{ 
echo投票失败!; 
} 
} 
?>); 
//history.back(); 
</script> 
4.smarty的搜索程序 
<?php 
require_once(mysql.php); 
$db=newsql_db(localhost,root,,selectmm); 
require_once(functions.php); 
require_once(session.php); 
session_begin(); 
require(./Libs/Smarty.class.php); 
$smarty=newSmarty; 
$title=首页; 
$smarty->assign(islogin,$islogin); 
$smarty->assign(title,$title); 
$age=$_GET[age]; 
$arr=explode(,,$age); 
$y=date(Y); 
$md=date(-m-d); 
$begin=($y-$arr[1]).$md; 
$end=($y-$arr[0]).$md; 
$link=$db->sql_query($sql)ordie(mysql_error()); 
$row=$db->sql_fetchrowset($link); 
$db->sql_freeresult(); 
$smarty->assign(pic,$row); 
$smarty->display(index.tpl.htm); 
?> 
5.注册程序 
<? 
require(mysql.php); 
$str=newsql_db(localhost,root,,selectmm); 
$METHOD=$_POST; 
if(isset($METHOD[nickname])&&$METHOD[nickname]!=)$nickname=$METHOD[nickname]; 
else{echo<script>alert(用户昵称不能为空.)</script>;echo<script>location=register.php</script>;} 
if(isset($METHOD[password])&&strlen($METHOD[password])>=6)$password=$METHOD[password]; 
else{echo<script>alert(密码至少6位)</script>;echo<ahref=javascript:history.go(-2);>;} 
$password2=$METHOD[password2]; 
if($password!=$password2) 
{echo<script>alert(两次输入密码不一致)</script>;echo<script>location=register.php</script>;} 
if(isset($METHOD[name])&&$METHOD[name]!=)$name=$METHOD[name]; 
else{echo<script>alert(用户名不能为空.)</script>;echo<script>location=register.php</script>;} 
$birthday=$METHOD[Year].$METHOD[Month].$METHOD[Day]; 
$stature=$METHOD[stature]; 
$astrology=$METHOD[astrology]; 
$bloodtype=$METHOD[bloodtype]; 
$goodat=$METHOD[goodat]; 
$work=$METHOD[work]; 
$educate=$METHOD[educate]; 
$homeplace=$METHOD[homeplace]; 
$address=$METHOD[address]; 
$tel=$METHOD[tel]; 
$qq=$METHOD[qq]; 
if(isset($METHOD[email])&&$METHOD[email]!=)$email=$METHOD[email]; 
else{echo<script>alert(Email不能为空)</script>;echo<script>location=register.php</script>;} 
if(!eregi(^[0-9a-z.-_]+@[0-9a-z.]+.[a-z]$,$email)){echo<script>alert(电子邮件格式不合法)</script>;echo<script>location=register.php</script>;} 
$dian=$METHOD[dian]; 
if(isset($METHOD[myself])&&$METHOD[myself]!=)$myself=$METHOD[myself]; 
else{echo<script>alert(用.....不能为空)</script>;echo<script>location=register.php</script>;} 
if(isset($METHOD[enounce])&&$METHOD[enounce]!=)$enounce=$METHOD[enounce]; 
else{echo<script>alert(.....不能为空)</script>;echo<script>location=register.php</script>;} 
$query=SELECT*FROMuserWHEREnickname=$nicknameoremail=$email; 
$result=$str->sql_query($query)ordie(mysql_error());; 
if($row=$str->sql_fetchrow($result)) 
{echo<script>alert(对不起,该用户已经注册)</script>;echo<script>location=register.php</script>;} 
$password=md5($password); 
$query=INSERTINTO`user`(`nickname`,`password`,`name`,`birthday`,`astrology`,`bloodtype`,`stature`,`goodat`,`work`,`educate`,`homeplace`,`address`,`tel`,`email`,`qq`,`dian`,`myself`,`enounce`)VALUES($nickname,$password,$name,$birthday,$astrology,$bloodtype,$stature,$goodat,$work,$educate,$homeplace,$address,$tel,$email,$qq,$dian,$myself,$enounce); 
if($str->sql_query($query)) 
$str->sql_close(); 
echo<script>alert(恭喜你,注册成功)</script>; 
echo<script>location=login.php</script>; 
?> 
6.提交参数JS控制 
echo<td><ahref=delete.php?nickname=onclick=returnconfirm(确定删除吗?rn此操作不可恢复)><fontcolor=red>删除该用户</font></a></td>; 
7.在给同事做一个文本处理,两个文档一个有7万条记录,开始用嵌套循环,php死了,后面用数组解决了问题 
<?php 
if(($fp=fopen(1.txt,a+))===false) 
{ 
die(打开文件失败); 
} 
$data1=file(old.txt)ordie(打开文件失败); 
$data2=file(sports.txt)ordie(打开文件失败); 
foreach($data1as$data) 
{ 
$x=split([./],$data); 
$name=$x[count($x)-2]; 
$a[$name][md5]=$data; 
} 
foreach($data2as$data) 
{ 
$x=split([,./],$data); 
$name=$x[count($x)-2]; 
if(isset($a[$name])) 
$a[$name][name]=$x[0]; 
} 
foreach($aas$value) 
{ 
$str=$value[md5].,.$value[name]; 
fwrite($fp,$str); 
echo$value[md5].,.$value[name].<br>; 
fwrite($fp,$str); 
} 
?> 
8.验证码 
<?php 
/* 
*Filename:authimg.php 
*/ 
Header(Content-type:image/PNG); 
session_start(); 
$auth_num=; 
/*创建一个基于调色板的图像*/ 
$im=imagecreate(63,20); 
/*初始化一个随机种子*/ 
srand((double)microtime()*1000000); 
$auth_num_k=md5(rand(0,9999)); 
$auth_num=substr($auth_num_k,17,5); 
/*赋值会话变量*/ 
$_SESSION[authnum]=$auth_num; 
$black=ImageColorAllocate($im,0,0,0); 
$white=ImageColorAllocate($im,255,255,255); 
$gray=ImageColorAllocate($im,200,200,200); 
ImageFill($im,63,20,$black); 
imagestring($im,5,10,3,$auth_num,$gray); 
for($i=0;$i<200;$i++){ 
$randcolor=ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255)); 
imagesetpixel($im,rand()%70,rand()%30,$randcolor); 
} 
ImagePNG($im); 
ImageDestroy($im); 
?>