Showing posts with label Web - Developing. Show all posts
Showing posts with label Web - Developing. Show all posts

Friday, June 17, 2016

Simple way to Exclude Latest Post from the WordPress While Loop

Most of the wordpress developers will usually stuck on some simple issues with the wordpress functions. I have recently got stuck for 30 minutes on this simple issue with the While Loop.

Excluding the Latest Post from the Wordpress While Loop.

First we need to get a simple idea about query_posts() and How it works, and How it affect the loop.

For example
<?php
query_posts('posts_per_page=3&offset=0');
?>
This query will tell the loop to display 3 posts which includes the latest one too. Important point is that this “offset” is doing the Magic.

Your loop code should look like:
<?php
query_posts('posts_per_page=9&offset=1');
// offset=1  will remove the Latest post from our Loop.
if ( have_posts() ) : 
    while ( have_posts() ) : the_post();
 the_title();
    endwhile;
end if;
?>

Hope this will help to save your pretious time.

Wednesday, April 13, 2016

Getting Ready For HTTP/2: A Guide For Web Developers

HTTP/2(HTTP/2.0) – The major second version of Hyper Text Transfer Protocol (network protocol) used by World Wide Web and introduced in 2015 by ‘httpbis’-the HTTP working group.
HTTP 1.1 was replaced by HTTP2 due to the following reasons.
HTTP 1.1 has hard time taking full advantage of all the power and performance that TCP offers.
HTTP clients and browsers have to be very creative to find solutions that decrease page loading time.
HTTP 1.1 is very latency sensitive, partly because HTTP Pipelining is still riddled with enough problems to remain switched off to a large percentage of users etc.
HTTP/2 gives the website a 30% performance gain without a complicated build and deploy process.
The aim behind the introduction of HTTP/2 is
To make the page loading faster – HTTP/2 loads web page elements quicker and more efficiently by using all available bandwidth.
To make resources more efficient.
To give the end user a far better experience.
HTTP/2 is designed backward-compatible with HTTP/1.1,so that developers of HTTP libraries don’t have to change APIs, and the developers who are using these libraries don’t have to change the application code which is working on the basis of SPDY protocol.
SPDY doesn’t replace HTTP, it is a for the protocol and modifies the way existing HTTP requests and responses are sent. It requires support from both the server and the browser connecting to that server.
How HTTP/2 Works
HTTP/2 brings new features such as
  • Multiplexed Streams – eliminates the problem of making the assets such as texts,fonts,images etc into smaller parts and allow them to pass via single connection and reassemble them after they reached the final destination. HTTP/2 reduces the latency with multiplexing.
  • Server Push – Represents a more efficient way to deliver the requested pages to a browser. In HTTP/2, pages which are sent are likely sent without any request. These requested pages go to the browser’s cache, and are available immediately if they’re needed.
  • Compression of header – HTTP headers are those small piece of additional data attached to every request sent. Here in HTTP/2, all the headers are compressed as a block which is sent in unity and if the transfer is finished, the header block is decoded and is given back to the corresponding requests.
  • Textual format replaced by Binary – The extra overhead caused by the textual format is followed by the slow loading of web pages. Binary format doesn’t require any parsing and so no overhead. Binary Frames are known to be the ‘fundamental u
    nit’ of HTTP/2.


Requests for multiple assets on a single host use a single TCP connection in HTTP2
Requests for multiple assets on a single host use a single TCP connection in HTTP/2.
HTTP/2 also offers the following.
Concatenation of Javascript and CSS files : Combining smaller Javascript files and CSS files into a larger file to reduce the total number of requests.
  • Spriting Images : Combining multiple small images into one larger image.
  • Domain Sharding : is the Splitting of Resources Between Hosts.For static assets requests were spread across several domains to increase the total number of open TCP connections allowed by the browser.
  • Inlining assets : Bundling assets with the HTML document source, including base-64 encoding images or writing JavaScript code directly inside<script>tags.
    tags.
The HTTP Action
Once if the website is hosted on a server that supports HTTP/2, the decision of whether to continue optimizing for HTTP/1.1 or to optimize for HTTP/2 will come down to the protocol supported by the majority of the website users. HTTP/2 is backwards-compatible and so don’t need to do anything specific. The decision you need to make is when to optimize for it.
Prior case is to launch the website using a secure connection.
Prepare the website for HTTP/2 as to optimize it.
Check the user statistics of the website and check the percentage of benefit from HTTP/2 for the visitors.
Implement HTTP/2 optimization.
Conclusion:
HTTP/2 is likely to provide significant performance advantages compared to raw HTTP/1.1 and it is an exciting new option for web applications. In general, sites will be more secure, simpler and will load faster.

Friday, August 1, 2014

Long Query in Error Logs (WP Engine).

While going through the Error Log in your WP Admin Dashboard you may notice some entries that include a pre-fix of LONG QUERRY. These are provided by WP Engine.

EG :- 
[Thu Jul 31 16:05:21 2014] [error] [client 192.168.1.64] LONG QUERY (2421 characters long generated in /home/Projects/filename.php:271): SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN ('category', 'post_tag', 'post_format') AND tr.object_id IN (38800,.............. ) ORDER BY t.name ASC,..

WP Engine have included it in the log to signify that the length of the query, which would be over 1,024 characters, is a Long Query and may be able to be optimized. WP Engine did not take any action on this query, it is just a notice to the customers. These only apply to Select statements, and not any other type of statements.

Here is a simple fix for this. THIS IS NOT AN EXACT SOLUTION.

To prevent LONG QUERY limitations in WPEngine, add the following WPE_GOVERNOR to your wp-config.php

define( 'WPE_GOVERNOR', false );

Monday, February 10, 2014

PHPFOX Autocomplete Search Box.

I have searched a lot for an Autocomplete searchbox for phpfox. I didn't findout any. so i have modified the script of Nodstrum and developed this as a Phpfox friendly one. Please go through this.

JavaScript required was : jquery-1.2.1.pack.js Most probably Phpfox will have this js by default.
Here we can make a search for users from the phpfox user table. (This is only an example).

HTML
MODULE => MODULE NAME => TEMPLATE => DEFAULT => CONTROLLER => FILE NAME.html.php
<?php
/**
* Created by Arun George <arun@arun-g.in>
*/
defined('PHPFOX') or exit('NO DICE!');
?>
<form method="post" name="searchuser" action="" >
<label>User :</label>
<input type="text" size="30" name="val[username]" autocomplete="off"  value="" id="inputString" onkeyup="lookup(this.value);" onblur="fill();" />
<input type="hidden" size="30" name="val[user]" value="" id="inputStrings" />
<div class="suggestionsBox" id="suggestions" style="display: none;">
<div class="suggestionList" id="autoSuggestionsList">
&nbsp;
</div>
</div>
<p> <input type="submit" class="" value="Submit"  name=""> </p>
</form>

CLASS FILE

MODULE => MODULE NAME => INCLUDE => COMPONENT => CONTROLLER => FILE NAME.class.php
<?php
/**
* Created by Arun George <arun@arun-g.in>
*/
defined('PHPFOX') or exit('NO DICE!');
class MODULENAME_Component_Controller_FILENAME extends Phpfox_Component{
public function process(){
$this->template()->setBreadCrumb('FILE NAME', $this->url()->makeUrl('MODULENAME.FILENAME'), true);
$this->template()->setHeader(array(
'JSFILE.js'   => 'MODULENAME',
'CSSFILE.css' => 'MODULENAME'
))
      ->setTitle('PAGE TITLE');
}
}
?>

Java Script

MODULE => MODULE NAME => STATIC => JSCRIPT => JSFILE.js
function lookup(inputString) {
if(inputString.length == 0) {
// Hide the suggestion box.
$('#suggestions').hide();
} else {
$.ajaxCall('MODULE.autocompleteuser' , 'queryString=' + inputString);
}
} // lookup

function fill(thisValue) {
$('#inputString').val(thisValue);
setTimeout("$('#suggestions').hide();", 200);
}

function add(Valuead) {
$('#inputStrings').val(Valuead);
setTimeout("$('#suggestions').hide();", 200);
}

Cascading Style Sheets

MODULE => MODULE NAME => STATIC => CSS => DEFAULT => DEFAULT => CSSFILE.css

.suggestionsBox {
width:114px;
padding:0;
left: 159px;
margin: 1px 0 0;
position: relative;
background-color: #F4f4f4;
-moz-border-radius: 7px;
-webkit-border-radius: 7px;
border: 1px solid #CCCCCC;
color: #000000;
}

