xchange 发表于 2005 年 5 月 28 日 12:47:01

PunBB插件编写初探

PunBB安装文件中提供了一个演示用的插件AMP_Example.php。根据这个演示,我编写了一个简单的上传文件插件做测试。

就目前来看,plugin下的插件只能供管理员和版主使用。其文件名必须以"AMP_"或者"AP_"开始,"AMP_"表明该插件可以被管理员和版主使用,"AP_"开头的则只能由管理员使用。前缀之后的部分将出现在管理菜单下面的"插件"栏里。

plugin下的文件由admin_loader.php在运行过程中动态载入,因此可以使用全部的全局变量和一些通用的函数。插件中如果要显示左侧的管理员菜单,必须调用generate_admin_menu($plugin)函数。另外在插件中如果使用了表单,其action属性一定要使用$_SERVER['REQUEST_URI']。

下面是上传文件插件的源代码:

<?php
// 如果直接访问该文件则退出执行
if (!defined('PUN'))
  exit;

// 告诉admin_load.php这确实是一个插件而且被载入了
define('PUN_PLUGIN_LOADED', 1);

//输出管理员菜单
generate_admin_menu($plugin);

?>

  <div id="exampleplugin" class="blockform">
       <h2><span>插件信息</span></h2>
       <div class="box">
        <div class="inbox">
         <p>该插件由Xchange开发,用于管理员和版主上传较小的文件,并做为编写插件的演示。</p>
        </div>
       </div>
       <h2 class="block2"><span>文件上传</span></h2>
       <div class="box">
        <div class="inbox">

<?php
if (isset($_FILES['myfile'])) {
  //判断文件类型
  switch ($_FILES['myfile']['type']) {
       case "image/bmp":
        $type="bmp";
        break;
       case "image/gif":
        $type="gif";
        break;
       case "image/jpeg":
       case "image/pjpeg":
        $type="jpg";
        break;
       case "image/png":
        $type="png";
        break;
       case "application/zip":
        $type="zip";
        break;
       case "application/rar":
        $type="rar";
        break;
       default:
        $type="other";
  }
  if ($_FILES['myfile']['size']>512000||$_FILES['myfile']['size']==0)  //判断文件是否过大或者没有内容
       echo("\t\t\t\t<p>上传失败!文件大小错误。</p>");
  elseif ($type=="other")  //判断文件类型是否符合要求
       echo("\t\t\t\t<p>上传失败!文件格式错误!</p>");
  else {
       $name=time()."_".md5($_FILES['myfile']['name']).".".$type;  //给新文件取一个名字
       move_uploaded_file($_FILES['myfile']['tmp_name'],"./upload/".$name);  //移动上传的文件到置顶目录
       echo("\t\t\t\t<p>文件已成功上传,您可以用如下地址访问:</p>\n");
       echo("\t\t\t\t<p>".$pun_config['o_base_url']."/upload/".$name."</p>\n");  //返回访问地址
  }
  echo("\t\t\t\t<p>".'<a href="javascript: history.go(-1)">'."Go back</a></p>\n");
}
else {
?>
         <p>可上传的文件类型:bmp、jpg、gif、png、zip和rar。</p>
         <p>文件大小不得超过500KB。</p>
         <form id="example" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI'] ?>">
              <div class="inform">
               <fieldset>
                <legend>选择您要上传的文件:</legend>
                <div class="infldset">
                <input type="hidden" name="MAX_FILE_SIZE" value="512000">
                <p><input name="myfile" type="file" size="40"></p>
                <p><input name="submit" type="submit" value="上传"></p>
                </div>
               </fieldset>
              </div>
         </form>
<?php
}
?>
        </div>
       </div>

命名为AMP_upload.php,保存在plugins目录(用UTF-8格式,否则会有乱码)。在根目录下新建upload目录,并设置属性777即可使用。

xchange 发表于 2005 年 5 月 28 日 12:47:01

PunBB插件编写初探

PunBB安装文件中提供了一个演示用的插件AMP_Example.php。根据这个演示,我编写了一个简单的上传文件插件做测试。

就目前来看,plugin下的插件只能供管理员和版主使用。其文件名必须以"AMP_"或者"AP_"开始,"AMP_"表明该插件可以被管理员和版主使用,"AP_"开头的则只能由管理员使用。前缀之后的部分将出现在管理菜单下面的"插件"栏里。

plugin下的文件由admin_loader.php在运行过程中动态载入,因此可以使用全部的全局变量和一些通用的函数。插件中如果要显示左侧的管理员菜单,必须调用generate_admin_menu($plugin)函数。另外在插件中如果使用了表单,其action属性一定要使用$_SERVER['REQUEST_URI']。

下面是上传文件插件的源代码:

<?php
// 如果直接访问该文件则退出执行
if (!defined('PUN'))
  exit;

// 告诉admin_load.php这确实是一个插件而且被载入了
define('PUN_PLUGIN_LOADED', 1);

//输出管理员菜单
generate_admin_menu($plugin);

?>

  <div id="exampleplugin" class="blockform">
       <h2><span>插件信息</span></h2>
       <div class="box">
        <div class="inbox">
         <p>该插件由Xchange开发,用于管理员和版主上传较小的文件,并做为编写插件的演示。</p>
        </div>
       </div>
       <h2 class="block2"><span>文件上传</span></h2>
       <div class="box">
        <div class="inbox">

<?php
if (isset($_FILES['myfile'])) {
  //判断文件类型
  switch ($_FILES['myfile']['type']) {
       case "image/bmp":
        $type="bmp";
        break;
       case "image/gif":
        $type="gif";
        break;
       case "image/jpeg":
       case "image/pjpeg":
        $type="jpg";
        break;
       case "image/png":
        $type="png";
        break;
       case "application/zip":
        $type="zip";
        break;
       case "application/rar":
        $type="rar";
        break;
       default:
        $type="other";
  }
  if ($_FILES['myfile']['size']>512000||$_FILES['myfile']['size']==0)  //判断文件是否过大或者没有内容
       echo("\t\t\t\t<p>上传失败!文件大小错误。</p>");
  elseif ($type=="other")  //判断文件类型是否符合要求
       echo("\t\t\t\t<p>上传失败!文件格式错误!</p>");
  else {
       $name=time()."_".md5($_FILES['myfile']['name']).".".$type;  //给新文件取一个名字
       move_uploaded_file($_FILES['myfile']['tmp_name'],"./upload/".$name);  //移动上传的文件到置顶目录
       echo("\t\t\t\t<p>文件已成功上传,您可以用如下地址访问:</p>\n");
       echo("\t\t\t\t<p>".$pun_config['o_base_url']."/upload/".$name."</p>\n");  //返回访问地址
  }
  echo("\t\t\t\t<p>".'<a href="javascript: history.go(-1)">'."Go back</a></p>\n");
}
else {
?>
         <p>可上传的文件类型:bmp、jpg、gif、png、zip和rar。</p>
         <p>文件大小不得超过500KB。</p>
         <form id="example" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI'] ?>">
              <div class="inform">
               <fieldset>
                <legend>选择您要上传的文件:</legend>
                <div class="infldset">
                <input type="hidden" name="MAX_FILE_SIZE" value="512000">
                <p><input name="myfile" type="file" size="40"></p>
                <p><input name="submit" type="submit" value="上传"></p>
                </div>
               </fieldset>
              </div>
         </form>
<?php
}
?>
        </div>
       </div>

命名为AMP_upload.php,保存在plugins目录(用UTF-8格式,否则会有乱码)。在根目录下新建upload目录,并设置属性777即可使用。

xchange 发表于 2005 年 5 月 28 日 12:47:01

PunBB插件编写初探

PunBB安装文件中提供了一个演示用的插件AMP_Example.php。根据这个演示,我编写了一个简单的上传文件插件做测试。

就目前来看,plugin下的插件只能供管理员和版主使用。其文件名必须以"AMP_"或者"AP_"开始,"AMP_"表明该插件可以被管理员和版主使用,"AP_"开头的则只能由管理员使用。前缀之后的部分将出现在管理菜单下面的"插件"栏里。

plugin下的文件由admin_loader.php在运行过程中动态载入,因此可以使用全部的全局变量和一些通用的函数。插件中如果要显示左侧的管理员菜单,必须调用generate_admin_menu($plugin)函数。另外在插件中如果使用了表单,其action属性一定要使用$_SERVER['REQUEST_URI']。

下面是上传文件插件的源代码:

<?php
// 如果直接访问该文件则退出执行
if (!defined('PUN'))
  exit;

// 告诉admin_load.php这确实是一个插件而且被载入了
define('PUN_PLUGIN_LOADED', 1);

//输出管理员菜单
generate_admin_menu($plugin);

?>

  <div id="exampleplugin" class="blockform">
       <h2><span>插件信息</span></h2>
       <div class="box">
        <div class="inbox">
         <p>该插件由Xchange开发,用于管理员和版主上传较小的文件,并做为编写插件的演示。</p>
        </div>
       </div>
       <h2 class="block2"><span>文件上传</span></h2>
       <div class="box">
        <div class="inbox">

