注册  找回密码

JBTALKS.CC


查看: 3131|回复: 17

contact us form正常发送,但是附件没有被upload和显示在email里头?

 关闭 [复制链接]

14

主题

39

好友

1万

积分

无敌名嘴

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

发表于 2009-9-26 01:42 PM |显示全部楼层
我目前参考和研究做了一个form
目标是发送去gmail
目前所有验证和发送内容都成功送达
只有upload图片的这个功能不管怎么写都不会有效果
邮件当中就只有其他内容,就是这个上传的图片不会显示
而且上传的图片的folder立面也没有图片(应该是没有上传到吧)

不知道哪位大大,可以和我解释下
form里头要加入附件的写法和做法啊?
感谢






23

主题

5

好友

4778

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

发表于 2009-9-26 01:55 PM |显示全部楼层
<HEAD>

<script type="text/javascript">

var maxWidth=100;
  // height to resize large images to
var maxHeight=100;
  // valid file types
var fileTypes=["bmp","gif","png","jpg","jpeg"];
  // the id of the preview image tag
var outImage="previewField";
  // what to display when the image is not valid
var defaultPic="spacer.gif";



function preview(what){
  var source=what.value;
  var ext=source.substring(source.lastIndexOf(".")+1,source.length).toLowerCase();
  for (var i=0; i<fileTypes.length; i++) if (fileTypes==ext) break;
  globalPic=new Image();
  if (i<fileTypes.length) globalPic.src=source;
  else {
    globalPic.src=defaultPic;
    alert("THAT IS NOT A VALID IMAGE\nPlease load an image with an extention of one of the following:\n\n"+fileTypes.join(", "));
  }
  setTimeout("applyChanges()",200);
}
var globalPic;
function applyChanges(){
  var field=document.getElementById(outImage);
  var x=parseInt(globalPic.width);
  var y=parseInt(globalPic.height);
  if (x>maxWidth) {
    y*=maxWidth/x;
    x=maxWidth;
  }
  if (y>maxHeight) {
    x*=maxHeight/y;
    y=maxHeight;
  }
  field.style.display=(x<1 || y<1)?"none":"";
  field.src=globalPic.src;
  field.width=x;
  field.height=y;
}
// End -->
</script>
</HEAD>


<BODY>

<div align="center" style="line-height: 1.9em;">
Test it by locating a valid file on your hard drive:
<br>
<input type="file" id="picField" onChange="preview(this)">
<br>
<img alt="Graphic will preview here" id="previewField" src="spacer.gif">
<br>






回复

使用道具 举报

14

主题

39

好友

1万

积分

无敌名嘴

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

发表于 2009-9-26 02:35 PM |显示全部楼层
em....感谢小恶魔J@YL()NG的帮助

但是,我是要把upload得图片连同我做的contact us form一同发送到email里头em0001






回复

使用道具 举报

7

主题

1

好友

5108

积分

一流名嘴

Rank: 12Rank: 12Rank: 12

发表于 2009-9-26 04:51 PM |显示全部楼层
原帖由 devilbat 于 2009-9-26 01:42 PM 发表
我目前参考和研究做了一个form
目标是发送去gmail
目前所有验证和发送内容都成功送达
只有upload图片的这个功能不管怎么写都不会有效果
邮件当中就只有其他内容,就是这个上传的图片不会显示
而且上传的图 ...



你是用 PHP 還是 .NET 編寫??
把你的附件 header 部分貼出來, 這樣才能夠告訴你問題所在






回复

使用道具 举报

6

主题

1

好友

745

积分

青铜长老

Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7Rank: 7

发表于 2009-9-26 07:00 PM |显示全部楼层
phpmailer 搞定。。。






回复

使用道具 举报

46

主题

6

好友

6456

积分

百变名嘴

Rank: 13Rank: 13Rank: 13Rank: 13

发表于 2009-9-26 07:21 PM |显示全部楼层
原帖由 vampcheah 于 2009-9-26 07:00 PM 发表
phpmailer 搞定。。。


