search
HomeBackend DevelopmentPHP TutorialHow to rename and add watermark to uploaded files in ckeditor_PHP tutorial

How to rename and add watermark to uploaded files in ckeditor_PHP tutorial

Jul 13, 2016 pm 04:57 PM
ckeditoruploadintroduceuseaboutaddclassmateexistdocumentarticlemethodwatermarkConfigurationdouble naming

This article will introduce to you the configuration of renaming and adding watermarks to upload files using ckeditor. Students who need to know more can refer to it.


First: I want the uploaded files to be organized into folders based on date

Please modify the config.php file in the editoreditorfilemanagerconnectorsphp folder

The following content was found:

The code is as follows Copy code
 代码如下 复制代码

// Path to user files relative to the document root.

$Config['UserFilesPath'] =

// Path to user files relative to the document root.

$Config['UserFilesPath'] =
 代码如下 复制代码

// Path to user files relative to the document root.

$Config['UserFilesPath'] = '/uploadfiles/'.date("Ym")."/" ;

was changed to:

The code is as follows Copy code

// Path to user files relative to the document root.

$Config['UserFilesPath'] = '/uploadfiles/'.date("Ym")."/" ;

The uploaded files will be stored according to date.

 代码如下 复制代码

// Do a cleanup of the file name to avoid possible problems

function SanitizeFileName( $sNewFileName )

{

global $Config ;

$sNewFileName = stripslashes( $sNewFileName ) ;

// Replace dots in the name with underscores (only one dot can be there... security issue).

if ( $Config['ForceSingleExtension'] )

 $sNewFileName = preg_replace( '/.(?![^.]*$)/', '_', $sNewFileName ) ;

// Remove / | : ? * "

$sNewFileName = preg_replace( '/\|/|||:|?|*|"|/', '_', $sNewFileName );

return $sNewFileName ;

}

Second: Rename

Please modify the io.php file in this folder
 代码如下 复制代码

// Do a cleanup of the file name to avoid possible problems

function SanitizeFileName( $sNewFileName )

{

global $Config ;

$sNewFileName = stripslashes( $sNewFileName ) ;

// Replace dots in the name with underscores (only one dot can be there... security issue).

if ( $Config['ForceSingleExtension'] )

 $sNewFileName = preg_replace( '/.(?![^.]*$)/', '_', $sNewFileName ) ;

$sExtension = substr( $sNewFileName, ( strrpos($sNewFileName, '.') + 1 ) ) ;

$sNewFileName = my_setfilename().'.'.$sExtension;

return $sNewFileName ;

}