<?php
if (isset($_FILES['myfile'])) {
  //判断文件类型
  switch ($_FILES['myfile']['type']) {
       case "image/bmp":
        $type="bmp";
        break;
       case "image/gif":
        $type="gif";
        break;
       case "image/jpeg":
       case "image/pjpeg":
        $type="jpg";
        break;
       case "image/png":
        $type="png";
        break;
       case "application/zip":
        $type="zip";
        break;
       case "application/rar":
        $type="rar";
        break;
       default:
        $type="other";
  }
  if ($_FILES['myfile']['size']>512000||$_FILES['myfile']['size']==0)  //判断文件是否过大或者没有内容
       echo("\t\t\t\t<p>上传失败!文件大小错误。</p>");
  elseif ($type=="other")  //判断文件类型是否符合要求
       echo("\t\t\t\t<p>上传失败!文件格式错误!</p>");
  else {
       $name=time()."_".md5($_FILES['myfile']['name']).".".$type;  //给新文件取一个名字
       move_uploaded_file($_FILES['myfile']['tmp_name'],"./upload/".$name);  //移动上传的文件到置顶目录
       echo("\t\t\t\t<p>文件已成功上传,您可以用如下地址访问:</p>\n");
       echo("\t\t\t\t<p>".$pun_config['o_base_url']."/upload/".$name."</p>\n");  //返回访问地址
  }
  echo("\t\t\t\t<p>".'<a href="javascript: history.go(-1)">'."Go back</a></p>\n");
}
else {
?>
         <p>可上传的文件类型:bmp、jpg、gif、png、zip和rar。</p>
         <p>文件大小不得超过500KB。</p>
         <form id="example" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI'] ?>">
              <div class="inform">
               <fieldset>
                <legend>选择您要上传的文件:</legend>
                <div class="infldset">
                <input type="hidden" name="MAX_FILE_SIZE" value="512000">
                <p><input name="myfile" type="file" size="40"></p>
                <p><input name="submit" type="submit" value="上传"></p>
                </div>
               </fieldset>
              </div>
         </form>
<?php
}
?>
        </div>
       </div>

命名为AMP_upload.php,保存在plugins目录(用UTF-8格式,否则会有乱码)。在根目录下新建upload目录,并设置属性777即可使用。

xchange 发表于 2005 年 5 月 28 日 12:47:01

PunBB插件编写初探

PunBB安装文件中提供了一个演示用的插件AMP_Example.php。根据这个演示,我编写了一个简单的上传文件插件做测试。

就目前来看,plugin下的插件只能供管理员和版主使用。其文件名必须以"AMP_"或者"AP_"开始,"AMP_"表明该插件可以被管理员和版主使用,"AP_"开头的则只能由管理员使用。前缀之后的部分将出现在管理菜单下面的"插件"栏里。

plugin下的文件由admin_loader.php在运行过程中动态载入,因此可以使用全部的全局变量和一些通用的函数。插件中如果要显示左侧的管理员菜单,必须调用generate_admin_menu($plugin)函数。另外在插件中如果使用了表单,其action属性一定要使用$_SERVER['REQUEST_URI']。

下面是上传文件插件的源代码:

<?php
// 如果直接访问该文件则退出执行
if (!defined('PUN'))
  exit;

// 告诉admin_load.php这确实是一个插件而且被载入了
define('PUN_PLUGIN_LOADED', 1);

//输出管理员菜单
generate_admin_menu($plugin);

?>

  <div id="exampleplugin" class="blockform">
       <h2><span>插件信息</span></h2>
       <div class="box">
        <div class="inbox">
         <p>该插件由Xchange开发,用于管理员和版主上传较小的文件,并做为编写插件的演示。</p>
        </div>
       </div>
       <h2 class="block2"><span>文件上传</span></h2>
       <div class="box">
        <div class="inbox">

<?php
if (isset($_FILES['myfile'])) {
  //判断文件类型
  switch ($_FILES['myfile']['type']) {
       case "image/bmp":
        $type="bmp";
        break;
       case "image/gif":
        $type="gif";
        break;
       case "image/jpeg":
       case "image/pjpeg":
        $type="jpg";
        break;
       case "image/png":
        $type="png";
        break;
       case "application/zip":
        $type="zip";
        break;
       case "application/rar":
        $type="rar";
        break;
       default:
        $type="other";
  }
  if ($_FILES['myfile']['size']>512000||$_FILES['myfile']['size']==0)  //判断文件是否过大或者没有内容
       echo("\t\t\t\t<p>上传失败!文件大小错误。</p>");
  elseif ($type=="other")  //判断文件类型是否符合要求
       echo("\t\t\t\t<p>上传失败!文件格式错误!</p>");
  else {
       $name=time()."_".md5($_FILES['myfile']['name']).".".$type;  //给新文件取一个名字
       move_uploaded_file($_FILES['myfile']['tmp_name'],"./upload/".$name);  //移动上传的文件到置顶目录
       echo("\t\t\t\t<p>文件已成功上传,您可以用如下地址访问:</p>\n");
       echo("\t\t\t\t<p>".$pun_config['o_base_url']."/upload/".$name."</p>\n");  //返回访问地址
  }
  echo("\t\t\t\t<p>".'<a href="javascript: history.go(-1)">'."Go back</a></p>\n");
}
else {
?>
         <p>可上传的文件类型:bmp、jpg、gif、png、zip和rar。</p>
         <p>文件大小不得超过500KB。</p>
         <form id="example" method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['REQUEST_URI'] ?>">
              <div class="inform">
               <fieldset>
                <legend>选择您要上传的文件:</legend>
                <div class="infldset">
                <input type="hidden" name="MAX_FILE_SIZE" value="512000">
                <p><input name="myfile" type="file" size="40"></p>
                <p><input name="submit" type="submit" value="上传"></p>
                </div>
               </fieldset>
              </div>
         </form>
<?php
}
?>
        </div>
       </div>

命名为AMP_upload.php,保存在plugins目录(用UTF-8格式,否则会有乱码)。在根目录下新建upload目录,并设置属性777即可使用。
页: 1 [2]
查看完整版本: PunBB插件编写初探