正常来讲的话就include hosting 给的PHP mailer 就gao dim 了啊  什么都不必写。
自己打开Hosting 的manual 来读读看吧。






回复

使用道具 举报

14

主题

39

好友

1万

积分

无敌名嘴

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

发表于 2009-9-26 09:22 PM |显示全部楼层
这个是index.php里头的
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>SimpleForm Example</title>
        <link rel="stylesheet" href="style.css" type="text/css" media="screen"/>

        <link rel="stylesheet" href="simpleform.css" type="text/css" media="screen"/>
        <script type="text/javascript" src="checkform.mini.js"></script>
</head>

<body>

        <?php
        define('CONFIG_PATH', '');
        require_once "simpleform.php";
        $sForm = new simpleForm();
       
        $sForm->handleMessage();
        ?>
                    
        <form action="simpleform.php" method="post" onsubmit="return checkform(this)" enctype="multipart/form-data">  
        <fieldset>
                <?php $sForm->printData(1); ?>
                <legend>Personal Information:</legend>
        <label for="name" >Name<span class="required">(required)</span></label>
        <input name="name" id="name" type="text" value="" />
        
        <label for="nickname" >Nickname<span class="required">(required)</span></label>
        <input name="nickname" id="nickname" type="text" value="" />  
         
        <label for="age" >Your Age<span class="required">(required)</span></label>
        <input name="age" id="age" type="text" value="" />  
        
        <label for="ic" >IC/Passport Number<span class="required">(required)</span></label>
        <input name="ic" id="ic" type="text" value="" />
        
        <label for="adds" >Address</label>
        <input name="adds" id="adds" type="text" value="" />
         
        <label for="color">Race :</label>
        <select name="race" id="race">
                        <option value="-">Choose your race...</option>
                        <option value="Chinese">Chinese</option>
                        <option value="Melay">Melay</option>
                        <option value="India">India</option>
            <option value="Others/foreigner">Others/foreigner</option>
                </select>                           
                                 
        <label for="email">Email <span class="required">(required)</span></label>
        <input name="email" id="email" type="text" value="" />
        
                <label for="phone">Telephone <span class="required">(required)</span></label>
        <input name="phone" id="phone" type="text" value="" />              
        </fieldset>
        
        <fieldset>
            <legend>Figure Information</legend>
            
                        <label for="bwh">BWH (Fill as: B/W/H) <span class="required">(required)</span></label>
                <input name="bwh" id="bwh" type="text" value="" />
            
            <label for="weight">Weight(kg)<span class="required">(required)</span></label>
                <input name="weight" id="weight" type="text" value="" />
            
            <label for="height">Height(cm)<span class="required">(required)</span></label>
                <input name="height" id="height" type="text" value="" />   
            
            <label for="shoes">Shoes Size'<span class="required">(required)</span></label>
                <input name="shoes" id="shoes" type="text" value="" />                        
            
        </fieldset>
        
        <fieldset>
            <legend>Extra Information</legend>
            
                        <label for="langu">Language(Speaking/Writing/Reading)</label>
                <input name="langu" id="langu" type="text" value="" />
            
            <label for="wex">Working Experiences</label>
                <input name="wex" id="wex" type="text" value="" />
            
            <label for="prof">Profesional in (Example: sales, model...)</label>
                <input name="prof" id="prof" type="text" value="" />                                    
            
        </fieldset>
               
                <fieldset>
            <legend>Submit Your Pictures(Without Editing by any photo softwares.)<span class="required">(required)</span></legend>
            <label for="image">Picture1</label>
            <input type="file" name="image" value="" />
        </fieldset>

        <p><button type="submit" value="Upload image">Submit this!</button></p>
    </form>
   
</body>
</html>






回复

使用道具 举报

14

主题

39

好友

1万

积分

无敌名嘴

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

