DirectPHP plugin
Written by kksou   
Monday, 24 March 2008
download button
faq button

This plugin allows direct embedding of PHP commands right inside Joomla content page for dynamic contents.

Available for all Joomla versions: Joomla 1.0.x, native 1.5.x, 1.6.x and 1.7.x!

Very Important: If you're using Joomla 1.6 or Joomla 1.7, don't forget to set the Filter Type to "No Filtering" so that you can enter PHP codes in a Joomla 1.6 / 1.7 articles. Details here (works for both Joomla 1.6 and 1.7).

If you're using Joomla 1.5, please refer to the article:
How to enter HTML tags, javascript and PHP codes in Joomla 1.5.8?
Otherwise you might find that all your HTML tags, Javascript and PHP scripts will be removed the moment you click the Save or Apply button.


Key Features

  • Include PHP commands right inside your Jommla content page using the standard php construct:
  • <?php php_commands... ?>
  • Freely intermix static contents with php commands:
  • Now is: <?php echo date('Y-m-d H:i:s');?>
  • Leverage on all your PHP libraries right inside the content page:
  • <?php 
    require_once('fullpath/your_lib.php');
    your_php_func();
    ?>
  • You can edit the php code right inside the default TinyMCE WYSIWYG Editor!
  • Ability to block potentially "risky" commands, e.g. system, fopen, unlink, rmdir, etc. You can add and edit this list of commands-to-block yourself.

Latest version

v2.5 (for Joomla 2.5)
Released January 25, 2012

Native version of DirectPHP for Joomla 2.5!

Don't forget to set the Filter Type to "No Filtering" so that you can enter PHP codes in a Joomla 2.5 article using the default WYSIWYG editor. Details here.

Background

I've recently redesigned this website using Joomla. As you can see, there are more than 450 PHP-GTK sample codes. It's just too much a hassle to include each sample code into every article. Isn't it nice if I could do a simple

echo "<pre>".htmlentities('filename.php')."</pre>";

to automatically include the respective sample code?

I've tried two other plugins: Jumi and RunPHP .

  • Jumi allows you to call or include another .php file. However, it doesn't allow you to add php commands right inside the content. What this means is that if you want to display a sample code, say example1.php, you need to create an intermediate .php file. In that intermediate php file, you then load and display the sample code with echo "<pre>".htmlentities('filename.php')."</pre>". These intermediate files accumulate very fast and is becoming a bit cumbersome.
  • RunPHP allows you to embed php commands right inside the content page. However, using it is a bit troublesome. You need to use, for example, JCE Editor with Show HTML view. You cannot use the default TinyMCE WYSIWYG Editor.

So I decided to develop my own plugin, and the result is this plugin DirectPHP.

How to install (Joomla 1.0.x)

  1. Download the plugin and unzip it into a folder.
  2. From the Installers menu, select mambots. In the field "Install directory", enter the folder location (where you unzipped the file) and click Install.
  3. From the Mambots menu, select Site Mambots.
  4. Make sure the plugin "DirectPHP" is published. If you see a cross in the Published column, just click on it. It will turn into a green tick.
  5. To try if it works, go to Content Manager, and copy the following text into any static content page:
  6. Current date and time is: <?php echo date('Y-m-d H:i:s');?>
  7. Now load that content page. You should see the current date and time displayed.

To customize the block list (Joomla 1.0.x)

  • From the Mambots menu, select Site Mambots and then click on DirectPHP.
  • On the right-hand side, you will see the Plugin Parameters "PHP commands to block".
  • Edit this list and click Save.

How to install (Joomla 1.5.x)

  1. Download the plugin and unzip it into a folder.
  2. From the Extensions menu, select Install/Uninstall. In the field "Install directory", enter the folder location (where you unzipped the file) and click Install.
  3. From the Extensions menu, select Plugin Manager.
  4. Enable the plugin (DirectPHP) - make sure there is a green tick in the Enabled column.
  5. To try if it works, go to "Content - Article Manager", and copy the following text into any static content page:
  6. Current date and time is: <?php echo date('Y-m-d H:i:s');?>
  7. Very Important: If you're using Joomla 1.5.8 and above, please refer to the article:
    How to enter HTML tags, javascript and PHP codes in Joomla 1.5.8?. Otherwise you might find that all your HTML tags, Javascript and PHP scripts will be removed the moment you click the Save or Apply button.
  8. Now load that content page. You should see the current date and time displayed.

To customize the block list (Joomla 1.5.x)

  • From the Extensions menu, select Plugin Manager, and click on DirectPHP.
  • On the right-hand side, you will see the Plugin Parameters "PHP commands to block".
  • Edit this list and click Save.

Examples

Here are some examples:

  1. You can display the current date and time with:
  2.  Now is: <?php echo date('l j D, Y H:i:s');?> 


  3. You can use for or foreach loop:
  4. <?php
    for ($i=0; $i<10; ++$i) {
        echo "$i: ".$i*$i,"<br>"; 
    } 
    ?>

  5. You can include your own PHP library and call the functions within that library:
  6. <?php
    require_once('/fullpath/your_php_library.php');
    display_image('image123.jpg');
    ?>
  7. You can sprinkle as many PHP statements you want within your content page. Note that these PHP statements will be processed in sequential order, and it respects all scoping of variables. So if you have set a variable earlier, you can use it in your PHP statements later.
  8. <?php global $a;
    $a = 10;?>
    This is a test. variable $a = <?php echo $a;?>
    
    <?php
    function f1() {
        global $a;
        return $a*2;
    }
    $b = f1($a);
    ?>
    
    You can access variable $a from within the function with global.
    variable $b = <?php echo $b;?>
    
  9. You can add any HTML statements through PHP:
  10. <?php
    echo "<table border=4$gt;";
    echo "<tr><td>a11</td><td>a12</td></tr>";
    echo "<tr><td>a11</td><td>a12</td></tr>";
    echo "</table>";
    ?>
  11. You can easily serve different contents for registered and non-registered members:
  12. For Joomla 1.0:

    <?php
    global $my;
    if ($my->id==0) {
        // non-registered members
        print "Please register or login.";
    } else {
        // registered members
        print "Contents for registered members.";
    }
    ?>

    For Joomla 1.5:

    <?php
    $user =& JFactory::getUser();
    if ($user->id==0) {
        // non-registered members
        print "Please register or login.";
    } else {
        // registered members
        print "Contents for registered members.";
    }
    ?>

Important Note: Blocking of PHP commands

By default, I've blocked some of the potentially "risky" commands, e.g. system, fopen, unlink, rmdir, etc.

You can view the entire list of PHP commands that are blocked in the plugin's property page. In there, you can also add, edit or delete this list of commands to suit your needs.

If you need to use any of these commands (e.g. mkdir) from within the content page, put them in one of the library files on your server, do a include() and then call that function. This is a much safer method.

If you insist, you may choose to turn off the blocking in the property page. However, I would strongly advise that you do so only if you're the only one maintaining your Joomla site. If you're opening up the adding and editing of content pages to the public, DO NOT turn off the blocking. It's too dangerous.

Disclaimer

DirectPHP is a simple, yet flexible and powerful plugin. I'm using it on this website. I'm sharing with you here because I think it will be very useful to some of you.

Your use of this plugin is at your own risk. kksou.com makes no warranties or representations, express or implied, as to the functionality or usefulness of this plugin. kksou.com disclaims all warranties, express or implied, including without limitation warranties of merchantability and fitness for a particular purpose. kksou.com disclaims liability for any direct, indirect, incidental, consequential, special, exemplary, punitive or other damages, or lost profits, that may result, directly or indirectly, from your use of this plugin, including without limitation any damage to computer systems, hardware or software, loss of data, or any other performance failures, or any errors, bugs, viruses or other defects that result from or are associated with use of this plugin.

Download


Note: To upgrade to the newer version, simply uninstall the old version and install the new version of the plugin.

Version History

  1. Version 1.00: released March 24, 2008.
  2. Version 1.01: released March 27, 2008.
  3. In TinyMCE Editor, when you press Enter, internally it's stored as a <p>. If you press shift-Enter, internally it's stored as <br>. In v1.00, if the user presses Enter after "<?php", the php script will not be captured. I only preg_matched for <br>. Overlooked the case for <p>. Bug has been fixed.

  4. Version 1.02: released April 6, 2008.
  5. In some of the editors, tabs is internally stored as &160;. If you're using tabs for code indentation, please download this update.

  6. Version 1.03: released May 12, 2008.
  7. Encapsulate all functions used by DirectPHP within a class so that you can use DirectPHP with some other plugins such as the "DirectPHP for Category Description" plugin.

  8. Version 1.04: released June 21, 2008.
  9. Now supports both PHP5 and PHP4.

  10. Version 1.05: October 11, 2008
  11. Thanks to Salvatore who informed me about some "mysterious" double-byte characters that get inserted into the DirectPHP code by the content editor of some of the non-English Joomla. These double-byte characters will cause error when processing the PHP commands with eval(). Have fixed this in this version.

  12. Version 1.56: April 8, 2009
  13. Added one more parameter "Using No Editor". If you're not using any editor when editing content articles, select 'yes' for this parameter. This will allow you to freely use any HTML tags (such as <br /> or <p>).

  14. v1.6 (for Joomla 1.6)
    Released Feb 21, 2011
  15. Native version of DirectPHP for Joomla 1.6!

    Don't forget to set the Filter Type to "No Filtering" so that you can enter PHP codes in a Joomla 1.6 articles. Details here.

  16. v1.7 (for Joomla 1.7)
    Released October 10, 2011
  17. Native version of DirectPHP for Joomla 1.7!

    Don't forget to set the Filter Type to "No Filtering" so that you can enter PHP codes in a Joomla 1.7 article using the default WYSIWYG editor. Details here (works for both Joomla 1.6 and 1.7).


 

Comments  

 
# Clotec 2012-01-23 16:05
i have installed this on my web site, but not work :sad:
Reply | Reply with quote | Quote
 
 
# kksou 2012-01-23 19:45
Please give more details e.g.
1) what have you tried?
2) what are the tags that you are using? 3) what are the error messages that you see on the screen?
4) Can you try just a simple PHP statement such as echo "test123".
Does this work? Did you see the string "test123" on the screen?

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# Clotec 2012-01-24 01:23
Hello,
thanks for answer. I have tried to add directly in article one complete file php that is a part of script but not work.
Reply | Reply with quote | Quote
 
 
# kksou 2012-01-24 04:13
Hi,

First of all, DirectPHP is not originally designed to be used to enter complicated PHP codes. I wrote it originally to allow myself to enter simple PHP codes here and there in a Joomla article. If you need to include complicated PHP codes, you might want to write a plugin for that purpose. It's cleaner and easier to debug that way.

Besides, note that this is a plugin. As the name suggests, you are running PHP codes within the Joomla framework. So NOT ALL php scripts will run within your Joomla article.

If you are still keen to try DirectPHP, please try something simpler first, such as echo "test123";

This will allow you to know if DirectPHP works at all on your server.

Once you are certain that DirectPHP runs on your server, you can try adding more complicated PHP commands to see if it works within your Joomla article.

Again, just want to emphasize again you are running PHP script within the Joomla framework. So NOT ALL scripts will run. You need some trials and errors to test it out.

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# Creo 2012-01-26 06:05
Hello,
Is it works on Joomla 2.5? :-|
Reply | Reply with quote | Quote
 
 
+2 # kksou 2012-01-26 08:30
Hi,

Have just released DirectPHP for Joomla 2.5!

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# Creo 2012-01-26 09:03
Thanks a lot! :-)
Reply | Reply with quote | Quote
 
 
# rve 2012-01-28 01:51
everything is ok when I write this on the same line "". As soon as I try to write:

it does not work :-( why?
Reply | Reply with quote | Quote
 
 
# kksou 2012-02-02 17:10
Hi,

Your code didn't appear.

Would you like to email the code to me?

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# sqrl 2012-02-04 12:23
Hey,

I've got j 2.5 and I've gone through all steps and installed plugin.

However each time i write article content with tinyMCE like:

Now is:

it keeps changing it to:

Now is:

 

Any hints? I turned the filtering off :-|
Reply | Reply with quote | Quote
 
 
# sqrl 2012-02-05 01:47
I quit using tinyMCE and using instead default one in joomla 2.5 - seem to work now perfectly ;)

