Transcript for:
PHP and MySQL Sign Up/Login System

hello everyone welcome to my channel again today we are gonna learn how to create a complete sign up and login system using PSP mySQL database first let me show you quick demo of the project that we're gonna build so we have a registration from how you can put the information and you have a login form so if we provide any wrong information it will not allow you to login also we have some validation and verification in the registration form there are lots of other things so we'll see how a new code so let's get started first of all we need a software called jump you can download it from internet you can download for your operating system I have already downloaded so let's install it the instruction process is very easy and straightforward just notice the location where you are installing it in this case it is Jump folder in set C drive the process can take a couple of minutes so be patient with it after the installation is complete a control panel should appear automatically so we need to module the passion MySQL just click a start on those now if for some reason the control panel does not appear automatically search it on your program list and it should appear there as we installed the jump software inside C drive in the C drive there should be a new folder called jump and inside the jump folder there is another folder called sdox so all our projects need to be put inside this history docs folder now let's create a new project named login register now I will open it using visual studio code you can use your own code editor in this case so let's open the folder from that specific location see then jump and then the studocs and the name of the project is login register now we can start coding let's create a new file for the registration prompt name it registration.psp now let's add the HTML5 boilerplate code using the vs code shortcut and let's give you the title of registration form now let's add the form into a deep container and now let's put the actual form here method will be post because we are sending a post request and action will be the same file registration.psp because we will use the PSP code here now let's add the actual Fields so we are keeping the fields into a pattern deep the first field is a text field and it will be full name so here you are using a name attribute it is important because we will use this name attribute inside the PSP code so placeholder is the instruction that will be shown to the user just copy and paste for other fields so the second field you can use email in this case you will have to change the type to email and the Third Field is password uh in this case the type will be password so the the fourth field will be the repeat password field it is just for the confirmation of the password so that user does not make any mistakes on the put the password lastly we need the button for the summation of the form so in this case the type will be submit and value is the level that will be shown to the user in the button and let's give it a name also submit now let's see how it looks in the browser so to access it we'll have to access through localhost so let's type localhost and Slash and the name of the folder just make sure dump control panel is enabled now the name of the folder is login register and then the name of the file the name of the file is is registration.p so this is how it looks now let's add some styling here we can use bootstrap in this case bootstop is a framework that make life a lot easier for the quick projects so it already have some Sterling have been done for us let's copy the CSS part we'll copy this channel code and we'll put it inside the head check of this tml now let's add our own style file let's name it style.css now uh let's give some style to the container okay we'll have to link it with the HTML file now let's add some star in the container let's give it a max weight of 600 pixels so that it is not very wide then let's keep margin or two to make it centered horizontally and let's set some padding also now let's add some padding into the body Tech so that the form does not touch the top of the base and let's add some box Shadow to the container I'm just copying paste pasting and then let's add some margin to the fields so in this case we are using 30 pixels now we'll have to add the bootstrap class to the form field in this case the class is form control so we'll have to copy this this is for the bootstrap framework so let's copy and paste for all the fills and for the button we'll have to use the different class name in this case the classes button bottom primary now let's see how it looks it's looking nice but there's some extra margin after the registration button so let's fix it let's just uh add a different name for the that button now it's looking great so the form is ready now we'll have to save the data into mySQL database when somebody click register after putting the information for that we need a database we can access the mySQL database using phpmyadmin for that just type localhost slash PSP might mean in the browser and then click new so the database name we are using a login register you can use your own then click create now we need a table and for the columns we need to check how many fields we have here four Fields you see but we don't need any column for the repeat password because that is just for the confirmation of the password so we have three fields but we need four columns for the for the ID columns we need one extra now let's give a table a name in this case I'm giving users as the name and then click create now we'll have to provide the column name the field name the first one is ID as I said and it will be in integer value and will be Auto increment and the second field is the one that we have in the form the first one full name and the type will be bar chart butcher are used for the field that are not too big and that are string value and the length is the length of the of the characters in this case for the full name I am giving 128 and the Third Field will be email field which is the second field in the form and it will be virtual and the length is 255 you can use the length based on your requirements the last field is by password it is also barsher and I am giving the length of 255 and after all let's click save so the database and table is ready now we'll have to add the PSP code to process the data and insert the data into this database let's add the code so we are using registration.psp in the action that means we'll have to put the code in this same file let's add the code immediately after the form tag now all the PSP code need to be put inside the PSP special text just keep in mind that so how do you however you write something just put peace detect now in PSP there is a global error variable called post that that catches all the data submitted by the users in the form first let's check what it currently has using the printer method the printer method will tell us what the variable has currently so let's check what it has first we'll check without providing any value so now we will have we have the array key but array key does not have any values on it so email does not have any value but the array key are there now let's provide the information now we have the information there you see full name has Brad Pitt email here the array key or the name that we used in the form that means we can access all the data submitted by the users using the post variable now first of all we'll have to check whether or not the form is submitted so we can do that by using the submit name we used in the button so we'll have to use if statement in the if statement there is a function called set so in the set function we'll provide the post variable and with the array key submit that means the code inside this if statement will work only if somebody click the register register button now let's store the data into some variables we can access the data using the post array variable and in this case the array key will be the value of the name attributes we provided so for example the first one will be full name as the array key in the post variable and for the second one the array key will be email let's copy and paste and then change the array key and variable name second one is email and the name attribute is email third one is password and the value of the name attributes in this case is password and uh the last one the the is the repeat password so in this case the array key will be repeat password then that value we provided in the name attribute so it is repeat password before inserting the data into the database we will have to do some validation for that purpose let's declare a new empty error variable named errors so if any errors happens we will add that specific erode into this error now as a first one let's check if there is any empty value provided by the users we can that we can do that using the empty method of PSP so we are using the empty function actually empty function inside the if statement and in the AMD function the argument will be the variable where we already stored the data so to check every variable we will use our operator that means if any of the variable has empty value then the code inside this if statement will work otherwise the code inside else statement will work so let's do it for every variables now if there is any empty value provided by the users we will add a new error item into the errors array so you can do that using the error push function in this function the first argument will be the name of the variable in this case it is errors and the second um argument will be will be the error name you can use anything here I am using all filter record now if you don't understand why I am doing these things just bear with me you will understand more holy code further now let's check if the email provided by the user is valid email or not we can do that using the filter where function of PSP so let's use filter function inside the if statement so if filter were function return false then we will add a new errors into the error 7 so in the filter function the first argument will be the email the email variable here we stood the email provided by the user and then the second argument will be a constant PSP constant so it needs to be exactly the same uh it is filter validate so just provide the exactly same constraint name now let's add a new errors into the using the error push function like we did for the empty values so in this case again the first argument will be the variable name and the second argument will be the error so you can provide anything here I'm adding email is not valid now let's check the password so if password length is less than 8 then we will add a new erode into the errors array we can check the length of the string using a steel Lan function so in this function the variable needs to be provided is argument in this case it is password so if password length is less than 8 we can do that using the less than operator then we will add a new error into the error 7 so we'll do it using error push function again so let's provide the first argument errors and then the error so you can use anything here I will use password must be at least eight characters long now let's check if the user provides the different password in the repeat password field we can do that using the not equal operator in the if statement so password not equal to if password is not equal to password repeat we can just copy it from the variable we declared for the safety purpose see password is not equals to password repeat then we'll add a new new error error into the errors array again we will use error push function and then the variable name and the error name so you can use anything here um I'm writing password does not match I have made a small mistake here sorry so the future ability to be filtered validate email let's fix it now it is time to understand why we use the errors theorem so we will have to check whether or not the errors error is empty if the errors arrow is empty that means there is no error that means any of these conditions are not true so we can check the number of array elements in an array using a function called count if count I mean the length of the array is greater than zero then uh we have errors we cannot insert the data into the database so let's check it using the count function so the argument will be the name of the variable errors if it is greater than 0 that means it is not empty then we will display the errors to the users now as it is an array element and it has multiple values so we can check we can display those values using Forest Loop so in this case uh in set Forest we'll have to use errors variable and we don't need any key so let's delete the key so it will be just error and now display the error using the equal operator so you'll use the Deep element here and inside development we will use the class from bootstrap in this case as it is an alert to the users and as it is a error so use alert LR danger these two classes so that it looks as an error to the users so if there is error will display the errors and if there is no error in the else statement we will insert the data so let's just comment now we will insert the data into database now let's check what we have done so far I made a small mistake here I forgot to provide the ending development let's add it now let's check it to localhost so localhost then name of the folder login register and then the name of the file registration.psp so first let's not provide any value and click the register button so we got all the error officer required email is not valid password must be at least encrypted Longs now let's provide the full name and the email dreaded for example example.com and then you can provide anything here I'm just testing so password let's put a password that is not more than seven characters so that we get the error and I am using a different password now we got two errors password must be at least secure two loans password does not match now let's provide all the information correctly and see if we get any errors let's provide the email correctly let's provide the password so I am giving one to nine in this case and then click the register button so we are not getting any errors that means everything is working perfectly and so we are ready to insert the data into database before that let's do some password security so if we directly insert this password into the database and if anybody get access to your database he or she can easily see the password for that reason we will have to inscribe the password so you can encrypt the password using the password hash function so let's do it we can store the new password into a new variable in this case it's password hash and then the function so here the first argument will be the name of the variable adjusting password and then the name of the algorithm in this case we will have to use a constant PSP constant there are other ways there are other constant you can just check the internet I am using the default one here now we can insert the data let's fix the variable name let's follow the same naming convention we have used for other variables so that you don't get confused now we can insert the data but to insert the data we will have to connect to the database first now forever will do something with the database we will have to connect to the database so we may need the connection several times so we can use that part of code into the separate files so let's create a new file and name it database.psp so in this file we will add the code for connecting to the database so we'll have to start with the PSP deck and then there is a function called mysqli connect to connect to the database now in this function we have four arguments the first argument is the database hostname let's add the variable first we will store the variables few seconds later the database host name is the first argument then database username and then database password and then database name itself now in this case uh as you're using localhost the host name will be localhost actually most of the time it is localhost so if you don't change anything in the configuration It Is localhost by default and also uh the database username is wrote by default rwt however if you change anything in the configuration then you will have to use that username password you used in the configuration and the password is by default empty so you will have will not have to use anything here just keep it empty then the database theme the database name is the one that we already created using PSP might mean so let's copy from there so let's go to the Piston admin again and the one that says login register is the one we created just copy and put it as the fourth arguments so now the MySQL connect function can return true or false if anything um wrong happens it will return false so let's keep it into a variable and you will check if it returns false so if it returns false then we will stop the execution of the code here so we can do that using the die method let's do it and we'll give a message to the users that something went wrong so if we provide any wrong information then it will trigger an error so it will return false now we will have to include the file into our registration.psp you can do that using required once function so in this case the name is database.psp the file name is database.psp I made a small mistake here I forgot to provide the dollar sign in the connection variable so let's fix it and now let's let's test if there is anything wrong with the database connection so provide all the information in the form and then click register after that if it triggers any errors or warning that means database connection is not okay so let's see it is not showing any error or warning that means database connection is successful now for the testing purpose let's just change something here let's change the database name to something else we can just remove the r from the end and now let's check again so it's showing us a warning saying that unknown database login registry and something went wrong so code execution stopped here now let's quickly fix it again and let's check again here the error is gone that means everything is working perfectly we can now go ahead and install the data into the database so let's do it we need a SQL command for this let's store the SQL command into a variable named SQL the SQL command for inserting the data is installed into and then the name of the table we'll have to keep it inside double quotation because it is a string so insert into and the name of the table you can copy it from the pistamide bin so it should be users so let's copy it so insert into then name of the table and then the name of the columns into the in the brackets so let's again check the piece we might mean for the column names we can check using the structure so the first one is ID we don't need ID because that will be automatically incremented so we don't need to provide any values for that is just copy that from the full name and then the last two are email and password now we'll have to provide the values so values um in this case we have uh already have the values stored on the variable as you know so the first one is uh full name and then email password will already have in the variable but uh this is not a good practice to directly provide the values because it is vulnerable to the SQL injection so we will follow a better approach so here instead of providing the value directly we will add a placeholder so we can do that using the question mark so letter we will find the values here before executing this SQL command we will have to prepare a statement and before preparing the statement we will have to initiate it through a function called mysqli is TMT image so uh let's quickly check what this function does in the internet so that you can understand better let's see what it says it says this function initializes a statement and returns an object suitable for mysqli statement prepare so it returns an object and we can use that object in the mysqli statement prepare function so let's store the object in a variable named sgmt now on this function we'll have to provide the connection variable we used in the database.psp to store the connection so we'll have to use that transition variable as the argument of this function now we can use this statement object inside the mysqli statement prepare function my Stella is TMT prepare so we'll have to provide two arguments on this function the first argument is the statement object in this case stmt and the second argument is the SQL command SQL now this function can return either true or false so if anything wrong happens it will return false so for for that reason let's store this into variable prepare statement so that we can check what it returns using the ifs statement so if it is true it returns true only if it returns true then we will proceed so I mean we will start adding the values in the in the SQL command so we can do that using the mysqli and then statement uh then bind param so we'll bind the values into the SQL command so here we will have to provide some arguments the first argument should be the statement object the first argument should be a statement object and and the second argument should be the type of the values uh so we are using three values here um so all the three values are a string if you see full name email password all are strings so we'll have to use 3s which is shortcut for three strings so SS and then we'll have to provide the actual values so the first value is full name we already stored the values in the variable you know the first one is full name and the second one is um email and the third one is password hash so we are not providing password because we have encrypted it using password hash so so all the three values are provided now we can go ahead and execute the command so we can do that using a function called MySQL stmt execute here we'll have to provide the statement object as the argument so if everything is okay now uh the execution is um done properly you can show the users that you are registered successfully now we can show it using a bootstrap class so that it looks good uh so the Buddhist class in this case is alert and alert success so it will show a alert box for the success message here we have to use single quotation actually so the message you can provide your registered successfully you are registered successfully else if anything wrong happens in the prepared statement then so let's let's use else so if anything wrong happens then we will stop the code execution here using the die method so the message you can provide is something went wrong okay now let's check in the browser if everything is working fine so let's provide the values Brad Pitt and then email created example.com and then the password one two nine one two three four five six seven eight nine repeat the password and then click register so we are having an error called to undefined function uh okay we have misspelled the function name the prepare so it should be PPR not prepared be pair that should work fine yeah you are registered successfully now let's check the database yes you have a new value here Brad Pitt so everything is working we registered successfully but there is a small issue let's use the same email again to register let's use bread and example.com again so we are using the same email address again let's click register now your eat string URL is just successfully so what it does is it duplicates the email address which should not be so we should not use duplicate users on the database so what you can do to fix this problem let's see uh to solve this problem we'll have to check the database to see if the provided email already exists um if provided email already exists then we will add a new error to the error 7. so we can do that using some code let's put the code right before the code of displaying errors to the users so here we will list a new SQL command for searching through the database to see if provided email already exists in this case the SQL command is Select and Then star star means all so select all and then from select all from and then we'll have to provide the name of the table here the name of the table is is this as you know so select all from is just where where email uh it is the email from the database and then equal operator and then the name and then the variable name email where we stood the provided email so again it's the email in the database you see as you see and then uh the what after the equilibrator is the one that you stored that the email so now we'll have to execute this command but before that we'll have to connect to the database so we can just cut the database connection good just and place it just before the SQL command now we can execute the command so we can do it using MySQL Query function mysqlite query so in this function we will have to provide the SQL variable as argument now we can store the result of this execution into a new variable called result so that result will be stored here now we can check the number of values on this result using a new function called MySQL numbers so let's check the number of rows or number of values in this result so let's give a variable name row count so row count equals to mysqli num rows that means number of rows in the result here the argument will be result so if row count that means the number of rows is greater than 0 that means the provided email already exist so we will have to add an error to the eurostary so we can do it using error push again so in the arrow push the first argument will be the Eros array the variable name errors and then the error so in this case the error will be email already exist I made a small mistake here in the MySQL Query function so this function has two arguments the first argument will be the connection variable we used in the database.psp so let's copy it and provide it here now everything should be okay let's now um test it in the browser so we will provide the same email address that we have in the database so let's copy it and paste it here in the email and let's provide the other information name and the password and then click register so it's showing email already exist so it is working perfectly so our and if you check the database there is no new value that means the value is not added so uh our registration form is completed now we can start the login from so let's start a new let's create a new file name login.psp and let's put the HTML5 boilerplate code using the shortcut and let's give it a title of login form now for this style you can copy the styles from the registration.psp let's just copy it and put it in the login.pst file now we can put the container dip and in the continuity we will put the form once again in the form the method will be post because we are sending a post request and the action will be login.pst because we will use the PSP code on the same file now let's add the form fills so the first field will be email and the second field will be password because user will need to provide email and password to login so let's add those accordingly the first one will be Thai female and place solder let's say add a placeholder uh like enter email and we'll have to provide a name again name attribute so the for the first one let's name it email and we will have to also give a class name for the bootstrap so as you know it was form control so let's put form control now let's copy it for the second field so the second field will be password and the type will be password too so let's give the flexholder enter password and in this case the name will be password and the class is formed control as well so lastly we need the button login button so let's um keep it in into a parent dip form button then let's put the button so in this case the type will be submit and let's provide a value of submit or actually login and then we'll have to provide a class before classroom let's give it a name again uh login is the name and then the class name need to be provided for the button so in this case the bootstrap class is button button primary now let's see how it looks in the browser so we'll have to just change the file name to login.psp in the browser yes it's looking great now we'll have to add the PSP code to actually make it working once again we will have to grab that data using the post error variable like we used in the registration.psp as you remember so let's use it in the login.p state too so we'll have to put the PSP code inside the PSP deck uh just keep in mind that so first we will check whether or not the login button is submitted we can check that using the set method uh like we used in the registration.psp in the registration form so here we'll have to use the post error variable and here the array key will be the name attribute of the login button in this case it is login so if login button is submitted then it will collect the data so we'll have to collect here email and password so let's first let's store those value into two variables the first one is the mill and again we will use the posterior variable to access the data here the array key will be the name of the email field the name of the email field is email and then we'll uh collect the law collect the password so uh here will be it will be password the hierarchy will be the name of the password field in this case it is password now we'll have to check whether or not this email and password field exist in the database if only this email password exist then will allow user to login so to do that we'll have to connect to the database first we can do that using the required ones and then the name of the connection file it is database.psp as you know now let's store the SQL command into a variable called SQL in this case uh the SQL command will be select again as you're searching in the database so select all from select all data from users table where where the email email column should be the first one actually so email uh that from the database matches the email provided by the users in this case the email variable will be here now we can execute this command using the MySQL Query function uh let's put the result of the MySQL Query function into a variable called result mysqlite query and then the SQL command need to be passed here now this uh my spell query function return an object so in the object if you want to access the column of the database it is a little bit difficult for that reason we will convert this result into an array so we can do that using mysqlite face additive function and let's store the result of this array into a new variable called user oh no I made a mistake again so I forgot to provide the connection variable in the MySQL Query function so let's just copy it here now it is okay so let's provide the argument in the MySQL fast error function the first argument will be the result variable and the second argument will be a constant so the constant in this case is MySQL line and then Source MySQL is to see the parent the short for a city bearing so this function will return an acidity balance so that you can easily access the column of the database but this function can return false too if the email does not exist in in the database it will return false so let's check it using the if statement so if only if it returns data then that means the email exists in the database but if if it returns false then we can say that the email does not exist in the database so let's give an error message to the user if the email does not exist again we can use the bootstrip plus alert and alert denser in this case so that it it shows in a nice box nice box so in this case the message we can provide this email does not exist so let's type that email does not exist or does not match so after ensuring that the email exist will have to check whether or not the password matches with that specific email address uh if you remember we have stored the password as and kept it so we did not put the directly password we have encrypted it now to verify it to compare it there is you'll have to use the new function called password verify so we'll put this password verify function into the if statement that means if password verify returns true if it is verified if the password matches with that specific email address then we can allow the users to login so here the first argument will be the password provided by the user and then the second argument would be the password is stored in the um in the in the database so in that case we can use we can access it through the user variable so as you know it is an SVT barrier so in this case the key will be the name of the column the password so if password verify uh returns true that means if if the password message then we can allow the users to log in so we will now suppose we have a user dashboard base so we can redirect the users to that dashboard page if they successfully login so we can redirect using the header function so in this function the argument will be location and then colon and then name of the file index.psp and immediately after that we will have to use die it is a good practice to style now as you see we don't have any index.php file so let's create it quickly and let's add the HTML5 boilerplate code again and let's uh copy The Styling from the other first from the login.psp file let's put in the head text now let's change the title to user dashboard and inside the body tag we can add a container again set the content let's add a welcome message saying welcome to dashboard I made a mistake again sorry so in the hidden function after location there should not be any space so keep in mind that if you put any space after the location it will show you a error so keep in mind that now if a password match a password matches then we will redirect users to the dashboard page however if password does not match then we'll show the user a new error message saying that password does not mess so it needs to be added in the else statement we can copy the error from the other else statement here let's change it to password instead of email so password does not match now let's check if everything is working fine in the browser just give it a try so here the email let's provide the correct information so the email is Brad at example.com and the password is one two three four five six seven eight nine login so yes it's working perfectly welcome to dashboard string now let's provide um a different password or a different email address which is not in the database suppose admin at example.com now it should show an error saying that email does not match yes it's working now let's provide the correct information correct email address but a different password incorrect password then it should show that uh password does not match so it's one two three and then login so password doesn't mess so everything is working now we have both registration paste and login paste ready but the problem is everybody can access the dashboard page even they are not logged in even if you open it in in cognitive mode it is accessible so we cannot do this we cannot allow this we cannot allow all the users to access our dashboard page to solve this problem we can use session now what is session session is a way to store information to be used across multiple pages that means it is a way of information of storing information which we can access through multiple Pages now let's check it in the code so whenever you do something with session you will have to start it using the session start function when you use the session start function a global error variable name dollar sign underscore session is created so let's check what it has currently using the print R method so let's provide the session Global area variable as the argument and let's check on the browser so it is an amp chair it does not have any value on it now let's add a value on the session Global error variable error so session and then let's uh suppose we have a array key of name and the value and the value is John now if we check the dashboard index.php space we have a new value here now we can access this value through every page let's for example uh let's check on the login.psp let's add the code without the storing without destroying the anything on it so let's remove that line of code now if we check the login page we should have the same value so you see we can access it through multiple pages so we can now utilize this session to allow only the logged in users to access the dashboard page so I never somebody is logged in we will start a new session and then we'll add a new value to the session Global area variable so in this case I am using user as the arrow key and the value will be yes that means user is logged in so if session user have some value then we can tell that user is logged in now we can use it in the dashboard page so we'll have to start the session again and you will have to check if the session with Eric Key user is not set if it is not set then that means the user is not logged in then we will redirect him to the login page so that he can log in so let's redirect him using the header function so here and then location the argument will be location login.psp so if the user is not logged in will redirect them to the login.psp now in the login.psp if somebody is already logged in that don't need to log in again so in that case we'll redirect him to the dashboard page so if somebody is already logged in we can check that using the uh set method again let's copy it from the index.psp and then just remove the not operator so if you set session user if the user is logged in then we will redirect him to the dashboard place so we can do this same for the registration piece so whenever somebody is already logged in they don't need to register again so we will just redirect them to the dashboard page now let's check on the browser if everything is working correctly so let's log in using a correct uh providing a correct login information so Brad atexample.com and the password is one two nine and click login yeah we can access the Dashboard please again now now if we visit the login.psp it should redirect us to the index.pspc it's working correctly so let's check the registration.psp yeah it is redirecting uh us to the dashboard page now we need something we need something to log out so let's add a logout button in the uh in the dashboard page so in this case I'm using logout.psp as the link and we can use a bootstrap plus to locate better in this case it is button button button warning so let's level it log out now we'll have to create the file logout.psp let's just copy and paste um okay it is not working the copy pasting is not working I think we'll have to add it manually so let's create the file manually logout.psp now in the logout that a lot PSP will have to start the session again and then we'll have to just simply destroy the session so that there is no value anymore and uh user will not be able to access the dashboard piece again so and we'll redirect them to the login.psp so that they can log in again so here location and then login.psp now let's check it in the browser so there's a new button logout let's log out so we are logged out now now we cannot access the Deadwood page anymore index.p you cannot access it you see now let's login again with the correct information that at example.com and then the password one to nine yes now we can access the dashboard page so everything is working correctly now we can add a register button on the login from saying that you are if you are not already registered register here so add that line of code so it will be just a link to the registration.php file now let's put the text into a paragraph text so in this case the text will be not registered yet so if you are not registered then you will have to register here so not register yet then let's put the register here into anchor Tech register here and the link will be the registration paste so that means registration.psp now let's do the same for the registration.pst file just copy the code and let's use it here so in this case the text will be already registered so if you are already registered then you don't need to restart again just login it's already registered and then on the anchor Tech it will be like login uh already registered log in here so if you are already listed then login here so the link will be login.psp the login page now let's check it in the browser so register here and then login here so everything is working perfectly thank you very much for watching my video please don't forget to subscribe and like and also share