Explain: php_self or $_SERVER['PHP_SELF'] Usage

by Vivek Gite on March 18, 2009 · 2 comments

Can you explain usage of predefined variables called $_SERVER['PHP_SELF']?

PHP programming language provides a lots of predefined variables. Your php script can access a large number of such predefined variables.

$_SERVER array

$_SERVER is an array defined in PHP and it stores information about your server and execution environment information.

$_SERVER['PHP_SELF'] variable

This array element points out the filename of the currently executing script. For example, if you run www.cyberciti.biz/index.php, $_SERVER['PHP_SELF'] would be /index.php. This is relative to the document root. This is useful to referring HTML forms and other element.

 
....
<div class="forumform">
<form action="' . $_SERVER[PHP_SELF]. '" method="post" onSubmit="return checkForm()" name="pforum">
....
 

Featured Articles:

Share this with other sys admins!
Facebook it - Tweet it - Print it -

{ 2 comments… read them below or add one }

1 Eugene March 19, 2009

There is also a magic php constant __FILE__ .

The php.net documentation goes like this:
The full path and filename of the file. If used inside an include, the name of the included file is returned. Since PHP 4.0.2, __FILE__ always contains an absolute path with symlinks resolved whereas in older versions it contained relative path under some circumstances.

Reply

2 Manko10 March 19, 2009

Be careful!
$_SERVER['PHP_SELF'] contains not only the path to the current PHP script, it also contains the PATH_INFO ($_SERVER['PATH_INFO']). This is something very useful which allows you to attach further information to a file. For example MediaWiki uses it in this way: index.php/Article_Name whereas /Article_Name is the PATH_INFO.
The downside is that this is a possible security vulnerability (XSS, CSRF etc.). To get the raw script name without any PATH_INFO you have to use $_SERVER['SCRIPT_NAME'].

Reply

Leave a Comment

You can use these HTML tags and attributes for your code and commands: <strong> <em> <ol> <li> <u> <ul> <blockquote> <pre> <a href="" title="">
What is 10 + 11 ?
Please leave these two fields as-is:
Solve the simple math so we know that you are a human and not a bot.




Previous post:

Next post: