当前位置:  编程技术>php
本页文章导读:
    ▪PHP的FTP学习(三)       By Vikram Vaswani Melonfire November 07, 2000 现在,我们已经接触了PHP关于FTP的大量函数,但这仅仅只是函数,离我们的目标还远远不够,要显示出这些函数的真正力量,我们应该建立一个程序,这.........
    ▪我的论坛源代码(六)       repal.php回复用的页面,因为回复可以不必要是用户,所以没加用户身份校验 <html> <head> <title>回复论题:<? echo $zt;?></title> <meta http-equiv="Content-Type" content="text/html; charset.........
    ▪我的论坛源代码(五)       okey.php主要处理用户登录和发布的信息处理 <? if ($username)                       //是否有用户信息 $useinfo=$username."|".$userpass; setcookie("FlyFoxNet",$useinfo,time()+3600);   if ($d==q) setcook.........

[1]PHP的FTP学习(三)
    来源: 互联网  发布时间: 2013-11-30
By Vikram Vaswani
Melonfire
November 07, 2000
现在,我们已经接触了PHP关于FTP的大量函数,但这仅仅只是函数,离我们的目标还远远不够,要显示出这些函数的真正力量,我们应该建立一个程序,这个程序能以WEB方式上传,下载文件---这就是我们将要做的!

在我们进入代码前,我想要告诉大家的是,这个例子仅仅只是为了向大家解释PHP的各种FTP函数的使用,很多方面还不够完善,比如说,错误分析等,至于你想应用到你自己的程序中,你应该进行一些修改!

程序包括以下几个文件:
index.html - 登录文件

actions.php - 程序必需的FTP代码

include.php - 程序主界面,它显示文件列表和控制按钮。

让我们从 "index.html"开始吧:  
--------------------------------------------------------------------------------
<table border=0 align=center>
<form action="/blog_article/actions.html" method=post>
<input type=hidden name=action value=CWD>
<tr>
<td>
Server
</td>
<td>
<input type=text name=server>
</td>
</tr>

<tr>
<td>
User
</td>
<td>
<input type=text name=username>
</td>
</tr>

<tr>
<td>
Password
</td>
<td>
<input type=password name=password>
</td>
</tr>

<tr>
<td colspan=2 align=center>
<input type="submit" value="Beam Me Up, Scotty!">
</td>
</tr>

</form>
</table>
--------------------------------------------------------------------------------
这是一个登录表单,有一个服务器名称、用户名、密码,输入框。输入的变量将会被存到$server, $username 和 $password 变量中,表单提交后,调用actions.php,它将初始化FTP联接。

注意那个“hidden” 它传给action.php一个变量$action ,值为CWD。


这是action.php文件的源码:
--------------------------------------------------------------------------------
<html>
<head>
<basefont face=Arial>
</head>
<body>

<!-- the include.php interface will be inserted into this page -->

<?

//检查表单传来的数据,不全则报错,要想程序完善的话,这里应该有更全的输入检测功能
if (!$server || !$username || !$password)
{
echo "提交数据不全!";
}
else
{
// keep reading
}

?>

</body>
</html>
--------------------------------------------------------------------------------


接下来是变量 "actions". 程序允许以下的action:

"action=CWD"

改变工作目录

"action=Delete"

删除指定文件

"action=Download"

下载指定文件

"action=Upload"

上传指定文件

如果你仔细检查文件include.php,在里面包括一个HTML界面,你将会看到,它包括许多表单,每一个指向一个特定的功能,每一个表单包含一个field(通常隐藏) ,当表单提交,相应的功能将被执行。

例如:按下“删除”,"action=Delete"就被传送给"actions.php"  

为了操作这四个功能,actions.php中代码如下:   
--------------------------------------------------------------------------------
<?
// action: 改变目录
if ($action == "CWD")
{
// 具体代码
}

// action: 删除文件
else if ($action == "Delete")
{
// 具体代码
}
// action: 下载文件
else if ($action == "Download")
{
// 具体代码
}
// action: 上传文件
else if ($action == "Upload")
{
// 具体代码
}

?>
--------------------------------------------------------------------------------
以上的具体代码将会实现指定的功能,并退出循环,它们都包含以下步骤:

--------------------------------------------------------------------------------
通过定制的函数联接并登录FTP服务器
connect();

转向适当的目录

执行选择的功能

刷新列表,以察看改变的结果

通过include("include.php"),显示文件列表和控制按钮

关闭联接
--------------------------------------------------------------------------------
注意:
以下功能支持多文件操作- 即 "action=Delete" 和 "action=Download" 它们使用FOR循环来实现。
变量$cdir 和 $here 将在每一阶段实时更新。