.suggestionList {
margin: 0px;
padding: 0px;
}

.suggestionList p {
margin: 0px 0px 3px 0px;
padding: 3px;
cursor: pointer;
font-size: 12px;
}

.suggestionList li:hover {
background-color: #659CD8;
}

#suggestions .suggestionList p {  
margin: 0;
padding: 5px 6px;
}

#suggestions .suggestionList p:hover {
background: #EEECE1;
}

AJAX ACTION

MODULE => MODULE NAME => INCLUDE => COMPONENT => AJAX => ajax.class.php
<?php
/**
* Created by Arun George <arun@arun-g.in>
*/
defined('PHPFOX') or exit('NO DICE!');
class MODULENAME_Component_Ajax_Ajax extends Phpfox_Ajax{
public function __construct(){    
        $this->user = Phpfox::getT('user');
    }
public function autocompleteuser(){
$queryString = $this->get('queryString');
$result = mysql_query("SELECT user_id, full_name FROM " . $this->user . " WHERE full_name LIKE '$queryString%' LIMIT 10");
$title = mysql_result($result);
// here you can use functions which is written in service class of any modules in Phpfox. Above mentioned is not the right way.

$this->show('.suggestionsBox');
while($row = mysql_fetch_array($result)){
$full_name = $row['full_name'];
$user_id = $row['user_id'];
$html .= '<p onClick="fill(\''.$full_name.'\');add(\''.$user_id.'\')">'.$full_name.'</p>';
}
$this->html('#autoSuggestionsList', $html);
}
}

?>

You have successfully implemented the Autocomplete searchbox in PHPFOX .

Thursday, January 30, 2014

To count all the values of an array. 'array_count_values()'


If you have an array like this
Array
(
    [0] => Ford
    [1] => Ford
    [2] => BMW
    [3] => Ford
    [4] => BMW
    [5] => Ford
    [6] => Audi
    [7] => Benz
)
and you need to count the same array values then we can use

array_count_values(array)
This will give you the out put as

Array
(
    [Ford] => 4
    [BMW] => 2
    [Audi] => 1
    [Benz] =>1
)

Wednesday, October 23, 2013

Integrating Payment gateway in Phpfox

Phpfox integrated Paypal and 2checkout payment gateways by default. It is very easy to use in our custom pages.
Steps for Integrating payment gateway in a custom page in phpfox.

1-> Take Admincp -> Settings -> PaymentGateways.

make the gateway as active and input the 'id'.

We have successfully enabled the payment gateway in phpfox.

USER SIDE
We have a provision in user "Account Settings" for entering the 'Payment Methods' and "id's".

Functionality:

Module -> template -> default -> controller -> filename.html.php

// Including the Payment form by putting the below module block calling.
{module name='api.gateway.form'}

Then
Module -> include -> component -> controller -> filename.class.php


We  need to set param values for "gateway_data":


$this->setParam('gateway_data', array(
'item_number' => '1',
'currency_code' => 'USD',
'amount' => 10,
'item_name' => Testing,
'return' => $this->url()->makeUrl('modulename.index'),
'recurring' => '',
'recurring_cost' =>'' ,
'alternative_cost' => '',
'alternative_recurring_cost' => '',
)
);

We have successfully implemented the payment gateway in our custom page.
Please check it out...


Monday, September 30, 2013

Php FTP Functions ( phpfox )


This is a simple function to connect to an ftp and download the xml files from that ftp to a specified folder in our server

