Php global variables
variables are automagically available in all contexts in function and global scopes.
They are named respectively: $ POST, $ GET, $ COOKIE, $ ENV and $ SERVER.
Additionally, a new array called $ REQUEST was added, which contains all $ GET, $ POST and $ COOKIE variables. Variables defined outside of a function are called global variables. They exist in one scope. Variables defined inside of a function are called local variables. The tips to access a global variable inside a function is to use the global keyword. This tells the PHP interpreter that further use of the named variable inside a function should refer to the global variable with the given name, not a local variable. Print the entire $GLOBALS array using PHP's functions for processing associative arrays: <?php reset($GLOBALS); while (list($key, $var) = each($GLOBALS)) { print "$key => $var\ n<br>\ n"; } ?> PHP's list() and each() functions to iteratively process the $GLOBALS array. It then prints the keys names of the variables stored in the $GLOBALS array and their corresponding values. To access a variable that is not declared within the current function, you must do one of two things: either access it through the $GLOBALS array or declare the variable as the global variable. |
Php global variables
PMA06:53
Table Types-MySQL
PMA10:17
MyISAM is the default table type in MySQL Version 3.23. It's based on the ISAM code and
has a lot of useful extensions.
The index is stored in a le with the .MYI (MYIndex) extension, and the data is stored
in a le with the .MYD (MYData) extension. You can check/repair MyISAM tables with the
myisamchk utility.
The following is new in MyISAM:
If mysqld is started with --myisam-recover, MyISAM tables will automaticly be repaired on open if the table wasn't closed properly.
You can INSERT new rows in a table without deleted rows, while other threads are
reading from the table.
Support for big les 63-bit on lesystems/operating systems that support big les.
All data is stored with the low byte rst. This makes the data machine and OS
independent. The only requirement is that the machine uses two's-complement signed
integers (as every machine for the last 20 years has) and IEEE
oating-point format
also totally dominant among mainstream machines. The only area of machines that
may not support binary compatibility are embedded systems because they sometimes
have peculiar processors.
There is no big speed penalty in storing data low byte rst; The bytes in a table row
is normally unaligned and it doesn't take that much more power to read an unaligned
byte in order than in reverse order. The actual fetch-column-value code is also not
time critical compared to other code.
All number keys are stored with high byte rst to give better index compression.
Internal handling of one AUTO_INCREMENT column. MyISAM will automatically update
this on INSERT/UPDATE. The AUTO_INCREMENT value can be reset with myisamchk.
This will make AUTO_INCREMENT columns faster (at least 10 %) and old numbers will
not be reused as with the old ISAM. Note that when an AUTO_INCREMENT is dened on
the end of a multi-part-key the old behavior is still present.
When inserted in sorted order (as when you are using an AUTO_INCREMENT column) the
key tree will be split so that the high node only contains one key. This will improve
the space utilization in the key tree.
BLOB and TEXT columns can be indexed.
NULL values are allowed in indexed columns. This takes 0-1 bytes/key.
Maximum key length is now 500 bytes by default. In cases of keys longer than 250
bytes, a bigger key block size than the default of 1024 bytes is used for this key.
Maximum number of keys/table enlarged to 32 as default. This can be enlarged to 64
without having to recompile myisamchk.
There is a ag in the MyISAM le that indicates whether or not the table was closed
correctly. This will soon be used for automatic repair in the MySQL server.
myisamchk will mark tables as checked if one runs it with --update-state. myisamchk
--fast will only check those tables that don't have this mark.
myisamchk -a stores statistics for key parts (and not only for whole keys as in ISAM).
Dynamic size rows will now be much less fragmented when mixing deletes with updates
and inserts. This is done by automatically combining adjacent deleted blocks and by
extending blocks if the next block is deleted.
myisampack can pack BLOB and VARCHAR columns.
has a lot of useful extensions.
The index is stored in a le with the .MYI (MYIndex) extension, and the data is stored
in a le with the .MYD (MYData) extension. You can check/repair MyISAM tables with the
myisamchk utility.
The following is new in MyISAM:
If mysqld is started with --myisam-recover, MyISAM tables will automaticly be repaired on open if the table wasn't closed properly.
You can INSERT new rows in a table without deleted rows, while other threads are
reading from the table.
Support for big les 63-bit on lesystems/operating systems that support big les.
All data is stored with the low byte rst. This makes the data machine and OS
independent. The only requirement is that the machine uses two's-complement signed
integers (as every machine for the last 20 years has) and IEEE
oating-point format
also totally dominant among mainstream machines. The only area of machines that
may not support binary compatibility are embedded systems because they sometimes
have peculiar processors.
There is no big speed penalty in storing data low byte rst; The bytes in a table row
is normally unaligned and it doesn't take that much more power to read an unaligned
byte in order than in reverse order. The actual fetch-column-value code is also not
time critical compared to other code.
All number keys are stored with high byte rst to give better index compression.
Internal handling of one AUTO_INCREMENT column. MyISAM will automatically update
this on INSERT/UPDATE. The AUTO_INCREMENT value can be reset with myisamchk.
This will make AUTO_INCREMENT columns faster (at least 10 %) and old numbers will
not be reused as with the old ISAM. Note that when an AUTO_INCREMENT is dened on
the end of a multi-part-key the old behavior is still present.
When inserted in sorted order (as when you are using an AUTO_INCREMENT column) the
key tree will be split so that the high node only contains one key. This will improve
the space utilization in the key tree.
BLOB and TEXT columns can be indexed.
NULL values are allowed in indexed columns. This takes 0-1 bytes/key.
Maximum key length is now 500 bytes by default. In cases of keys longer than 250
bytes, a bigger key block size than the default of 1024 bytes is used for this key.
Maximum number of keys/table enlarged to 32 as default. This can be enlarged to 64
without having to recompile myisamchk.
There is a ag in the MyISAM le that indicates whether or not the table was closed
correctly. This will soon be used for automatic repair in the MySQL server.
myisamchk will mark tables as checked if one runs it with --update-state. myisamchk
--fast will only check those tables that don't have this mark.
myisamchk -a stores statistics for key parts (and not only for whole keys as in ISAM).
Dynamic size rows will now be much less fragmented when mixing deletes with updates
and inserts. This is done by automatically combining adjacent deleted blocks and by
extending blocks if the next block is deleted.
myisampack can pack BLOB and VARCHAR columns.
Running MySQL on Windows
PMA10:13
MySQL supports TCP/IP on all Windows platforms and named pipes on NT. The default
is to use named pipes for local connections on NT and TCP/IP for all other cases if the
client has TCP/IP installed. The host name species which protocol is used:
Host name Protocol
NULL (none) On NT, try named pipes rst; if that doesn't work, use
TCP/IP. On Win95/Win98, TCP/IP is used.
. Named pipes
localhost TCP/IP to current host
hostname TCP/IP
You can force a MySQL client to use named pipes by specifying the --pipe option or by
specifying . as the host name. Use the --socket option to specify the name of the pipe.
You can test whether or not MySQL is working by executing the following commands:
C:\mysql\bin\mysqlshow
C:\mysql\bin\mysqlshow -u root mysql
C:\mysql\bin\mysqladmin version status proc
C:\mysql\bin\mysql test
If mysqld is slow to answer to connections on Win95/Win98, there is probably a problem with your DNS. In this case, start mysqld with --skip-name-resolve and use only
localhost and IP numbers in the MySQL grant tables. You can also avoid DNS when
connecting to a mysqld-nt MySQL server running on NT by using the --pipe argument
to specify use of named pipes. This works for most MySQL clients.
There are two versions of the MySQL command-line tool:
mysql Compiled on native Windows, which oers very limited text editing capabilities.
mysqlc Compiled with the Cygnus GNU compiler and libraries, which
oers readline editing.
If you want to use mysqlc.exe, you must copy `C:\mysql\lib\cygwinb19.dll' to
`\windows\system' (or similar place).
The default privileges on Windows give all local users full privileges to all databases. To
make MySQL more secure, you should set a password for all users and remove the row in
the mysql.user table that has Host='localhost' and User=''.
You should also add a password for the root user. (The following example starts by
removing the anonymous user, that allows anyone to access the 'test' database.):
C:\mysql\bin\mysql mysql
mysql> DELETE FROM user WHERE Host='localhost' AND User='';
mysql> QUIT
C:\mysql\bin\mysqladmin reload
C:\mysql\bin\mysqladmin -u root password your_password
is to use named pipes for local connections on NT and TCP/IP for all other cases if the
client has TCP/IP installed. The host name species which protocol is used:
Host name Protocol
NULL (none) On NT, try named pipes rst; if that doesn't work, use
TCP/IP. On Win95/Win98, TCP/IP is used.
. Named pipes
localhost TCP/IP to current host
hostname TCP/IP
You can force a MySQL client to use named pipes by specifying the --pipe option or by
specifying . as the host name. Use the --socket option to specify the name of the pipe.
You can test whether or not MySQL is working by executing the following commands:
C:\mysql\bin\mysqlshow
C:\mysql\bin\mysqlshow -u root mysql
C:\mysql\bin\mysqladmin version status proc
C:\mysql\bin\mysql test
If mysqld is slow to answer to connections on Win95/Win98, there is probably a problem with your DNS. In this case, start mysqld with --skip-name-resolve and use only
localhost and IP numbers in the MySQL grant tables. You can also avoid DNS when
connecting to a mysqld-nt MySQL server running on NT by using the --pipe argument
to specify use of named pipes. This works for most MySQL clients.
There are two versions of the MySQL command-line tool:
mysql Compiled on native Windows, which oers very limited text editing capabilities.
mysqlc Compiled with the Cygnus GNU compiler and libraries, which
oers readline editing.
If you want to use mysqlc.exe, you must copy `C:\mysql\lib\cygwinb19.dll' to
`\windows\system' (or similar place).
The default privileges on Windows give all local users full privileges to all databases. To
make MySQL more secure, you should set a password for all users and remove the row in
the mysql.user table that has Host='localhost' and User=''.
You should also add a password for the root user. (The following example starts by
removing the anonymous user, that allows anyone to access the 'test' database.):
C:\mysql\bin\mysql mysql
mysql> DELETE FROM user WHERE Host='localhost' AND User='';
mysql> QUIT
C:\mysql\bin\mysqladmin reload
C:\mysql\bin\mysqladmin -u root password your_password
Javascript cookie string
PMA10:36
We can set a cookie by setting document.cookie to a cookie string.
The following code will set a cookie with the UserName set as Paul,
and an expiration date of 28 December 2010.
<html>
<head>
<script language=JavaScript>
document.cookie = "UserName=Paul;expires=Tue, 28 Dec 2010 00:00:00;";
</script>
</head>
<body>
<p>This page just created a cookie</p>
</body>
</html>
Save the page as FreshBakedCookie.htm. We'll see how the code works as we
discuss the parts of a cookie string, but first let's see what happens
when a cookie is created.
The following code will set a cookie with the UserName set as Paul,
and an expiration date of 28 December 2010.
<html>
<head>
<script language=JavaScript>
document.cookie = "UserName=Paul;expires=Tue, 28 Dec 2010 00:00:00;";
</script>
</head>
<body>
<p>This page just created a cookie</p>
</body>
</html>
Save the page as FreshBakedCookie.htm. We'll see how the code works as we
discuss the parts of a cookie string, but first let's see what happens
when a cookie is created.
In this section we'll see how to look at the cookies that
are already stored by IE on our computer. We'll then load the cookie-creating
page we just created with the preceding code to see what effect this has.
First we need to open IE. I'm using IE 6, so if you're using IE 4
or 5 you will find the screenshots and menus in slightly different places.
Before we view the cookies, we'll first clear the temporary
Internet file folder for the browser because this will make it easier to view
the cookies that our browser has stored. In IE, select Internet Options from the
Tools menu,
javascript Date, Time
PMA10:30
Javascript Date
The methods getDate(), getDay(), getMonth(), and getFullYear() allow us to
retrieve date values from inside a Date object.
The setDate(), setMonth(), and setFullYear() methods allow us to set the
date values of an existing Date object.
The getHours(), getMinutes(), getSeconds(), and getMilliseconds() methods retrieve the time values in a Date object. The setHours(), setMinutes(), setSeconds(), and setMilliseconds() methods allow us to set time values of an existing Date object. One thing that we didn't cover in that chapter was the idea that the time depends on your location around the world. For example, imagine you have a chat room on your website and want to organize a chat for a certain date and time. Simply stating 15:30 is not good enough if your website attracts international visitors. The time 15:30 could be Eastern Standard Time, Pacific Standard Time, the time in the United Kingdom, or even the time in Kuala Lumpur. You could of course say 15:30 EST and let your visitors work out what that means, but even that isn't foolproof. There is an EST in Australia as well as in the U.S. var localTime = new Date();
This creates a new Date object and
initializes it to the current date and time based on the client computer's
clock. (Note that in fact the Date object simply stores
the number of milliseconds between the date and time on your computer's clock
and midnight UTC time on the 1st of January 1970.)
Within the body of the page we have seven more script blocks that
use the three world time methods we looked at earlier. Note that some of them
are enclosed in an if statement, for example
if (localTime.toLocaleTimeString) { document.write(localTime.toLocaleTimeString()) }
This checks to see if the browser supports that method and only
makes use of it if it does. Older browsers don't support all of the date/time
methods so doing this prevents ugly errors.
In the following line
document.write(localTime.toUTCString());
we write the string returned by the toUTCString() method to the page. This converts the date and
time stored inside the localTime Date object to the equivalent UTC date and time.
|
What is TCP/IP
PMA10:25
What is TCP/IP
The Transmission Control Protocol and the Internet Protocol manage the sending and receiving
of messages as packets over the Internet. The two protocols together provide a service to
applications that use the Internet: communication through a network.
The World Wide Web is a network application that uses the services of TCP and IP to communicate over the Internet. When a web browser requests a page from a web server, the TCP/IP services provide a virtual connection -- a virtual circuit—between the two communicating systems. Remember that packet-switched networks don't operate like telephone networks that create an actual circuit dedicated to a particular call. Once a connection is established and acknowledged, the two systems can communicate by sending messages. These messages can be large, such as the binary representation of an image, and TCP may fragment the data into a series of IP datagrams. An IP datagram is equivalent to the couriers' envelope in that it holds the fragment of the message along with the destination address and several other fields that manage its transmission through the network. Each node in the network runs IP software, and IP moves the datagrams through the network, one node at a time. When an IP node receives a datagram, it inspects the address and other header fields, looks up a table of routing information, and sends it on to the next node. Often these nodes are dedicated routers—systems that form interconnections between networks—but the nodes can also include the computer systems on which the applications are running. IP datagrams are totally independent of each other as far as IP is concerned: the IP software just moves them from node to node through a network. The size of a datagram is primarily determined by the largest size message that can be sent by any part of the network. TCP software performs the function of gluing the fragments together at the destination using the fragment identifier field in the IP datagram header. Because IP datagrams are transmitted through the network independently, there is no guarantee they will arrive at the destination in order, and TCP stores the fragments in a buffer until all preceding fragments are received. IP doesn't guarantee that datagrams are delivered. If an IP node receives a corrupt datagram, it throws it away. Datagrams may be missing from the stream the TCP software receives because a datagram was corrupt and not passed on from the IP software or was delayed in the network. TCP buffers the fragments to allow the out-of-order datagrams to arrive. If a missing datagram fails to arrive, TCP eventually requests that it be resent. This can cause datagrams to be received twice; however TCP recognizes and discards the duplicate datagram when it arrives. |
How to traffic to your website
PMA11:19
How to traffic to your website
1. Article marketing. If you'd like to acquire numerous inbound
links, establish your expertise on your field, and generate enormous
traffic to your site all at the same time, you should definitely
engage to article marketing. It is the most efficient and
cost-effective way to build traffic to your site. All you have to
do is write quality articles that are highly relevant to your
website or products that you promoting and submit these articles
to submission sites.
2. Multiple Pages - If possible, divide the websiteinto several pages and access them through separate items links on a menu or navigation bar. 3. Be consistent - Have same menu or some extensionof it on all pages so that viewers know where they are at all times. Home page is a must on every page. Visitors should be able to easily look around your website. If visitors are frustrated andcan't find what they are looking for, they are likely to leave quickly and never come back or recommend yourwebsite to others.The menu can be located at the top, left or right side of the page. 4. Keep Content Fresh - Static content is dead content; Write new articles, update old ones. New or updated content is a great way to keep visitors coming back. Search engines also rank websites with fresh content higher. Keeping an active blog is a great way to keep your website new and fresh. 5. Use Descriptive File Names - Use descriptive keywords as names for the files like pictures, videos on your site. This will help your site appear more with search engines - especially through Google Image Search. 6. Create Links - Getting links to your website from other websites will help generate more traffic and improve your placement in search engines. Find other websites on your same topic and put a link to them on your site -- maybe in a new Favorite Links page. Then ask those websites to link back to you by signing their guestbook. 7. Tag your Site - Adding tags can increase the number of times your website shows up in search results. To pick the right keywords, try putting yourself in the shoes of your visitors and think whatthey would search for if they wanted to find your site. 8.Visitors Contact You - Make it simple for visitors to reach you if they want. Include a guestbook or blog where they can post questions. Add a contact us form where they can submit questions to you via email. |
Php file uploading code
PMA07:58
Php file uploading code
To uploading a file, two changes must be
made to the standard HTML form. First, the initial FORM line must
include the code ENCTYPE = "multipart/form-data", which lets the
HTML know to expect a file as well other data.
Second, <input name="NAME" type="FILE" /> the element is used to create the necessary field.
Another trap is the size of uploaded files.
Although you can tell the browser the maximum size of file to upload, this is only a recommendation and it cannot ensure that your script won't be handed a file of a larger size. The danger is that an attacker will try a denial of service attack by sending you several large files in one request and filling up the filesystem in which PHP stores the decoded files. The php file uploading code: <form action="" method="post"> Select Filename: <input type="file" name="adFile"> <input type="submit" value="Upload"> </form> <?php move_uploaded_file ($_FILES['adFile'] ['tmp_name'], "../uploads/{$_FILES['adFile'] ['name']}") ?>
Set the post_max_size configuration option in php.ini to the
maximum size in bytes that you want:
post_max_size = 1024768 ; one megabyte The default 10 MB is probably larger than most sites require. |
Php Code for a Valid Number
PMA07:12
Php Code for a Valid Number
Besides working on numbers, is_numeric( ) can also be applied to numeric strings.
Use is_numeric( ):
if (is_numeric('five')) { /* false */ } if (is_numeric(5)) { /* true */ } if (is_numeric('5')) { /* true */ } if (is_numeric(-5)) { /* true */ } if (is_numeric('-5')) { /* true */ }
It is often useful to determine where in the code output originates.
Helpfully, is_numeric( ) properly parses decimal numbers, however, numbers with thousands separators, such as 5,100, cause is_numeric( ) to return false.
To strip the thousands separators from your number before calling
is_numeric( ) use str_replace( ):
is_numeric(str_replace($number, ',', ''));
To check if your number is a specific type, there are a
variety of self-explanatorily named related functions:
is_bool( ) , is_float( ) (or is_double( ) or is_real( );
they're all the same), and is_int( ) (or is_integer( )
or is_long( )).
|