I am trying to relearn some PHP basics for making a simple login script, however I get an error I have not received before(I made the same script a little over a year ago and never had this error. I simplified the code as much as I could to test to see which area was problematic and here is the issue:
<?php
$user = $_POST["username"];
if($user != null)
{
echo $user;
echo " is your username";
}
else
{
echo "no username supplied";
}
?>
Now this code works fine when I send a variable to the script, but when no variable is supplied it spits out an error. In theory this will be fine because if no username/pass is supplied then an error is expected. I will be checking to make sure of this before the code is send to the script, however I fear that somehow a blank string may leak through and spit out some unknown error. Here is the error I get:
( ! ) Notice: Undefined index: username in C:\wamp\www\verify_login.php on line 2
Call Stack
Time Memory Function Location
1 0.0003 668576 {main}( ) ..\verify_login.php:0
no username supplied
as you can see the code registers that no variable was supplied, but it gives out and error that I assume means that a variable was not found were one was expected or something like that. Can someone please clarify this for me?
try
Try this:
I use this everywhere where there is a $_POST request.
This is just a short hand boolean, if isset it will set it to $_POST['username'], if not then it will set it to an empty string.
Usage example:
Prior to PHP 5.2.0 and above you should use
filter_input()
which is especially created for that to get a specific external user inputs such as get, post or cookie variables by name and optionally filters it to avoid any XSS/Injection attacks on your site. For example:You may use one of INPUT_GET, INPUT_POST, INPUT_COOKIE, INPUT_SERVER, or INPUT_ENV.
By using optional 3rd argument, you can extend it by variety of filters (for validating, sanitizing, filtering or other), e.g.
FILTER_SANITIZE_SPECIAL_CHARS
,FILTER_SANITIZE_ENCODED
, etc.For example:
The syntax is:
See also: Why is better to use filter_input()?
When you say:
You're asking the PHP interpreter to assign
$user
the value of the$_POST
array that has a key (or index) ofusername
. If it doesn't exist, PHP throws a fit.Use
isset($_POST['user'])
to check for the existence of that variable: