PHP-and-MySQL/C4/User-Login-Part-2/English-timed
From Script | Spoken-Tutorial
Time | Narration |
00:00 | Welcome to the second part. Here I’ll show you how to edit your "login dot php" page to connect to the database and also how to check our username and password against that in the database. |
00:14 | Now we’ve already connected to our database. |
00:18 | Refreshing this and resending my username and password, we can establish that there have been no errors. |
00:24 | I mean this error here. |
00:25 | And we have seen that if we don’t type data we will get an error. |
00:28 | Now. First of all I’m going to setup a query. |
00:36 | If you have used "mysql" or any structured query language before, you will know that you can query a database. |
00:43 | I think Microsoft Access has this. |
00:46 | So here we are going to say, "SELECT", in fact we’re going to say "SELECT *" because we need the ID, the username and the password. |
00:54 | I don’t think we need the id but "SELECT *" anyway so that it will grab all the data. |
00:59 | So "SELECT * FROM" and we’ve called this, users, I think. Let me confirm that. |
01:04 | Yes, users. So "SELECT * users" and here we’ll say "WHERE username" which is the name of this...... this, here. |
01:20 | And we will say "WHERE username equals" the "username" that has been typed. |
01:30 | Now if that "username" doesn’t exist, we need to display some kind of an error message to say that "This user doesn’t exist". |
01:37 | So what we will do is we will use another function, a mysql function called "mysql num rows". |
01:46 | This counts the number of rows that have been retrieved from the query you’ve given the database. |
01:53 | So we’ll say "numrows equals mysql_num_rows" and in the brackets we have the name of our query, the variable that I have stored the query function in. |
02.08 | And if we echo out the number of rows, I’ll just prove to you and test for myself that we should get 1 because we have just 1 row. |
02.16 | Let me click insert and add another row of data, for example - another username and another password. |
02:26 | I’ll just try that now. I’ll be testing this later on. Lets see, lets say username is "Kyle" and password is "123" this time. |
02:38 | Okay, lets try that. And there we are. Hold on a second. Where am I? Ah there we go. |
02:53 | So we have got "Alex" and "Kyle". |
02:55 | We can see the ids have been automatically incremented. |
02:58 | You can see both our passwords here and the 2 usernames. |
03:02 | Now we will refresh this and see what we get. |
03.06 | Oh Ok. This is the whole part of the check. |
03:10 | The reason this has returned 1 is that if I were just selecting every user and then counting the row, the value would increment. |
03:18 | Go back here and refresh and we’ll get the value of 2 because there are 2 rows. |
03:22 | But if I’m saying "SELECT where the username equals my username", we’re obviously only selecting where my username exists and that is in 1 row. |
03:34 | Usually on a website, you won’t have duplicate username. |
03:40 | Okay. So now that we have got this, what is the purpose of finding out how many rows there are. |
03:47 | Now the purpose is that we can say "if num_rows is equal to zero", then that means we can.. Sorry, if "my num_rows doesn’t equal zero", then we can execute the code we need to do, that we will need to login. |
04.01 | Otherwise, sorry "else", we need to echo out, sorry "else die". We will give the message "That user doesn’t exist". |
04:16 | So what we’re doing is, we’re checking that a row has been returned where we have supplied that username. |
04:25 | And if it doesn’t equal zero, we can execute our code to login. |
04:29 | Otherwise we’ll say die and "Tthat username doesn’t exist". |
04:33 | This will be equal 1, 2, 3, 4 and so on. |
04:38 | Sorry it will equal... |
04:40 | If it doesn’t equal zero, then it must equal something. |
04:44 | And if it does equal something, then the code in here will be executed. |
04:47 | So if it is equal to 0, that basically means that no result can be returned. |
04:52 | I’ll resend this. Let’s go back. |
04:57 | And......... let’s get rid of our "echo num_rows". |
05:05 | Okay. So let’s go back to our main page and we’ll login with "Alex" and "abc"; password doesn’t matter at the moment. |
05:13 | Nothing’s happened because no errors have been returned. |
05:15 | Now let me use Billy, for example, and type the password in and click on login. |
05:21 | "That user doesn’t exist!" because no rows that have the username equal to Billy have been returned. |
05:26 | So we can see that that’s working. |
05:28 | I’ll go back to my original thing. |
05:31 | So "Alex" and my password is "abc". |
05:37 | Now the code to login. |
05:39 | Inorder to login, we need to perform a password check. |
05:42 | So to grab the password, I’ll use a function. |
05:46 | Sorry not a function, I’ll use...... a loop and that loop will be the "while" loop. |
05:52 | I will type a variable name here. I’ll call it "row" and that is equal to "mysql"..... "mysql_ fetches a row as an array". Okay? |
06:11 | So I’ll say "mysqul_fetch_assoc" for short. |
06:22 | And this is going to be my query. So I’ve got my query there. |
06:28 | From this, we are fetching each column data from here and putting it into an array called "row". |
06:40 | So obviously with the while loop, we’ll have our brackets and now we’ll set some variables. |
06:45 | I’ll say "db username", which is the username that I’ll extract from the database, is equal to the "row" and this is the row name, "username". |
06:55 | So as we can see here, this is the row name here. |
06:59 | If this is an array of the data, then each of these are going to be id, username and password. |
07:06 | We’re not using 0,1,2. But I’m not sure whether that works. |
07:10 | Now we’ll keep it simple and we’ll directly reference the name of our column. |
07:20 | So the database username will be "row" and that since this is an array which is using this function on our query. |
07:26 | Next we will say "db password equals row" and then our password. |
07:38 | So after this we could echo out.... |
07:43 | No, in fact we don’t need to echo out our contents of our db username and password unless we want to run into errors. |
07:49 | We already know what they are. We’ve seen them in the database. |
07:51 | Now what we’ll do is we will perform a check. So "check to see if they match". |
08:00 | It’s very simple to do this using an "if" statement. |
08:04 | "if" our username equals our db username and our password is equal to our db password , then we’ll say it’s correct. |
08:19 | Otherwise, we’ll say it’s incorrect. |
08:22 | I will remove the brackets because there is only one line. So echo "Incorrect password!". Just leave it like that. |
08:34 | And here we’ll say echo "You’re in!". |
08:41 | Okay we’ll just test this before I end this part of the video. |
08:46 | I’ll first say "Alex" and I’ll put a wrong password in. "Incorrect password!". |
08:51 | And now I’ll put "abc" as password and "You’re in!". |
08:55 | So we’ve checked our username and it exists. |
08:58 | We’ve checked our fields exist so please enter in your username and password. |
09:04 | If we enter in a username and a wrong password we get an error message – "Incorrect password". |
09:11 | If we enter the correct password, we get- "You’re in". |
09:13 | And if we enter a username that is not found, we get an error message saying the user doesn’t exist. |
09:24 | Okay so join me in the next part, and I’ll show you how to create your sessions and your log out page. See you then! |
09:32 | This is Antara dubbing for the Spoken Tutorial project. |