现在终于到了我们的第三个文件,include.php 它为程序建立起一个用户界面。

"include.php" 包含三个表单,一些PHP代码获取当前的目录列表并将它们存入三个变量
$files (包括当前目录下的文件),
$file_sizes (相应的文件大小),
and $dirs (包含子目录名)

第一个表单使用$dirs 产生一个下拉式目录列表,对应于“action=CWD”。

第二个表单使用$files  $file_sizes创建一个可用的文件列表,每一个文件使用一个checkbox。这个表单的action对应于"action=Delete" and "action=Download"

第三个表单用来上传一个文件到FTP站点,如下:
--------------------------------------------------------------------------------
<form enctype="multipart/form-data" action=actions.php4 method=post>
...
<input type=file name=upfile>
...
</form>
--------------------------------------------------------------------------------
当PHP以这种方式接收到一个文件名,一些变量就产生了,这些变量指定文件的大小,一个临时的文件名以及文件的类型,最初的文件名存在$upfile_name,一旦上传后文件名便存入$upfile中(这个变量是由PHP自己创建的)
通过这些信息,我们就可以创建以下的语句了:
--------------------------------------------------------------------------------
ftp_put($result, $upfile_name, $upfile, FTP_BINARY);
--------------------------------------------------------------------------------


    
[2]我的论坛源代码(六)
    来源: 互联网  发布时间: 2013-11-30
repal.php回复用的页面,因为回复可以不必要是用户,所以没加用户身份校验

<html>
<head>
<title>回复论题:<? echo $zt;?></title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<STYLE type=text/css>
P {FONT-FAMILY: normal; FONT-SIZE: 9pt; LINE-HEIGHT: 14pt}
DIV {FONT-FAMILY: normal; FONT-SIZE: 9pt; LINE-HEIGHT: 14pt}
</STYLE>
<LINK href="/blog_article/js/cpcw.css" rel=stylesheet /LINK>
<?php
include "linkfox.inc.php";               //包含进文件
include "info.inc.php";

function yy($f)
{
  $oldmess=@file($f);                                    //引用原文处理
  for ($i=0;$i<count($oldmess);$i++)
  {
   if (ord(substr($oldmess[$i],0,1))==161)   //第一位是否全角空格
   $mess=$mess.$oldmess[$i];
   else $mess=$mess."  ".trim($oldmess[$i]);
  }
  return $mess;
}

function mesput($query,$use,$id)       
{
      $req=mysql_query($query);
      if ($req)
        {
          echo "<script language='JavaScript'> alert('谢谢你的回复!系统将返回论题!'); </script>";
          echo "<script language='JavaScript'> javascript:location.href='/blog_article/dispbbs/id/.html".$id."&use=".$use."'; </script>;";
          echo "<div align='center'><a href='/blog_article/dispbbs/id/.html".$id."&use=".$use."'>如果系统没有反应,请点击</a></a>";
        }
      else
      echo  "<script language='JavaScript'> alert('写入失败!'); </script>";
}
function usehf($message,$useinfo,$id,$use,$ft,$mess,$c)         //用户回复就直接从表里调出用户信息
{
   $query="select * from useinfo where usename='".$useinfo[0]."'";
   $req=mysql_query($query);
      if ($req)
         {
             $useinfo=mysql_fetch_array($req);
             $fo=fopen($ft,"a");
             $message=str_replace("<","<",str_replace(">",">",$message));
             $message=nl2br($message);
             $gip=getenv("REMOTE_ADDR");
             $messages=$message."ㄞㄚㄓ".$useinfo[2]."ㄞㄚㄓ".$useinfo[3]."ㄞㄚㄓ".$useinfo[9]."ㄞㄚㄓ".$useinfo[8]."ㄞㄚㄓ".$useinfo[14]."ㄞㄚㄓ".$useinfo[11]."ㄞㄚㄓ".$time."ㄞㄚㄓ".$gip."δεζ";
            if($c==dd)       //如果是引用回复,加上原文内容
               {
          $messages="<font color='999999'>".$mess."<div align='center'>★原文……★……引用★</div></font><br>".$messages;
               }
             $fp=fputs($fo,$messages);
             $time=date(Y年n月j日G时i分);   //主题回复数加一,覆盖上一回复人与时间
             $query="update foxbbs set hfnum=hfnum+1,hfname='".$ft."',hfusename='".$useinfo[2]."',hfdate='".$time."' where id='".$id."'";
             mesput($query,$use,$id);
          }
      else
         {
      echo "<script language='JavaScript'> alert('数据库错误:104号'); </script>";
         }
}

function gr($ft,$message,$youname,$youmail,$youoicq,$youweb,$youaddr,$youbq,$id,$use,$mess,$c)        //非注册用户
{
if (!uinfo($youmail,mail)||strlen($youmail)<12)  //校验MAIL
{
     echo "<script language='JavaScript'> alert('请输入正确的MAIL地址!'); </script>";
}
else if (!uinfo($youoicq,oicq)||strlen($youoicq)>12) //校验OICQ,只能判断是否数字和位数,如果有更好的方法就好。
{

     echo "<script language='JavaScript'> alert('请输入正确的OICQ号!'); </script>";
}

else
{
      if (uinfo($youweb,web)==OK&&substr($youweb,0,3)!=htt) $youweb="http://".$youweb;
      else if (uinfo($youweb,web)==OK&&substr($youweb,0,3)==htt) $youweb=$youweb;
      else $youweb="不告诉你";
      $time=date(Y年n月j日G时i分);          //取当前时间
      $message=str_replace("<","<",str_replace(">",">",$message));
      $message=nl2br($message);
      $gip=getenv("REMOTE_ADDR");
      $messages=$message."ㄞㄚㄓ".$youname."ㄞㄚㄓ".$youoicq."ㄞㄚㄓ".$youweb."ㄞㄚㄓ".$youmail."ㄞㄚㄓ".$youbq."ㄞㄚㄓ".$youaddr."ㄞㄚㄓ".$time."ㄞㄚㄓ".$gip."δεζ";
       if($c==dd)       //如果是引用回复
         {
        $messages="<font color='999999'>".$mess."<div align='center'>★原文……★……引用★</div></font><br>".$messages;
         }
      $fo=fopen($ft,"a");
      $fp=fputs($fo,$messages);
      $query="update foxbbs set hfnum=hfnum+1,hfname='".$ft."',hfusename='".$youname."',hfdate='".$time."' where id='".$id."'";
      mesput($query,$use,$id);
}
}
?>
</head>

<body bgcolor="#FFFFFF">
<?
$tem=$HTTP_COOKIE_VARS[FlyFoxNet];
$temp=explode("|",$tem);
$cookiem=$temp[0];
$useinfo=cuser($cookiem,$action);

if (!$useinfo[0]){  $useinfo[2]="游客"; $usename=1;}

$query="select mesname from foxbbs where id='".$id."'";
$req=mysql_query($query);
  if ($req)
  {
  $f=mysql_fetch_array($req);
  $mess=yy($f[0]);
      if ($message&&$action=add)
        {
          $ft="foxbbs/".$f[0].".bbs";
          if (ord(substr($message,0,1))!=161) $message="  ".$message;
          for ($i=0;$i<10;$i++)
          {
            if ($bq[$i]) $youbq=$bq[$i];
          }
          if ($usename)  gr($ft,$message,$youname,$youmail,$youoicq,$youweb,$youaddr,$youbq,$id,$use,$mess,$c);
          else usehf($message,$useinfo,$id,$use,$ft,$mess,$c);
        }
   }
   else echo "<script language='JavaScript'> alert('打开文件错误!可能服务器忙,请稍候再试!'); </script>";


?>
<table width="100%" cellpadding="4" cellspacing="0" border="0">
  <tr>
    <td height="20">
      <div align="right"></div>
    </td>
    <td height="20" width="75"> </td>
    <td height="20" width="75"> </td>
    <td height="20" width="75"> </td>
    <td height="20" width="75"> </td>
  </tr>
  <tr>
    <td height="20">
      <div align="right"></div>
    </td>
   <td height="20" width="10%">
     <div align="center"><a href="/blog_article/reguse/action/xy.html"><img src="/blog_article/images/top_register.gif" width="74" height="21" border="0"></a></div>
    </td>
    <td height="20" width="10%">
      <div align="center"><a href="/blog_article/useinfo/action/find.html"><img src="/blog_article/images/top_members.gif" width="74" height="21" border="0"></a></div>
    </td>
    <td height="20" width="10%"><a href="/blog_article/useinfo/action/edit.html"><img src="/blog_article/images/top_profile.gif" width="74" height="21" border="0"></a></td>
    <td height="20" width="10%"><a href="/blog_article/okey/d/q.html"><img src="/blog_article/images/top_logout.gif" width="74" height="21" border="0"></a></td>
  </tr>
  <tr>
    <td height="20">
      <div align="left">当前位置:<font color="#0000FF">狐网─>狐网论坛─>回复主题:<?echo "<font color='ff0000'>".$zt."</font>";?></font></div>
    </td>
    <td>    <div align="center"><a href="/blog_article/foxbbs.html"><img src="/blog_article/images/index.gif" width="70" height="20" border="0" align="middle"></a></div>
    </td>
    <td height="20" width="10%">
      <div align="center"><a href="/blog_article/superuse.html"><img src="/blog_article/images/super.gif" width="70" height="20" border="0" align="middle"></a></div>
    </td>
    <td height="20" width="10%">
      <div align="center"><a href="/blog_article/reguse/action/xy.html"><img src="/blog_article/images/dl.gif" width="70" height="20" border="0" align="middle"></a></div>
    </td>
    <td height="20" width="10%">
      <div align="center"><a href="/index.html"><img src="/blog_article/images/fox.gif" width="70" height="20" border="0" align="middle"></a></div>
     </td>  </tr>