发表于 2009-9-26 09:22 PM |显示全部楼层
这个是simpeform.php的内容
  1. <?php
  2. /*
  3. if ( !defined('CONFIG_PATH') )
  4.         // path to config file from simpleform.php
  5.         $PATH_TO_CONFIG_FILE = '';
  6. // No need to edit under this line //////////////////////////////
  7. else
  8.         $PATH_TO_CONFIG_FILE = CONFIG_PATH;

  9. define( 'CONFIG_FILE' , $PATH_TO_CONFIG_FILE . 'sf-config.php' );
  10. if ( isset( $_POST['simpleform'] ) )
  11. {
  12.         $sForm = new simpleForm();
  13.         $sForm->processData();
  14. }

  15. # ------------------------------------------------------------ #
  16. // SIMPLEFORM CLASS                                                                                //
  17. # ------------------------------------------------------------ #

  18. class simpleForm
  19. {
  20.         private $aSettings = array();
  21.         private $aForms    = array();
  22.         private $aForm     = array();
  23.         private $szContent, $szHeaders;
  24.        
  25.         public function __construct()
  26.         {
  27.                                
  28.                 global $aSettings;
  29.                 global $aForms;
  30.                 global $_POST;
  31.                
  32.                 if ( file_exists( CONFIG_FILE ) )
  33.                         require_once ( CONFIG_FILE );
  34.                 else
  35.                         $bDebug = ( DEBUG_MODE ) ?  $this->debug( 'config' ) : false ;
  36.                
  37.                 if ( empty( $aSettings ) || empty( $aForms ) )
  38.                         $bDebug = ( DEBUG_MODE ) ?  $this->debug( 'settings' ) : false ;
  39.                
  40.                 $this->aSettings = $aSettings;
  41.                 $this->aForms          = $aForms;
  42.                                                
  43.         }
  44.        
  45.         public function handleMessage()
  46.         {
  47.                 global $_GET;
  48.                 if ( isset( $_GET[GET_NAME] ) )
  49.                 $this->printMessage( $_GET[GET_NAME] );
  50.         }
  51.        
  52.         private function printMessage( $iMessageNumber )
  53.         {
  54.                 switch ( $iMessageNumber )
  55.                 {
  56.                         case 1:
  57.                                 $szMessageType = "ok";
  58.                                 $szMsg = $this->aSettings['aMessages']['szSubmitSucess'];
  59.                                 $bDisplay  = true;
  60.                         break;

  61.                         case 2:
  62.                                 $szMessageType = "error";
  63.                                 $szMsg = $this->aSettings['aMessages']['szMissingFields'];
  64.                                 $bDisplay  = true;
  65.                         break;

  66.                         case 3:
  67.                                 $szMessageType = "error";
  68.                                 $szMsg = $this->aSettings['aMessages']['szUnvalidEmail'];
  69.                                 $bDisplay  = true;
  70.                         break;

  71.                         case 4:
  72.                                 $szMessageType = "alert";
  73.                                 $szMsg = $this->aSettings['aMessages']['szSystemError'];
  74.                                 $bDisplay  = true;
  75.                         break;

  76.                         default:
  77.                                 $bDisplay = false;
  78.                         break;
  79.                 }
  80.                
  81.                 if ( $bDisplay == true )
  82.                         echo '<p class="message-box '.$szMessageType.'">'.$szMsg.'</p>';
  83.         }
  84.        
  85.         public function printData( $iFormNumber )
  86.         {
  87.                                
  88.                 if ( is_int( $iFormNumber ) && isset( $this->aForms[$iFormNumber] ) )
  89.                 {
  90.                         $this->aForm = $this->aForms[$iFormNumber];
  91.                        
  92.                         if ( !empty($this->aForm['szFormRequired']) )
  93.                         {
  94.                                 $szReturn = "";               
  95.                                 foreach ( $this->aForm['szFormRequired'] as $szName )
  96.                                 {
  97.                                         $szReturn .= "|".$szName."::".$this->aForm['aFormFields'][$szName];                       
  98.                                 }
  99.                                
  100.                                 if ( $szReturn != "" )
  101.                                 echo '<input type="hidden" name="validate" value="'.substr( $szReturn, 1, strlen($szReturn)).'" />'."\n";
  102.                         }                       
  103.                        
  104.                         echo '<input type="hidden" name="simpleform" value="'.$iFormNumber.'" />'."\n";
  105.                        
  106.                 } else {
  107.                         $bDebug = ( DEBUG_MODE ) ? $this->debug( 'formnumber' ) : false;
  108.                 }
  109.         }
  110.        
  111.         public function processData()
  112.         {
  113.                 if ( !isset( $this->aForms[$_POST['simpleform']] ) )
  114.                 $this->quit('Form not found.');
  115.                
  116.                 $this->aForm = $this->aForms[$_POST['simpleform']];
  117.                
  118.                 $this->checkData();
  119.                
  120.                 $this->generateContent();
  121.                 $this->declareHeaders();
  122.                
  123.                 $this->sendEmail();
  124.         }
  125.                
  126.         private function checkData()
  127.         {
  128.                 if ( !empty($this->aForm['szFormRequired']) )
  129.                 {
  130.                         foreach ( $this->aForm['szFormRequired'] as $szKey )
  131.                         {
  132.                                                                
  133.                                 if ( isset($_POST[$szKey]) && !is_array($_POST[$szKey]) && trim($_POST[$szKey]) == ""  )
  134.                                 $this->alertResponce(2);
  135.                                
  136.                                                        
  137.                                 $bIsEmail = strpos( $szKey, "email" );
  138.                                 if ( $bIsEmail !== false  )
  139.                                 {  
  140.                                        
  141.                                         if  ( $this->validEmail( $_POST[$szKey] ) == false ) $this->alertResponce(3);
  142.                                 }
  143.                         }
  144.                 }
  145.                                
  146.         }

  147.         public function validEmail($email)
  148.         {
  149.            /*
  150.            validEmail
  151.            By Douglas Lovell
  152.            [url]http://www.linuxjournal.com/article/9585[/url] */
  153.          
  154.            $isValid = true;
  155.            $atIndex = strrpos($email, "@");
  156.            if (is_bool($atIndex) && !$atIndex)
  157.            {
  158.               $isValid = false;
  159.            }
  160.            else
  161.            {
  162.               $domain = substr($email, $atIndex+1);
  163.               $local = substr($email, 0, $atIndex);
  164.               $localLen = strlen($local);
  165.               $domainLen = strlen($domain);
  166.               if ($localLen < 1 || $localLen > 64)
  167.               {
  168.                  $isValid = false;
  169.               }
  170.               else if ($domainLen < 1 || $domainLen > 255)
  171.               {
  172.                  $isValid = false;
  173.               }
  174.               else if ($local[0] == '.' || $local[$localLen-1] == '.')
  175.               {
  176.                  $isValid = false;
  177.               }
  178.               else if (preg_match('/\\.\\./', $local))
  179.               {
  180.                  $isValid = false;
  181.               }
  182.               else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
  183.               {
  184.                  $isValid = false;
  185.               }
  186.               else if (preg_match('/\\.\\./', $domain))
  187.               {
  188.                  $isValid = false;
  189.               }
  190.               else if
  191.         (!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',
  192.                          str_replace("\\\\","",$local)))
  193.               {
  194.                  if (!preg_match('/^"(\\\\"|[^"])+"$/',
  195.                      str_replace("\\\\","",$local)))
  196.                  {
  197.                     $isValid = false;
  198.                  }
  199.               }
  200.        
  201.                         if (  defined('CHECK_EMAIL_ADDRESS_DNS') && CHECK_EMAIL_ADDRESS_DNS == true )
  202.                         {
  203.                                 if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
  204.                                 $isValid = false;
  205.                         }
  206.        
  207.              
  208.            }
  209.            return $isValid;
  210.         }
  211.        
  212.         private function generateContent()
  213.         {
  214.                 $this->szContent  = $this->aSettings['szFrom'].': '.$this->aForm['szFormTitle']."\n";
  215.                 $szSeparador      = "------------------------------------------------------------\n\n";
  216.                 $this->szContent .= $szSeparador;
  217.                 $szLast = "";

  218.                 foreach( $this->aForm['aFormFields'] as $szValue => $szReal )
  219.                 {
  220.                        
  221.                         $szValue = str_replace('[]','', $szValue );
  222.                        
  223.                         if( isset($_POST[$szValue]) )
  224.                         {
  225.                                 if( $szLast != $szReal )
  226.                                 {
  227.                                         $this->szContent .= $szReal.":";
  228.                                         $szLast = $szReal;
  229.                                 };
  230.                         
  231.                                 if ( is_array($_POST[$szValue]) )
  232.                                 {
  233.                                         foreach ( $_POST[$szValue] as $szSelected )
  234.                                         $this->szContent .= "\n        * ".$szSelected;
  235.                                        
  236.                                         $this->szContent .= "\n\n";
  237.                                 } else {
  238.                         $this->szContent .= " ".$_POST[$szValue]."\n\n";
  239.                                 }
  240.                
  241.                         }
  242.                         else if ( $szValue{0} == "-" )
  243.                         {
  244.                                 $this->szContent .= "\n\n".$szReal."\n";
  245.                                 $this->szContent .= $szSeparador;
  246.                                 $szLast = $szReal;
  247.                         };
  248.                 };
  249.                
  250.                 $bDebug = ( DEBUG_MODE ) ?  die(nl2br( $this->szContent )) : false ;


  251.         }
  252.        
  253.         private function declareHeaders()
  254.         {
  255.                 $this->szHeaders  = 'From: ' .  $this->aSettings['szFromEmail'] . "\r\n";
  256.                 $this->szHeaders .= 'Reply-To: ' . $this->aSettings['szFromEmail'] . "\r\n" . 'X-Mailer: PHP/' . phpversion();
  257.         }
  258.        
  259.         private function sendEmail()
  260.         {
  261.                 if( mail( $this->aSettings['szRecipient'], $this->aSettings['szFrom'].': '.$this->aForm['szFormTitle'], $this->szContent, $this->szHeaders, '-f' . $this->aSettings['szFromEmail'] ) )
  262.                 {
  263.                         $this->alertResponce(1);
  264.                 }
  265.                 else  
  266.                 {   
  267.                    $this->alertResponce(4);
  268.                 };
  269.         }
  270.        
  271.         private function alertResponce( $iMessageNumber  )
  272.         {
  273.                 header( "location: ".$this->aForm['szFormURL']."?".GET_NAME."=".$iMessageNumber );
  274.                 die();
  275.         }
  276.        
  277.         private function debug( $szCase )
  278.         {
  279.                 switch ( $szCase )
  280.                 {
  281.                         case "config":
  282.                                 $szMessageType = "error";
  283.                                 $szMsg = "SimpleForm config file missing.";
  284.                                 $bDisplay  = true;
  285.                         break;
  286.                        
  287.                         case "settings":
  288.                                 $szMessageType = "error";
  289.                                 $szMsg = "Missing SimpleForm configuration values. Please check your settings.";
  290.                                 $bDisplay  = true;
  291.                         break;

  292.                         case "formnumber":
  293.                                 $szMessageType = "error";
  294.                                 $szMsg = "The form requested can't be found.";
  295.                                 $bDisplay  = true;
  296.                         break;

  297.                         default:
  298.                                 $bDisplay = false;
  299.                         break;
  300.                 }
  301.                
  302.                 if ( $bDisplay == true )
  303.                         echo '<p class="message-box '.$szMessageType.'">'.$szMsg.'</p>';
  304.         }
  305.        
  306.         private function quit( $szMessage )
  307.         {
  308.                 $szMessage = '<p><strong>Error:</strong> '.$szMessage.'</p>';
  309.                 die( $szMessage );
  310.         }
  311.        
  312. }
  313. ?>