Quoting sqrl:
Hey,

I've got j 2.5 and I've gone through all steps and installed plugin.

However each time i write article content with tinyMCE like:

Now is:

it keeps changing it to:

Now is:

 

Any hints? I turned the filtering off :-|
Reply | Reply with quote | Quote
 
 
# Timmy123 2012-02-04 16:08
EXCELLENT PLUG IN!! I use it with my clickable map and it works a treat. Didn't have to change anything.
Reply | Reply with quote | Quote
 
 
# beji14 2012-02-15 04:48
I install it on my local machine for joomla 1.7 but its not showing in "Module Manager: Modules" section. Aay reason behing it?
Reply | Reply with quote | Quote
 
 
# kksou 2012-02-15 05:06
Hi,

As the name says, this is a plugin.

So you will see it in the Plugin Manager and not Module Manager.

Regards,
/kksou

p.s. as this is a plugin, it's for use within an article. You can create a new article and test running some PHP commands from within the article.
Reply | Reply with quote | Quote
 
 
# Irina 2012-02-15 05:40
What is this?

Parse error: syntax error, unexpected $end, expecting ',' or ';' in Z:\home\localho st\www\comfy-yard\plugins\co ntent\DirectPHP \DirectPHP.php(57) : eval()'d code on line 1
Reply | Reply with quote | Quote
 
 
# kksou 2012-02-15 05:46
Hi,

DirectPHP process PHP statements using the standard PHP's eval() function.

The error messages simply means there's some error in your code.

It's every difficult to debug based on the error message returned from the eval() statement. Would suggest you copy and paste your codes into a plain .php file and try running that .php file. You will get more meaningful error message that tells you where and what the error is.

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# gm 2012-02-24 09:55
Hi, thanks for the great work! I would like some advice please. Is using this plugin and inputting php directly into the article unsafe in anyway? What's the difference between this method, and inputting the php into a module and loading its position from the article?
Thanks again.
Reply | Reply with quote | Quote
 
 
# kksou 2012-02-27 15:10
Hi,

Sorry for the late reply.

Let me answer your second question first. With DirectPHP, you can have dynamic contents within an article. You can also display and process things like forms within an article. Of course, there are many things you can achieve using the method you have just mentioned, i.e. putting the PHP into a module and then loading its position from an article. However, I think you can see that this is an "indirect" method - as oppose to Joomla running the PHP codes directly in the article. Second, there are some things you cannot do using the "module" method. e.g. if you are using the googleMaps plugin, I can use PHP to generate a dynamic tag to display different google maps every time depending on the user or the content. I can also use PHP to choose which content plugins to run depending on situations.

As for yoru first question, this is the reason why I put a "Disclaimer" just before the downloading section of this page - it's powerful, but you have to use this at your own risk. (This is true for any other plugins that allow you to input PHP.) If you are the administrator for your website, and you know what you are doing, then using this is relatively safe. But if you website has many authors and publishers, then I would be a bit worried using this type of tools too.

Hope this helps.

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# TinaM 2012-02-28 10:57
I thought I had finally solved my problem with your plugin, but I can't get it to work.

I must include the php in an article so the client can modify prices later. I was using JCE editor, and switched to tinyMCE. Site is v1.6.

I followed all your instructions, set Article Manager filtering to none for Super Users and Admin. It was already set for Super Users. I inserted the script into the page it belongs on, complete with '' at the beginning and end. No other text or code was included. The script is 138 lines. Is that too long for this plugin to handle?

I also tested just '' to see if a short script would work. All I get is the entire php script, the short or long one, displaying on the page, with tags. Is this enough info to determine what I may have done wrong?
Reply | Reply with quote | Quote
 
 
# TinaM 2012-02-28 11:01
My php tags in the 3rd paragraph and my short php echo statement in the fourth paragraph were stripped from my post.