</table>

<script language="JavaScript">
<!--
var submitcount=0;

function checkSubmit() {
    if (submitcount == 0) {
      submitcount++;
      return true;
    } else {
            if (submitcount>0){
            alert("帖子已成功提交了,别急,等等!");
            return false;
      }
    }
}

function check_com(){
   if(document.form.youname.value.length ==0){
      submitcount--;
      alert("名字不能为空!快填上吧!");
      return false;
   }
      if(document.form.youmail.value.length ==0){
      submitcount--;
      alert("EMAIL不能为空!快填上吧!");
      return false;
   }
   if(document.form.youoicq.value.length ==0){
      submitcount--;
      alert("OICQ不能为空!快填上吧!");
      return false;
   }


   if(document.form.message.value.length == 0){
      submitcount--;
      alert("内容不能为空!");
      return false;
   }
   return true;
}
//-->
</script>

<table width='70%' border='0' cellspacing='0' cellpadding='0' bgcolor='#000000' align='center'>
  <tr>
    <td>
      <table width='100%' border='0' cellspacing='0' cellpadding='0'>
        <tr bgcolor='#006699'>
          <td><div align="center"><font color="ffffff"><? echo "<font color='00ff00'>".$useinfo[2]."</font>"; ?> 你正在回复的主题是:[<? echo $zt; ?>]</font></div></td>
        </tr>
        <tr bgcolor='#eeeeee'>
          <td>
    <form name="form" onSubmit="return check_com()" method="post"><div align="center">
<?
      if ($usename)  //不是注册用户就显示输入框输入游客信息。
      {
      echo "你的大名:<input onFocus='this.select()' type='text' name='youname' size='30' maxlength='30' value='".$youname."'>";
      echo "OICQ:<input onFocus='this.select()' type='text' name='youoicq' size='16' maxlength='16' value='".$youoicq."'><br>";
      echo "来自何方:<input onFocus='this.select()' type='text' name='youaddr' size='55' value='".$youaddr."'><br>";
      echo "电子信箱:<input onFocus='this.select()' type='text' name='youmail' size='55' value='".$youmail."'><br>";
      echo "个人主页:<input onFocus='this.select()' type='text' name='youweb' size='55' value='".$youweb."'><br>";
      echo "表情<br><input type='radio' name='bq[0]' value='a'><img src='/blog_article/images/a.gif'><input type='radio' name='bq[1]' value='1'><img src='/blog_article/images/1.gif'>";
      echo "<input type='radio' name='bq[2]' value='2'><img src='/blog_article/images/2.gif'><input type='radio' name='bq[3]' value='3'><img src='/blog_article/images/3.gif'>";
      echo "<input type='radio' name='bq[4]' value='4'><img src='/blog_article/images/4.gif'><input type='radio' name='bq[5]' value='5'><img src='/blog_article/images/5.gif'>";
      echo "<input type='radio' name='bq[6]' value='6'><img src='/blog_article/images/6.gif'><input type='radio' name='bq[7]' value='7'><img src='/blog_article/images/7.gif'>";
      echo "<input type='radio' name='bq[8]' value='8'><img src='/blog_article/images/8.gif'><input type='radio' name='bq[9]' value='9'><img src='/blog_article/images/9.gif'><br>";
      }
      echo "<div align='center'>回复内容<br>";
      echo "<textarea onFocus='this.select()' name='message' cols='64' rows='5' wrap='VIRTUAL'>".$message."</textarea><br>";
            ?>
         <input type="submit" name="Submit" value="确定" onClick="return checkSubmit()">                          
         <input type="reset" name="Submit2" value="重写"></div></div></form>
          </td>
        </tr>
        <tr bgcolor='#eeeeee'>//如果是引用原文就显示
          <td><div align="center"><? if ($c==dd) echo "原文如下<br><div align='left'>".$mess;?></div></td>
        </tr>
      </table>
    </td>
  </tr>