复制代码

接下一贴






回复

使用道具 举报

14

主题

39

好友

1万

积分

无敌名嘴

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

发表于 2009-9-26 09:23 PM |显示全部楼层
  1. <?php
  2. //define a maxim size for the uploaded images in Kb
  3. define ("MAX_SIZE","100");

  4. //This function reads the extension of the file. It is used to determine if the file  is an image by checking the extension.
  5. function getExtension($str) {
  6.          $i = strrpos($str,".");
  7.          if (!$i) { return ""; }
  8.          $l = strlen($str) - $i;
  9.          $ext = substr($str,$i+1,$l);
  10.          return $ext;
  11. }

  12. //This variable is used as a flag. The value is initialized with 0 (meaning no error  found)  
  13. //and it will be changed to 1 if an errro occures.  
  14. //If the error occures the file will not be uploaded.
  15. $errors=0;
  16. //checks if the form has been submitted
  17. if(isset($_POST['Submit']))
  18. {
  19.         //reads the name of the file the user submitted for uploading
  20.         $image=$_FILES['image']['name'];
  21.         //if it is not empty
  22.         if ($image)
  23.         {
  24.         //get the original name of the file from the clients machine
  25.                 $filename = stripslashes($_FILES['image']['name']);
  26.         //get the extension of the file in a lower case format
  27.                   $extension = getExtension($filename);
  28.                 $extension = strtolower($extension);
  29.         //if it is not a known extension, we will suppose it is an error and will not  upload the file,  
  30.         //otherwise we will do more tests
  31. if (($extension != "jpg") && ($extension != "jpeg") && ($extension != "png") && ($extension != "gif"))
  32.                 {
  33.                 //print error message
  34.                         echo '<h1>Unknown extension!</h1>';
  35.                         $errors=1;
  36.                 }
  37.                 else
  38.                 {
  39. //get the size of the image in bytes
  40. //$_FILES['image']['tmp_name'] is the temporary filename of the file
  41. //in which the uploaded file was stored on the server
  42. $size=filesize($_FILES['image']['tmp_name']);

  43. //compare the size with the maxim size we defined and print error if bigger
  44. if ($size > MAX_SIZE*1024)
  45. {
  46.         echo '<h1>You have exceeded the size limit!</h1>';
  47.         $errors=1;
  48. }

  49. //we will give an unique name, for example the time in unix time format
  50. $image_name=time().'.'.$extension;
  51. //the new name will be containing the full path where will be stored (images folder)
  52. $newname="http://www.seasonblog.com.my/special/model/form/mimages/".$image_name;
  53. //we verify if the image has been uploaded, and print error instead
  54. $copied = copy($_FILES['image']['tmp_name'], $newname);
  55. if (!$copied)
  56. {
  57.         echo '<h1>Copy unsuccessfull!</h1>';
  58.         $errors=1;
  59. }}}}


  60. ?>