I was explaining that I used php tags in the long script, and tried a simple one sentence echo statement to see if the long script was the problem. Neither worked. I would understand if the longer script didn't work and the shorter one did, but that's not the case. Many thanks.
Reply | Reply with quote | Quote
 
 
# kksou 2012-02-28 15:18
Hi,

When using the default Joomla editor, please DO NOT use the HTML mode. Use the wysiwyg mode.

Please try just one line:
echo 'test123';
first and see if works.

DirectPHP can work with multiple lines - it's just that debugging is very difficult.

In any case, please try the above one more time and let me know if it works.

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# TinaM 2012-02-29 09:10
Hi. Yes, a simple "Does DirectPHP work?" statement does work; displays on the page just fine. But when I paste in my 138 line script to calculate water and sewage rates, the page returns blank. I have a php form in the body of another article and direct it to my page with the php script.

This exact same 138 line file works fine in a WAMP environment, serving up IE. The code returns and displays the calculations.

Would there be a difference between the code a WAMP server can use and code in a Joomla article?
Reply | Reply with quote | Quote
 
 
# Chris M 2012-03-14 05:40
I have Joomla 2.5.2, PHP Version 5.2.9
and when I load the public page I get the following error message: Parse error syntax error unexpected '.' in /public_html/n/plugins/content/DirectPHP/DirectPHP.php(58): eval()'d code on line 1

Thank you for your time,
Chris
Reply | Reply with quote | Quote
 
 
# kksou 2012-03-14 19:34
As the error message says, there's error in your PHP code.

Your entire code is processed by the standard PHP eval() statement. As such it's very difficult to debug anything from the error message.

Would suggest you copy the entire PHP code into a standalone PHP file.

1) First try if your standalone .php file runs at all. If it doesn't run, the error messages returned by the PHP interpreter will be more meaningful and easier to debug.

2) Once your standalone PHP file runs ok, you can use DirectPHP from within your Joomla article and do a require() or include() to include your PHP code. See if the code now runs.

3) Once (2) works, you can then try to copy and paste your PHP codes from the standalone PHP file back into the article. See if it works.

Note that even if (1) works, it does not necessarily means (2) and (3) will work. Bear in mind that you are running your codes within the Joomla framework - so not all PHP codes will run the same within Joomla. This is particularly the case if you are using mysql that connects to another database - You have to remember to reconnect the database back to your underlying Joomla mysql database, otherwise it has no way to connect back to your Joomla environment.

In any case, I wrote DirectPHP to run some simple PHP scripts. If you need to run complicated PHP scripts, would suggest you write a proper Joomla plugin or module. It's much cleaner and the codes are easier to debug.

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# vvvvv 2012-03-29 11:28
Hi

script:


Work in standard PHP,
in DirectPHP have error
"Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /plugins/content/DirectPHP/DirectPHP.php(57) : eval()'d code on line 1"
Reply | Reply with quote | Quote
 
 
# vvvvv 2012-03-29 11:29
this is the script

if ($_GET["chronoform"]=="WybierzDate")
{
echo "{chronoforms}Li sta dni{/chronoforms}";
} else
{
echo "{chronoforms}Wy beierzDate{/chronoforms}";
}
Reply | Reply with quote | Quote
 
 
# kksou 2012-04-12 07:59
Hi,

1) Please try a simple one-liner PHP: echo "test123";
Just want to make sure that DirectPHP is running ok on your machine.

2) If (1) works, and you're sure that your codes above works fine in standard PHP, then the other possibilities is that the order of DirectPHP comes before that of your other plugin "chronoforms".

Please go to the Plugin Manager and see what's the order of DirectPHP and your other plugin chronoforms. If both are 0, please set DirectPHP to be 9, and chronoforms to be 10. If, say, the order of chronoforms is 3, then change the order of DirectPHP to be 2.

The key thing is: the order of DirectPHP must go BEFORE that of chronoforms - this will ensure that DirectPHP is processed first, followed by your chronoforms plugin.

Otherwise, if chronoforms is processed first, it will produce some codes which then go into DirectPHP - resulting in error because most likely chronoforms will not produce valid PHP codes.

