一些PHP写的小东西

  一些小东西有时候可能用得上!

  1.得到客户端IP地址

  function getip(){

  if (! empty($_SERVER["HTTP_X_FORWARDED_FOR"])){ //使用代理的情况

  $tip = split(",", $_SERVER["HTTP_X_FORWARDED_FOR"]);

  $cip = $tip[0];

  }

  else

  $cip = $_SERVER["REMOTE_ADDR"];[

  return dechex(ip2long($cip));

  }

  2.session控制的函数

  function session_begin(){

  global $userid, $sid, $ip, $session, $db, $islogin;

  $ip = getip();

  /* 短期而言,系统默认需要支持cookie. */

  if (!isset($_COOKIE['userid'])) return false;

  else $userid = $_COOKIE['userid'];

  if (!isset($_COOKIE['sid'])) return false;

  else $sid = $_COOKIE['sid'];

  /* 以上返回false意味着用户没有登陆,页面将跳转至首页(登陆页). */

  $query = "SELECT * FROM user WHERE nickname = '$userid'";

  $result = $db->sql_query($query);

  if ($row = $db->sql_fetchrow($result)){

  if ($row['sid'] != $sid) return false; /* cookie传送的sid和数据库保存的不吻合 */

  if ($row['lastloginip'] != $ip) return false; /* IP不吻合 */

  /* 是否要考虑 session的过期 问题呢? */

  }

  else return false; /* 没有这个userid */

  $session = $row;

  //        $session[''] = $row[''];

  unset($row);

  $islogin = true;

  return true;

  }

  /* bool session_end(int $userid, string $sid) */

  function sesssion_end($userid, $sid){

  return true;

  }

  3.做选美的投票程序

  <?php

  header("Refresh:0;url=./");  //一秒刷新

  ?>

  <script>alert('<?php

  require_once('mysql.php');

  require_once('functions.php');

  $db = new sql_db('localhost','root','','selectmm');

  $user_id = $_GET['user_id'];

  $ip = getip();

  $deltime = time()-3600;  //减去一小时

  $sql = "delete from vote where time <$deltime"; //删除掉过期的数据

  $db->sql_query($sql);

  $sql = "select ip from vote where ip='$ip' and user_id='$user_id'"; //查看一小时内是否投过

  $linkid=$db->sql_query($sql) or die(mysql_error());

  $count=$db->sql_affectedrows();

  if($count)

  {

  echo "您已经投过票了!";

  }

  else

  {

  $sql = "update user set vote_count=vote_count+1 WHERE user_id='$user_id'";

  $db->sql_query($sql);

  $count=$db->sql_affectedrows();

  if($count)

  {

  echo "投票成功!";

  $sql = "insert into vote (`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 = new sql_db('localhost','root','','selectmm');

  require_once('functions.php');

  require_once('session.php');

  session_begin();

  require('./Libs/Smarty.class.php');

  $smarty = new Smarty;

  $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;

  $sql="select p.* from pic_info p,user u where p.user_id=u.user_id and u.birthday between '$begin' and '$end' group by u.user_id";

  $link=$db->sql_query($sql) or die(mysql_error());

  $row = $db->sql_fetchrowset($link);

  $db->sql_freeresult();

  $smarty->assign("pic",$row);

  $smarty->display('index.tpl.htm');

  ?>

  5.注册程序

  <?

  require('mysql.php');

  $str=new sql_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 "<a href='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 * FROM user WHERE nickname ='$nickname' or email='$email'";

  $result = $str->sql_query($query)or die(mysql_error()); ;

  if ($row = $str->sql_fetchrow($result))

  { echo "<script>alert("对不起,该用户已经注册")</script>"; echo "<script>location="register.php"</script>"; }

  $password = md5($password);

  $query = "INSERT INTO `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><a href='delete.php?nickname=' onclick="return confirm('确定删除吗?rn此操作不可恢复')"><font color=red>删除该用户</font></a></td>";

  7.在给同事做一个文本处理,两个文档一个有7万条记录,开始用嵌套循环,php死了,后面用数组解决了问题

  <?php

  if(($fp=fopen("1.txt","a+"))===false)

  {

  die("打开文件失败");

  }

  $data1=file("old.txt") or die("打开文件失败");

  $data2=file("sports.txt") or die("打开文件失败");

  foreach($data1 as $data)

  {

  $x = split("[./]",$data);

  $name = $x[count($x)-2];

  $a[$name]['md5']=$data;

  }

  foreach($data2 as $data)

  {

  $x = split("[,./]",$data);

  $name = $x[count($x)-2];

  if(isset($a[$name]))

  $a[$name]['name']=$x[0];

  }

  foreach($a as $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);

  ?>