function my_setfilename(){

$gettime = explode(' ',microtime());

$string = 'abcdefghijklmnopgrstuvwxyz0123456789';

$rand = '';

for ($x=0;$x

 $rand .= substr($string,mt_rand(0,strlen($string)-1),1);

return date("ymdHis").substr($gettime[0],2,6).$rand;

}


 

Found:
The code is as follows Copy code
// Do a cleanup of the file name to avoid possible problems function SanitizeFileName( $sNewFileName ) { global $Config ; $sNewFileName = stripslashes( $sNewFileName ) ; // Replace dots in the name with underscores (only one dot can be there... security issue). if ( $Config['ForceSingleExtension'] ) $sNewFileName = preg_replace( '/.(?![^.]*$)/', '_', $sNewFileName ) ; // Remove / | : ? * " $sNewFileName = preg_replace( '/\|/|||:|?|*|"|/', '_', $sNewFileName ); return $sNewFileName ; }
was changed to:
The code is as follows Copy code
// Do a cleanup of the file name to avoid possible problems function SanitizeFileName( $sNewFileName ) { global $Config ; $sNewFileName = stripslashes( $sNewFileName ) ; // Replace dots in the name with underscores (only one dot can be there... security issue). if ( $Config['ForceSingleExtension'] ) $sNewFileName = preg_replace( '/.(?![^.]*$)/', '_', $sNewFileName ) ; $sExtension = substr( $sNewFileName, ( strrpos($sNewFileName, '.') + 1 ) ) ; $sNewFileName = my_setfilename().'.'.$sExtension; return $sNewFileName ; } function my_setfilename(){ $gettime = explode(' ',microtime()); $string = 'abcdefghijklmnopgrstuvwxyz0123456789'; $rand = ''; for ($x=0;$x $rand .= substr($string,mt_rand(0,strlen($string)-1),1); return date("ymdHis").substr($gettime[0],2,6).$rand; }

Fckeditor upload image file name duplicate name and Chinese garbled solution

After testing, Fckeditor 2.6.6 did not solve the problem of the Chinese name of the uploaded file becoming garbled. This is because Fckeditor did not rename the file when implementing the upload function, which easily led to the problem of duplicate names and garbled characters for uploaded image files.

The solution to uploading image files with duplicate names and garbled characters is as follows

Open commands.php in the editor/filemanager/connectors/php directory, find the FileUpload function, in

The code is as follows Copy code
 代码如下 复制代码

 $sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
$sExtension = strtolower( $sExtension ) ;

后添加
$sFileName = rand(0,100).".".$sExtension;

$sExtension = substr( $sFileName, ( strrpos($sFileName, '.') + 1 ) ) ;
$sExtension = strtolower( $sExtension ) ; Add after
$sFileName = rand(0,100).".".$sExtension;

The rand function here can change the renaming rules as needed.
Another solution to the garbled file name of the uploaded image is to use the iconv function to convert the file name, but there is still a problem of duplicate names, so it is best to rename the file name of the uploaded image to Fckeditor.

Fckeditor uploads pictures to add watermark function

It is essential for website owners to protect the copyright of images and add watermarks. We can use the PHP watermark function combined with the Fckeditor file upload function FileUpload to implement the image watermark function. For watermark functions, please refer to the PHP image watermark function: Supports the use of images and Add watermark to an article in text mode.

$imgSrc: target image, can have relative directory address,
$markImg: watermark image, which can have a relative directory address and supports both PNG and GIF formats. For example, if the watermark image is in the mark directory of the executable file, it can be written as: mark/mark.gif
$markText: Watermark text added to the image
$TextColor: font color of watermark text
$markPos: The position where the image watermark is added, value range: 0~9
0: Random position, randomly select a position between 1~8
1: Top left 2: Top center 3: Top right 4: Left center
5: Center of the picture 6: Center on the right 7: Center on the bottom 8: Center on the bottom 9: Center on the bottom
$fontType: specific font library, can have relative directory address
$markType: The way to add watermarks to pictures, img means to add watermarks as pictures, text means to add watermarks as text

Code comments:

Line 4~6: Get the width and height of the target image
Lines 8~22: Call different functions according to the image type to obtain the operation image identifier

GetImageSize function knowledge points: GetImageSize can be used without installing GD, and its return value array has four elements. Index value 0 is the image height. Index value 1 is the width of the image. Index value 2 is the file format of the image, with value 1 being GIF format, 2 being JPEG/JPG format, and 3 being PNG format. Index value 3 is the height and width string of the image, height=xxx width=yyy. The width and height units of the returned image are pixels

Lines 24~58: When selecting the image method to add a watermark to the target image, obtain the width and height of the watermark image, which is usually the logo of the website. If the target image is smaller in width or height than the watermark image or the watermark image does not exist, jump out of this function.

Return statement knowledge point: Direct return means returning nothing and ending the function directly. It can also be understood as returning NULL.

Lines 60~77: When selecting the text method to add a watermark to the target image, first set the size of the watermark text. By default, I set it to 16px. You can adjust the font size as needed. If the font file does not exist, jump out of the function, and finally obtain the virtual length and width of the text in this format through the imagettfbbox function.

Imagettfbbox function knowledge point: This function returns an array containing 8 cells to represent the four corners of the text frame. The meaning of the index value: 0 represents the X position of the lower left corner, 1 represents the Y position of the sitting corner, and 2 represents the X position of the lower right corner. Position, 3 represents the Y position of the lower right corner, 4 represents the X position of the upper right corner, 5 represents the Y position of the upper right corner, 6 represents the X position of the upper left corner, and 7 represents the Y position of the upper left corner. This function requires the support of both GD library and FreeType library
The max function returns the largest value among the parameters.

Line 79~125: Calculate the specific coordinate value based on the set image watermark position. You can refine the watermark position according to the effect.

Lines 127~129: Create a new image with the same size as the target image.

Note: Since the scope of the imagecreatetruecolor function is a black image, if your target image is transparent, the new image generated will not be transparent.

Lines 131~162: Based on the image or text, the image with the watermark is finally generated.

Calling instructions:

You can call it by function call. Of course, you can also encapsulate it in a class, or you can further subdivide this function into modules as needed. Of course, there is no problem if you use it this way now. I have tested it, so please feel free to use it.

Other instructions:

Since the imagettftext and imagettfbbox functions require the support of the GD library and the FreeType library, if your operating environment does not support the GD library and the FreeType library, the text mode cannot be implemented. You can use the imagestring function to add text watermarks to images, and set Just set the $logow and $logoh values ​​in text mode.

The imagejpeg function can also set the quality of the synthesized image.

Summary of ideas for PHP image watermark function:
First, calculate the width and height of the target image, watermark image, and text, and then calculate the location information of the final watermark based on the specific location, that is, the X and Y values. Finally, the pictures are combined, and the new picture is added with a watermark.

The code is as follows Copy code

function setWater($imgSrc,$markImg,$markText,$TextColor,$markPos,$fontType,$markType)
{

    $srcInfo = @getimagesize($imgSrc);
    $srcImg_w    = $srcInfo[0];
    $srcImg_h    = $srcInfo[1];
       
    switch ($srcInfo[2])
    {
        case 1:
            $srcim =imagecreatefromgif($imgSrc);
            break;
        case 2:
            $srcim =imagecreatefromjpeg($imgSrc);
            break;
        case 3:
            $srcim =imagecreatefrompng($imgSrc);
            break;
        default:
            die("不支持的图片文件类型");
            exit;
    }
       
    if(!strcmp($markType,"img"))
    {
        if(!file_exists($markImg) || empty($markImg))
        {
            return;
        }
           
        $markImgInfo = @getimagesize($markImg);
        $markImg_w    = $markImgInfo[0];
        $markImg_h    = $markImgInfo[1];
           
        if($srcImg_w         {
            return;
        }
           
        switch ($markImgInfo[2])
        {
            case 1:
                $markim =imagecreatefromgif($markImg);
                break;
            case 2:
                $markim =imagecreatefromjpeg($markImg);
                break;
            case 3:
                $markim =imagecreatefrompng($markImg);
                break;
            default:
                die("不支持的水印图片文件类型");
                exit;
        }
           
        $logow = $markImg_w;
        $logoh = $markImg_h;
    }
       
    if(!strcmp($markType,"text"))
    {
        $fontSize = 16;
        if(!empty($markText))
        {
            if(!file_exists($fontType))
            {
                return;
            }
        }
        else {
            return;
        }
           
        $box = @imagettfbbox($fontSize, 0, $fontType,$markText);
        $logow = max($box[2], $box[4]) - min($box[0], $box[6]);
        $logoh = max($box[1], $box[3]) - min($box[5], $box[7]);
    }
       
    if($markPos == 0)
    {
        $markPos = rand(1, 9);
    }
       
    switch($markPos)
    {
        case 1:
            $x = +5;
            $y = +5;
            break;
        case 2:
            $x = ($srcImg_w - $logow) / 2;
            $y = +5;
            break;
        case 3:
            $x = $srcImg_w - $logow - 5;
            $y = +15;
            break;
        case 4:
            $x = +5;
            $y = ($srcImg_h - $logoh) / 2;
            break;
        case 5:
            $x = ($srcImg_w - $logow) / 2;
            $y = ($srcImg_h - $logoh) / 2;
            break;
        case 6:
            $x = $srcImg_w - $logow - 5;
            $y = ($srcImg_h - $logoh) / 2;
            break;
        case 7:
            $x = +5;
            $y = $srcImg_h - $logoh - 5;
            break;
        case 8:
            $x = ($srcImg_w - $logow) / 2;
            $y = $srcImg_h - $logoh - 5;
            break;
        case 9:
            $x = $srcImg_w - $logow - 5;
            $y = $srcImg_h - $logoh -5;
            break;
        default:
            die("此位置不支持");
            exit;
    }
       
    $dst_img = @imagecreatetruecolor($srcImg_w, $srcImg_h);
       
    imagecopy ( $dst_img, $srcim, 0, 0, 0, 0, $srcImg_w, $srcImg_h);
       
    if(!strcmp($markType,"img"))
    {
        imagecopy($dst_img, $markim, $x, $y, 0, 0, $logow, $logoh);
        imagedestroy($markim);
    }
       
If(!strcmp($markType,"text"))
{
          $rgb = explode(',', $TextColor);
                                                                              $color = imagecolorallocate($dst_img, $rgb[0], $rgb[1], $rgb[2]);
Imagettftext($dst_img, $fontSize, 0, $x, $y, $color, $fontType,$markText);
}
                             
switch ($srcInfo[2])
{
case 1:
Imagegif($dst_img, $imgSrc);
             break;
case 2:
Imagejpeg($dst_img, $imgSrc);
             break;
case 3:
                imagepng($dst_img, $imgSrc);
             break;
            default:
                 die("Unsupported watermark image file type");
exit;
}
                             
Imagedestroy($dst_img);
Imagedestroy($srcim);
}

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/631534.htmlTechArticleThis article will introduce to students what you need to know about renaming and adding watermark configurations when uploading files using ckeditor. Students can enter for reference. First of all: I want the uploaded file to be based on the date...
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
What data can be stored in a PHP session?What data can be stored in a PHP session?May 02, 2025 am 12:17 AM

PHPsessionscanstorestrings,numbers,arrays,andobjects.1.Strings:textdatalikeusernames.2.Numbers:integersorfloatsforcounters.3.Arrays:listslikeshoppingcarts.4.Objects:complexstructuresthatareserialized.

How do you start a PHP session?How do you start a PHP session?May 02, 2025 am 12:16 AM

TostartaPHPsession,usesession_start()atthescript'sbeginning.1)Placeitbeforeanyoutputtosetthesessioncookie.2)Usesessionsforuserdatalikeloginstatusorshoppingcarts.3)RegeneratesessionIDstopreventfixationattacks.4)Considerusingadatabaseforsessionstoragei

What is session regeneration, and how does it improve security?What is session regeneration, and how does it improve security?May 02, 2025 am 12:15 AM

Session regeneration refers to generating a new session ID and invalidating the old ID when the user performs sensitive operations in case of session fixed attacks. The implementation steps include: 1. Detect sensitive operations, 2. Generate new session ID, 3. Destroy old session ID, 4. Update user-side session information.

What are some performance considerations when using PHP sessions?What are some performance considerations when using PHP sessions?May 02, 2025 am 12:11 AM

PHP sessions have a significant impact on application performance. Optimization methods include: 1. Use a database to store session data to improve response speed; 2. Reduce the use of session data and only store necessary information; 3. Use a non-blocking session processor to improve concurrency capabilities; 4. Adjust the session expiration time to balance user experience and server burden; 5. Use persistent sessions to reduce the number of data read and write times.

How do PHP sessions differ from cookies?How do PHP sessions differ from cookies?May 02, 2025 am 12:03 AM

PHPsessionsareserver-side,whilecookiesareclient-side.1)Sessionsstoredataontheserver,aremoresecure,andhandlelargerdata.2)Cookiesstoredataontheclient,arelesssecure,andlimitedinsize.Usesessionsforsensitivedataandcookiesfornon-sensitive,client-sidedata.