Please give it a try again and let me know if it works.

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# HaraldEngels 2012-04-10 03:37
Stopped to work in Joomla 2.5.4:
"Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in /plugins/content/DirectPHP/DirectPHP.php(59) : eval()'d code on line 1"
Reply | Reply with quote | Quote
 
 
# kksou 2012-04-10 05:08
Hi,

As the error message says, the error message is in the PHP code that you're trying to run.

Please refer to the following post for debugging tips: http://www.kksou.com/php-gtk2/index.php?option=com_fireboard&Itemid=67&func=view&id=4601&catid=16#4617

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# JugglingReferee 2012-04-11 14:41
I am using Joomla 2.5.4. I've been looking for something like this for quite some time!

I installed the plug-in, enabled it, changed the SU setting to "No Filtering", but the expected results do not show.

The PHP code in my article is "

When I investigate why the expected output did not show, it is because there are HTML comment tags around the PHP code.

I did check to make sure that "Prepare content" was "Yes", as suggested on the Joomla forums.

Any ideas? Thanks...
Reply | Reply with quote | Quote
 
 
# JugglingReferee 2012-04-11 14:44
The PHP code in my article is:

less-than-character NOSPACE question-mark NOSPACE php SPACE echo SPACE "Hi."; SPACE question-mark NOSPACE greater-than-character
Reply | Reply with quote | Quote
 
 
# kksou 2012-04-12 07:52
Hi,

1) Did you see anything on the screen? Did you see the code?

2) When you enter the PHP codes in the article using the default Joomla editor, please make sure that you enter in the WYSIWYG mode. DO NOT use the HTML mode.

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# JugglingReferee 2012-04-12 09:17
Update: I was able to get DirectPHP to function properly by switching to the CodeMirror Editor within Joomla 2.5.4. (I was previously using TinyMCE.)

My next task is to get PHP code working that will output text as an image. My first attempt outputted the raw image data rather than the browser rendering an actual image.
Reply | Reply with quote | Quote
 
 
# JugglingReferee 2012-04-17 12:28
Success. But I could not get this to work via DirectPHP. I was able to do this though:A
Reply | Reply with quote | Quote
 
 
# Peter Winkels 2012-04-26 08:31
Hello,

I'm interested in using phpDirect, but I want to restrict the possibility of including php-code only for Super-User. It'S possible? In which way?

Greetings * Peter Winkels
Reply | Reply with quote | Quote
 
 
# kksou 2012-04-26 08:47
Hi Peter,

Joomla does not have any access control for plugins and modules. So there's no way you can restrict the running of a plugin by users.

But if you know a bit of PHP and know how to retrieve the user id from within the Joomla framework, you can modify the source code of DirectPHP to achieve this.

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# Fabio Codebue 2012-04-26 10:21
a sample to use with virtuemart ?
I need to access to some virtuemart table directly....
Reply | Reply with quote | Quote
 
 
# wdb 2012-05-21 00:41
DirectPHP basically works on my 2.5.4 site (JCE Editor), but HTML tags are stripped:
echo 'abc'
comes out as 'abc' (no p-tags ...)
Any idea? Thank you!
Reply | Reply with quote | Quote
 
 
# kksou 2012-05-21 07:26
Hi,

Have you tried the tips as outlined in the article "How to enter HTML tags, javascript and PHP codes in Joomla 2.5?": http://www.kksou.com/php-gtk2/Joomla-Tips-Techniques/How-to-enter-HTML-tags-javascript-and-PHP-codes-in-Joomla-2.5.php

Regards,
/kksou
Reply | Reply with quote | Quote
 
 
# wdb 2012-05-21 07:31
I followed the instructions, yes, filter off etc. Is there a specific tip you refer to? I am now using Sourcerer, which basically works, no stripping, but is a bit less convenient ...
Reply | Reply with quote | Quote
 
 
# wdb 2012-05-21 01:17
Details: tags like are not stripped. And I found that is not simply stripped, but adds a newline in the source code.
Reply | Reply with quote | Quote
 
 
# wdb 2012-05-21 01:18
tags like "tr" are not stripped
Reply | Reply with quote | Quote
 

Add comment


Security code
Refresh

< Prev

Blog - Forum - Privacy Policy - Contact Us
Copyright © 2006-2012. kksou.com. All Rights Reserved