148 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			148 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | ||
|  | title: PHP Sessions | ||
|  | --- | ||
|  | 
 | ||
|  | # PHP Sessions
 | ||
|  | 
 | ||
|  | A session is a way to store information (in variables) to be used across multiple pages.   | ||
|  | Unlike a cookie, the information is not stored on the user's computer. | ||
|  | 
 | ||
|  | ## What is a PHP Session?
 | ||
|  | 
 | ||
|  | When you work with an application, you open it, do some changes, and then you close it. This is much like a Session.   | ||
|  | The computer knows who you are. It knows when you start the application and when you end.   | ||
|  | But on the internet there is one problem: the web server does not know who you are or what you do, because the HTTP address _doesn't maintain state_.   | ||
|  | 
 | ||
|  | Session variables solve this problem by storing user information to be used across multiple pages (e.g. username, favorite color, etc).   | ||
|  | By default, session variables last until the user closes the browser.   | ||
|  | 
 | ||
|  | **Session variables hold information about one single user, and are available to all pages in one application.**   | ||
|  | 
 | ||
|  | **Note:** If you need a permanent storage, you may want to store the data in a database. | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Start a PHP Session
 | ||
|  | 
 | ||
|  | A session is started with the _session_start()_ function.   | ||
|  | Session variables are set with the PHP global variable: $_SESSION. | ||
|  | 
 | ||
|  | **Example:** | ||
|  | ``` | ||
|  | <?php | ||
|  | // Start the session | ||
|  | session_start(); | ||
|  | ?> | ||
|  | <!DOCTYPE html> | ||
|  | <html> | ||
|  | <body> | ||
|  | 
 | ||
|  | <?php | ||
|  | // Set session variables | ||
|  | $_SESSION["favcolor"] = "blue"; | ||
|  | $_SESSION["favanimal"] = "dog"; | ||
|  | echo "Session variables are set."; | ||
|  | ?> | ||
|  | 
 | ||
|  | </body> | ||
|  | </html> | ||
|  | ``` | ||
|  | 
 | ||
|  | **Note:** The session_start() function must be the **very first thing** in your document. **Before** any HTML tags. | ||
|  | 
 | ||
|  | Output:   | ||
|  | Session variables are set. | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Get PHP Session Variable Values
 | ||
|  | 
 | ||
|  | Note that session variables are not passed individually to each new page, instead they are retrieved from the session we open at the beginning of each page (session_start()). | ||
|  | 
 | ||
|  | Also note that all session variable values are stored in the global $_SESSION variable: | ||
|  | 
 | ||
|  | **Example:** | ||
|  | ``` | ||
|  | <?php | ||
|  | session_start(); | ||
|  | ?> | ||
|  | <!DOCTYPE html> | ||
|  | <html> | ||
|  | <body> | ||
|  | 
 | ||
|  | <?php | ||
|  | // Echo session variables that were set on previous page | ||
|  | echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>"; | ||
|  | echo "Favorite animal is " . $_SESSION["favanimal"] . "."; | ||
|  | ?> | ||
|  | 
 | ||
|  | </body> | ||
|  | </html> | ||
|  | ``` | ||
|  | 
 | ||
|  | Output:   | ||
|  | Favorite color is blue.   | ||
|  | Favorite animal is dog. | ||
|  | 
 | ||
|  | Another way to show all the session variable values for a user session is to run the following code: | ||
|  | 
 | ||
|  | ``` | ||
|  | <?php | ||
|  | print_r($_SESSION); | ||
|  | ?> | ||
|  | ``` | ||
|  | 
 | ||
|  | ### How does it work?
 | ||
|  | 
 | ||
|  | Most sessions set a user-key on the user's computer that looks something like this: 765487cf34ert8dede5a562e4f3a7e12.   | ||
|  | Then, when a session is opened on another page, it scans the computer for a user-key.   | ||
|  | If there is a match, it accesses that session, if not, it starts a new session. | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Modify a Session Variable
 | ||
|  | 
 | ||
|  | To change a session variable, just overwrite it: | ||
|  | 
 | ||
|  | **Example:** | ||
|  | ``` | ||
|  | <?php | ||
|  | session_start(); | ||
|  | ?> | ||
|  | <!DOCTYPE html> | ||
|  | <html> | ||
|  | <body> | ||
|  | 
 | ||
|  | <?php | ||
|  | // to change a session variable, just overwrite it  | ||
|  | $_SESSION["favcolor"] = "pink"; | ||
|  | print_r($_SESSION); | ||
|  | ?> | ||
|  | 
 | ||
|  | </body> | ||
|  | </html> | ||
|  | ``` | ||
|  | 
 | ||
|  | 
 | ||
|  | ## Destroy a PHP Session
 | ||
|  | 
 | ||
|  | To remove all global session variables and destroy the session, use _session_unset()_ and _session_destroy()_: | ||
|  | 
 | ||
|  | **Example:** | ||
|  | ``` | ||
|  | <?php | ||
|  | session_start(); | ||
|  | ?> | ||
|  | <!DOCTYPE html> | ||
|  | <html> | ||
|  | <body> | ||
|  | 
 | ||
|  | <?php | ||
|  | // remove all session variables | ||
|  | session_unset();  | ||
|  | 
 | ||
|  | // destroy the session  | ||
|  | session_destroy();  | ||
|  | ?> | ||
|  | 
 | ||
|  | </body> | ||
|  | </html> | ||
|  | ``` |