</table>

</body>
</html> 

    
[3]我的论坛源代码(五)
    来源: 互联网  发布时间: 2013-11-30
okey.php主要处理用户登录和发布的信息处理


<?
if ($username)                       //是否有用户信息
$useinfo=$username."|".$userpass;
setcookie("FlyFoxNet",$useinfo,time()+3600);   

if ($d==q) setcookie("FlyFoxNet");     //如果是退出的话,把COOKIE置为空
?>
<HTML><HEAD><TITLE>发表文章</TITLE>
<LINK href="/blog_article/js/cpcw.css" rel=stylesheet /LINK>
<?
include "linkfox.inc.php";
include "info.inc.php";
function postf($useinfo,$title,$message)        //发帖信息处理
{
       $query="select * from foxbbs order by id desc limit 1";
       $row=@mysql_query($query);
       $info=@mysql_fetch_array($row);
       if ($useinfo[2]==$info[1]&&$title==$info[3])         //检查最近一条信息是否和当前信息一样。
          echo "<script language='JavaScript'> alert('请勿重复发帖,谢谢合作!'); </script>";
       else{
         $time=date(Y年n月j日G时i分);
         $filename=date(YmjGis);               //文件名取当前的时间
         $gip=getenv("REMOTE_ADDR");        //写入信息
         $query="insert into foxbbs (usename,ftbq,title,ftdate,mesname,djnum,hfnum,ip) values ('".$useinfo[0]."','".$useinfo[14]."','".$title."','".$time."','".$filename."',1,0,'".$gip."')";
         $req=@mysql_query($query);
         if ($req) {                      //如果写入成功,则给用户发帖数加一,建立内容文件
            $query="select ftnum from useinfo where usename='".$useinfo[0]."'";
            $req=@mysql_query($query);
            $ftnum=@mysql_fetch_array($req);
            $ftnum=$ftnum[0]+1;
            $query="update useinfo set ftnum='$ftnum' where usename='".$useinfo[0]."'";
            $req=@mysql_query($query);
            $ft=$filename;
            $fp=fopen($ft,"w");         //把所有的"<",">"符号转换成"<","&rt;"可以去除HTML标记,好像有个函数可以直接去除,但我记不到了,也没在参考手册里查到,所以用个笨法子了。
            $message=str_replace("<","<",str_replace(">",">",$message));
            $message=nl2br($message);    //先去除符号再变换行,免得换行符也变成字符显示出来。
            $f=fputs($fp,$message);
            $fp=@fclose($fp);
            echo "<script language='JavaScript'> alert('".$useinfo[2]."!恭喜你,发贴成功!'); </script>";
            }
         else {
            echo "<script language='JavaScript'> alert('非常报歉,因数据库原因,你的帖子没能保存!'); </script>";
              }
        }

}
function userr($username,$userpass,$title,$message)        //用户信息校验函数
{
    $query="select * from useinfo where usename='".$username."'";
    $req=mysql_query($query);
    $useinfo=mysql_fetch_array($req);
     if ($useinfo[0]==$username)
     {
//如果通过校检就调用信息处理函数
       if ($userpass==$useinfo[1])  {postf($useinfo,$title,$message);return $useinfo;}
       else {
       echo "<script language='JavaScript'> alert('密码不正确,请检查!'); </script>";
       echo "<meta HTTP-EQUIV='REFRESH' CONTENT='2;URL=post.php'>";
       }
     }
     else
     {
       echo "<script language='JavaScript'> alert('用户不存在,请确认已注册!'); </script>";
     }
}
?>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<meta HTTP-EQUIV="REFRESH" CONTENT="2;URL=foxbbs.php">
</head><body topmargin="0">
<?
$tem=$HTTP_COOKIE_VARS[FlyFoxNet];
$temp=explode("|",$tem);
$cookiem=$temp[0];
$useinfo=cuser($cookiem,$action);
if (isset($message))
{
  if($username)
  {
     $useinfo=userr($username,$userpass,$title,$message);
  }
  else if($useinfo) {
     userr($useinfo[0],$useinfo[1],$title,$message);
     }
  else {echo "<script language='JavaScript'> alert('你不是合法用户,不能在此论坛发帖!'); </script>";}

}
if ($d==q)
{
echo "<script language='JavaScript'> alert('你已退出登录状态,将以游客身份返回论坛'); </script>";
}
?>
<br><br><br><br><br>
<div align="center"><a href=/blog_article/foxbbs.php>如果系统未自动返回页面,请点击这里反回.</a></div>/index.html
</body>
</html> 

    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3