How does PHP identify a user's session?How does PHP identify a user's session?May 01, 2025 am 12:23 AM

PHPidentifiesauser'ssessionusingsessioncookiesandsessionIDs.1)Whensession_start()iscalled,PHPgeneratesauniquesessionIDstoredinacookienamedPHPSESSIDontheuser'sbrowser.2)ThisIDallowsPHPtoretrievesessiondatafromtheserver.

What are some best practices for securing PHP sessions?What are some best practices for securing PHP sessions?May 01, 2025 am 12:22 AM

The security of PHP sessions can be achieved through the following measures: 1. Use session_regenerate_id() to regenerate the session ID when the user logs in or is an important operation. 2. Encrypt the transmission session ID through the HTTPS protocol. 3. Use session_save_path() to specify the secure directory to store session data and set permissions correctly.

Where are PHP session files stored by default?Where are PHP session files stored by default?May 01, 2025 am 12:15 AM

PHPsessionfilesarestoredinthedirectoryspecifiedbysession.save_path,typically/tmponUnix-likesystemsorC:\Windows\TemponWindows.Tocustomizethis:1)Usesession_save_path()tosetacustomdirectory,ensuringit'swritable;2)Verifythecustomdirectoryexistsandiswrita

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

VSCode Windows 64-bit Download

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),