复制代码






回复

使用道具 举报

14

主题

39

好友

1万

积分

无敌名嘴

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

发表于 2009-9-26 09:28 PM |显示全部楼层
原帖由 宅男-兜着走 于 2009-9-26 07:21 PM 发表


正常来讲的话就include hosting 给的PHP mailer 就gao dim 了啊  什么都不必写。
自己打开Hosting 的manual 来读读看吧。


em...不是很明白呢。。。怎么说啊?em0016
不是很了解这方面的。。。抱歉。。。学习中






回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

JBTALKS.CC |联系我们 |隐私政策 |Share

GMT+8, 2024-3-29 03:07 PM , Processed in 0.120574 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

Thanks to ImageShack for Free Image Hosting
Ultra High-speed web hosting powered by iCore Technology Sdn. Bhd.
本论坛言论纯属发表者个人意见,与本论坛立场无关
Copyright © 2003-2012 JBTALKS.CC All Rights Reserved
合作联盟网站:
JBTALKS 马来西亚中文论坛 | JBTALKS我的空间 | JBTALKS部落 | ICORE TECHNOLOGY SDN. BHD. | GXUnlimited-ECSHOP | TM UniFi | TM Streamyx | TM Fixed Line
www.jbtalks.cc | mobile.jbtalks.cc | www.jbtalks.com | www.jbtalks.my | www.icore.com.my | www.icorehosting.com | www.icorehosting.net | www.cttsite.com | www.icore.my | www.lpohchin.com
bbs.jbtalks.cc | bbs.jbtalks.com | bbs.jbtalks.my | bbs.jbtalks.com
回顶部