$ftp_server = 'abcdefg.com';      // FTP Server Address (exlucde ftp://)
        $ftp_user_name = 'abcuser';     // FTP Server Username
        $ftp_user_pass = 'abcpass';      // Password
        // Connect to FTP Server
        $conn_id = ftp_connect($ftp_server);
        // Login to FTP Server
        $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
        // Verify Log In Status
        if ((!$conn_id) || (!$login_result))
        {
           Phpfox_Error::set('FTP connection has failed!Attempted to connect to'. $ftp_server.' for user'. $ftp_user_name);
        } else {
           Phpfox::addMessage('Connected to '. $ftp_server .', for user '. $ftp_user_name);
        }
        $contents = ftp_nlist($conn_id, ".");
        foreach($contents as $currentFile)
        {
            // to check directory ('0') or file('1')
            $fType =  Phpfox::getService('moduleName')->is_ftp_dir($currentFile, $conn_id);
            $ext = pathinfo($currentFile, PATHINFO_EXTENSION);
            if($ext == 'xml')
            {        
                // define some variables
// check whether the xml is already downloaded and saved in Database
                $getxmlDetailsFromDb = Phpfox::getService('moduleName')->getxmlDetailsFromDb($currentFile);
                if($getxmlDetailsFromDb['xml_name'] =='')
                {
                    $local_file = Phpfox::getParam('core.dir_file').'xml/'.$currentFile;
                    $server_file = $currentFile;
                    // try to download $server_file and save to $local_file
                    if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY))
                    {
// inserting the downloaded xml name to DB by giving ftpconnect as download type which is used for future reference.
                        $uptype = 'ftpconnect';
                        $XMLtoDB = Phpfox::getService('moduleName')->insertXMLnameToDb($server_file,$uptype);
                    }
                }
               
            }
        }
         // close the FTP connection
        ftp_close($conn_id);

// reading xml datas from DB
        $getxmlDatas = Phpfox::getService('moduleName')->getxmlDatas();
        foreach ($getxmlDatas as $keyxml => $valueXML)
        {
            // reading each xml and fetching the datas.
            $xml=simplexml_load_file(Phpfox::getParam('core.dir_file').'xml/'.$valueXML['xml_name']);
// converting the xml object to array.
            $array = Phpfox::getService('moduleName')->object_to_array($xml);
}

// by printing this '$array' we will get the xml values as
echo '<pre>';
print_r($array);
echo '</pre>';


public function object_to_array($obj)
    {
        if(is_object($obj)) $obj = (array) $obj;
        if(is_array($obj))
        {
            $new = array();
            foreach($obj as $key => $val)
            {
                $new[$key] = $this->object_to_array($val);
            }
        }
        else $new = $obj;
        return $new;      
    }


Reference : php.net

Random Password Generation in php

This is a simple function to Generate random passwords in php applications



     /**
     * random password generator
     * @return type
     * @author Arun George <arun@arun-g.in>
     * @since 30-09-2013
     */
    public function randomPassword()
    {
        $Inputs = "abcdefghijklmnopqrstuwxyzABCDEFGHIJKLMNOPQRSTUWXYZ0123456789";
        $password = array(); //declare $password as an array
        $aLength = strlen($Inputs) - 1; //put the length -1 in cache
        for ($i = 0; $i < 8; $i++)
        {
            $num = rand(0, $aLength);
            $password[] = $Inputs[$num];
        }
        return implode($password); //turn the array into a string
    }

Friday, September 13, 2013

VIN Validation with PHP

Vehicle Identification Number Validation


$vin = '1G1YW2DW0A5108451';


function vinValidate($vin){
 
    $transliteration = array(
        'A'=>1, 'B'=>2, 'C'=>3, 'D'=>4, 'E'=>5, 'F'=>6, 'G'=>7, 'H'=>8,
        'J'=>1, 'K'=>2, 'L'=>3, 'M'=>4, 'N'=>5, 'P'=>7, 'R'=>9,
        'S'=>2, 'T'=>3, 'U'=>4, 'V'=>5, 'W'=>6, 'X'=>7, 'Y'=>8, 'Z'=>9,
    );

    $weights = array(8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2);
       
        $vin = strtoupper($vin);
        $length = strlen($vin);
        $sum = 0;

        if($length != 17)
        {
            return array('status'=>false, 'message'=>'VIN is not the right length');
        }

        for($x=0; $x<$length; $x++)
        {
            $char = substr($vin, $x, 1);

            if(is_numeric($char))
            {
                $sum += $char * $weights[$x];
            }
            else
            {
                if(!isset($transliteration[$char]))
                {
                    return array('status'=>false, 'message'=>'VIN contains an invalid character.');
                }

                $sum += $transliteration[$char] * $weights[$x];
            }
        }

        $remainder = $sum % 11;
        $checkdigit = $remainder == 10 ? 'X' : $remainder;

        if(substr($vin, 8, 1) != $checkdigit)
        {
            return array('status'=>false, 'message'=>'The VIN is not valid.');
        }

        return array('status'=>true, 'message'=>'The VIN is valid.');
    }
   



Thanks coderelic

Wednesday, September 4, 2013

Very Simple PHP Captcha

Very Simple PHP Captcha :
Very easy and it requires only a couple lines of code. Please follow the below steps.

Step 1
The first step is to create a HTML form which is later submitted.
I assume you already have a HTML form, so I'll only focus on the captcha code and not all the other fields.
 
<?php
session_start();
echo '<form action="something.php" method="post">';
$rand_int1 = substr(mt_rand(),0,2);
$rand_int2 = substr(mt_rand(),0,1);
$rand_int3 = substr(mt_rand(),0,1);
$captcha_answer = $rand_int1 + $rand_int2 - $rand_int3;
$_SESSION['captcha_answer'] = $captcha_answer;
echo 'What is '.$rand_int1.' + '.$rand_int2.' - '.$rand_int3.'?<br>
<input type="text" name="captcha">
<input type="submit" value="Do captcha">
</form>';
?>


Step 2
The second step is collecting the form data and check if captcha is correct.
 
<?php
session_start();
$captcha = $_POST['captcha'];
$captcha_answer = $_SESSION['captcha_answer'];
 
if($captcha != $captcha_answer) {
    echo 'Captcha is incorrect!';
}
else {
    echo 'Captcha is correct, congratulations! :)';
}
?>


Thanks : ITDB

Tuesday, September 3, 2013

Function for Date Selection


Function for Date Selection. Its simply superb & cool...



<?PHP

    FUNCTION DateSelector($inName, $useDate=0)
    {
        /* create array so we can name months */
        $monthName = ARRAY(1=> "January", "February", "March",
            "April", "May", "June", "July", "August",
            "September", "October", "November", "December");

        /* if date invalid or not supplied, use current time */
        IF($useDate == 0)
        {
            $useDate = TIME();
        }

        /* make month selector */
        ECHO "<SELECT NAME=" . $inName . "Month>\n";
        FOR($currentMonth = 1; $currentMonth <= 12; $currentMonth++)
        {
            ECHO "<OPTION VALUE=\"";
            ECHO INTVAL($currentMonth);
            ECHO "\"";
            IF(INTVAL(DATE( "m", $useDate))==$currentMonth)
            {
                ECHO " SELECTED";
            }
            ECHO ">" . $monthName[$currentMonth] . "\n";
        }
        ECHO "</SELECT>";

        /* make day selector */
        ECHO "<SELECT NAME=" . $inName . "Day>\n";
        FOR($currentDay=1; $currentDay <= 31; $currentDay++)
        {
            ECHO "<OPTION VALUE=\"$currentDay\"";
            IF(INTVAL(DATE( "d", $useDate))==$currentDay)
            {
                ECHO " SELECTED";
            }
            ECHO ">$currentDay\n";
        }
        ECHO "</SELECT>";

        /* make year selector */
        ECHO "<SELECT NAME=" . $inName . "Year>\n";
        $startYear = DATE( "Y", $useDate);
        FOR($currentYear = $startYear - 5; $currentYear <= $startYear+5;$currentYear++)
        {
            ECHO "<OPTION VALUE=\"$currentYear\"";
            IF(DATE( "Y", $useDate)==$currentYear)
            {
                ECHO " SELECTED";
            }
            ECHO ">$currentYear\n";
        }
        ECHO "</SELECT>";

    }
?>

<HTML>
<BODY>
<FORM>
Choose a Date: <?PHP DateSelector( "Sample"); ?>
</FORM>
</BODY>
</HTML>

Thanks : Psoug

Tuesday, June 4, 2013

Peke Upload :- File Uploading with progress Bar


PekeUpload

It is a jQuery plugin that allows you to easily add multiple or single file upload functionality to your website. This plugin uses html5 only.

Some Features include:

Theming (Twitter Bootstrap ready)
Set File size limit
Set File extensions restrictions
Set custom error messages
Real-Time Progress Indicators
And others more...

Requirements

jQuery 1.4.x or greater
Web browser capable to render HTML5
If you're using Bootstrap, you will need bootstrap.css from v2.2.x or greater
A server capable of parsing PHP, ASP.Net, Cold Fusion, or similar server-side language

Implementation

Download pekeUpload zip from https://github.com/pekebyte/pekeUpload
Unzip pekeUpload zip and install it as per the documentation given.

This is a simple one which i have used till this time. This will work at the time of selecting a file. This will work without any errors in server. The only issue i faced is the jQuery conflit. You can fix it easily.


Wednesday, September 28, 2011

Basic - HTML

HTML is easy to learn.
Here you can see the list of all HTML tags. HTML tags and their respective attributes are used to create HTML documents so that you can view the web page in browsers.

<!--...--> Defines a comment  
<!DOCTYPE>  Defines the document type  
<a> Defines an anchor  
<abbr> Defines an abbreviation  
<acronym> Defines an acronym  
<address> Defines contact information for the author/owner of a document  
<applet> Deprecated. Defines an embedded applet  
<area /> Defines an area inside an image-map  
<b> Defines bold text  
<base /> Defines a default address or a default target for all links on a page  
<basefont /> Deprecated. Defines a default font, color, or size for the text in a page  
<bdo> Defines the text direction  
<big> Defines big text  
<blockquote> Defines a long quotation  
<body> Defines the document's body  
<br /> Defines a single line break  
<button> Defines a push button  
<caption> Defines a table caption  
<center> Deprecated. Defines centered text  
<cite> Defines a citation  
<code> Defines computer code text  
<col /> Defines attribute values for one or more columns in a table   
<colgroup> Defines a group of columns in a table for formatting  
<dd> Defines a description of a term in a definition list  
<del> Defines deleted text  
<dfn> Defines a definition term  
<dir> Deprecated. Defines a directory list  
<div> Defines a section in a document  
<dl> Defines a definition list  
<dt> Defines a term (an item) in a definition list  
<em> Defines emphasized text   
<fieldset> Defines a border around elements in a form  
<font> Deprecated. Defines font, color, and size for text  
<form> Defines an HTML form for user input  
<frame /> Defines a window (a frame) in a frameset  
<frameset> Defines a set of frames  
<h1> to <h6> Defines HTML headings  
<head> Defines information about the document  
<hr /> Defines a horizontal line  
<html> Defines an HTML document  
<i> Defines italic text  
<iframe> Defines an inline frame  
<img /> Defines an image  
<input /> Defines an input control  
<ins> Defines inserted text  
<isindex> Deprecated. Defines a searchable index related to a document  
<kbd> Defines keyboard text  
<label> Defines a label for an input element  
<legend> Defines a caption for a fieldset element  
<li> Defines a list item  
<link /> Defines the relationship between a document and an external resource  
<map> Defines an image-map   
<menu> Deprecated. Defines a menu list  
<meta /> Defines metadata about an HTML document  
<noframes> Defines an alternate content for users that do not support frames  
<noscript> Defines an alternate content for users that do not support client-side scripts  
<object> Defines an embedded object  
<ol> Defines an ordered list  
<optgroup> Defines a group of related options in a select list  
<option> Defines an option in a select list  
<p> Defines a paragraph  
<param /> Defines a parameter for an object  
<pre> Defines preformatted text  
<q> Defines a short quotation  
<s> Deprecated. Defines strikethrough text  
<samp> Defines sample computer code  
<script> Defines a client-side script  
<select> Defines a select list (drop-down list)  
<small> Defines small text  
<span> Defines a section in a document  
<strike> Deprecated. Defines strikethrough text  
<strong> Defines strong text  
<style> Defines style information for a document  
<sub> Defines subscripted text  
<sup> Defines superscripted text  
<table> Defines a table  
<tbody> Groups the body content in a table  
<td> Defines a cell in a table  
<textarea> Defines a multi-line text input control  
<tfoot> Groups the footer content in a table  
<th> Defines a header cell in a table  
<thead> Groups the header content in a table  
<title> Defines the title of a document  
<tr> Defines a row in a table  
<tt> Defines teletype text  
<u> Deprecated. Defines underlined text  
<ul> Defines an unordered list  
<var> Defines a variable part of a text  
<xmp> Deprecated. Defines preformatted text           

Web Developing

Here we will learn how to develop a website.

For developing a website we need to know atleast,

HTML
XML
JavaScript
CSS
PHP
MySQL


Please go through my blog to study how to develop a website.