start sesion pasar paginas entre ejemplo cerrar php session login session-state

sesion - ¿Cómo verificar si un usuario ha iniciado sesión en php?



session start php (9)

Soy bastante nuevo en php y estoy tratando de descubrir cómo usar las sesiones para verificar y ver si un usuario está conectado a un sitio web para que tenga autorización para acceder a páginas específicas.

¿Es esto algo complicado o es porque soy un novato que no puedo resolverlo?

¡Gracias por la ayuda!


Cualquier página que desee realizar verificaciones de sesión necesita comenzar con:

session_start();

A partir de ahí, verifica la matriz de sesión para ver una variable que indica que está conectado:

if (!$_SESSION["loggedIn"]) redirect_to_login();

Iniciar sesión no es más que establecer ese valor:

$_SESSION["loggedIn"] = true;


En Login.html:

<html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <title>Login Form</title> </head> <body> <section class="container"> <div class="login"> <h1>Login</h1> <form method="post" action="login.php"> <p><input type="text" name="username" value="" placeholder="Username"></p> <p><input type="password" name="password" value="" placeholder="Password"></p> <p class="submit"><input type="submit" name="commit" value="Login"></p> </form> </div> </body> </html>

En Login.php:

<?php $host="localhost"; // Host name $username=""; // Mysql username $password=""; // Mysql password $db_name=""; // Database name $tbl_name="members"; // Table name // Connect to server and select databse. mysql_connect("$host", "$username", "$password")or die("cannot connect"); mysql_select_db("$db_name")or die("cannot select DB"); // username and password sent from form $username=$_POST[''username'']; $password=$_POST[''password'']; // To protect MySQL injection (more detail about MySQL injection) $username = stripslashes($username); $password = stripslashes($password); $username = mysql_real_escape_string($username); $password = mysql_real_escape_string($password); $sql="SELECT * FROM $tbl_name WHERE username=''$username'' and password=''$password''"; $result=mysql_query($sql); // Mysql_num_row is counting table row $count=mysql_num_rows($result); // If result matched $username and $password, table row must be 1 row if($count==1){ session_start(); $_SESSION[''loggedin''] = true; $_SESSION[''username''] = $username; }

En Member.php:

session_start(); if (isset($_SESSION[''loggedin'']) && $_SESSION[''loggedin''] == true) { echo "Welcome to the member''s area, " . $_SESSION[''username''] . "!"; } else { echo "Please log in first to see this page."; }

En MYSQL:

CREATE TABLE `members` ( `id` int(4) NOT NULL auto_increment, `username` varchar(65) NOT NULL default '''', `password` varchar(65) NOT NULL default '''', PRIMARY KEY (`id`) ) TYPE=MyISAM AUTO_INCREMENT=2 ;

En Register.html:

<html> <head> <title>Sign-Up</title> </head> <body id="body-color"> <div id="Sign-Up"> <fieldset style="width:30%"><legend>Registration Form</legend> <table border="0"> <form method="POST" action="register.php"> <tr> <td>UserName</td><td> <input type="text" name="username"></td> </tr> <tr> <td>Password</td><td> <input type="password" name="password"></td> </tr> <tr> <td><input id="button" type="submit" name="submit" value="Sign-Up"></td> </tr> </form> </table> </fieldset> </div> </body> </html>

En Register.php:

<?php define(''DB_HOST'', ''''); define(''DB_NAME'', ''''); define(''DB_USER'',''''); define(''DB_PASSWORD'',''''); $con=mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or die("Failed to connect to MySQL: " . mysql_error()); $db=mysql_select_db(DB_NAME,$con) or die("Failed to connect to MySQL: " . mysql_error()); $userName = $_POST[''username'']; $password = $_POST[''password'']; $query = "INSERT INTO members (username,password) VALUES (''$userName'',''$password'')"; $data = mysql_query ($query)or die(mysql_error()); if($data) { echo "YOUR REGISTRATION IS COMPLETED..."; } else { echo "Unknown Error!" }


En primer lugar, mis disculpas, valoro que las respuestas no deben ser comentarios sobre otras respuestas ... pero a ) No tengo la reputación de agregar comentarios, yb ) esto es muy importante ...

Casi todas las respuestas en esta página se basan en verificar la existencia de una variable de sesión para validar el inicio de sesión de un usuario. Eso está absolutamente bien, pero es importante considerar que el estado de la sesión de PHP no es exclusivo de su aplicación si hay múltiples hosts / sitios virtuales en el mismo bare metal.

Si tiene dos aplicaciones PHP en un servidor web, ambas verifican el estado de inicio de sesión de un usuario con un indicador booleano en una variable de sesión llamada ''isLoggedIn'', entonces un usuario puede iniciar sesión en una de las aplicaciones y obtener automáticamente acceso a la segunda sin credenciales.

Sospecho que incluso el dinosaurio de hosting compartido comercial no permitiría que los hosts virtuales compartan el mismo entorno PHP de tal manera que esto podría suceder en varios sitios de clientes (más), pero es algo a tener en cuenta en sus propios entornos.

La solución más simple es usar una variable de sesión que identifique la aplicación en lugar de una bandera booleana. por ejemplo $ SESSION ["isLoggedInToExample.com"] .

Fuente: Soy un probador de penetración, con mucha experiencia en cómo no deberías hacer cosas.


Los inicios de sesión no son demasiado complicados, pero hay algunas piezas específicas que casi todos los procesos de inicio de sesión necesitan.

Primero, asegúrese de habilitar la variable de sesión en todas las páginas que requieren conocimiento del estado de inicio de sesión al poner esto al comienzo de esas páginas:

session_start();

Luego, cuando el usuario envía su nombre de usuario y contraseña a través del formulario de inicio de sesión, normalmente verificará su nombre de usuario y contraseña consultando una base de datos que contenga información de nombre de usuario y contraseña, como MySQL. Si la base de datos devuelve una coincidencia, puede establecer una variable de sesión para que contenga ese hecho. Es posible que también desee incluir otra información:

if (match_found_in_database()) { $_SESSION[''loggedin''] = true; $_SESSION[''username''] = $username; // $username coming from the form, such as $_POST[''username''] // something like this is optional, of course }

Luego, en la página que depende del estado de inicio de sesión, ingrese lo siguiente (no olvide el session_start() ):

if (isset($_SESSION[''loggedin'']) && $_SESSION[''loggedin''] == true) { echo "Welcome to the member''s area, " . $_SESSION[''username''] . "!"; } else { echo "Please log in first to see this page."; }

Esos son los componentes básicos. Si necesita ayuda con el aspecto SQL, hay tutoriales en abundancia en la red.


Necesito en todas las páginas antes de verificar las sesiones actuales

session_start();

Compruebe si $ _SESSION ["loggedIn"] ( is not ) true - Si no, redirigirlos a la página de inicio de sesión.

if($_SESSION["loggedIn"] != true){ //echo ''not logged in''; header("Location: login.php"); exit;

}


Vea este script para registrarse. Simple y muy fácil de entender.

<?php define(''DB_HOST'', ''Your Host[Could be localhost or also a website]''); define(''DB_NAME'', ''databasename''); define(''DB_USERNAME'', ''Username[In many cases root but some sites offer MySql Page where the username might be different]''); define(''DB_PASSWORD'', ''whatever you keep[if username is root then 99% password is blank]''); $link = mysql_connect(DB_HOST, DB_USERNAME, DB_PASSWORD); if (!$link) { die(''Could not connect line 9''); } $DB_SELECT = mysql_select_db(DB_NAME, $link); if (!$DB_SELECT) { die(''Could not connect line 15''); } $valueone = $_POST[''name'']; $valuetwo = $_POST[''last_name'']; $valuethree = $_POST[''email'']; $valuefour = $_POST[''password'']; $valuefive = $_POST[''age'']; $sqlone = "INSERT INTO user (name, last_name, email, password, age) VALUES (''$valueone'',''$valuetwo'',''$valuethree'',''$valuefour'',''$valuefive'')"; if (!mysql_query($sqlone)) { die(''Could not connect name line 33''); } mysql_close(); ?>

Asegúrese de hacer todas las cosas de la base de datos usando phpMyAdmin. Es una herramienta muy fácil de usar. Puede encontrarlo aquí: http://www.phpmyadmin.net/home_page/index.php


puedes hacer una sesión y colocarla:

//start session session_start(); //check do the person logged in if($_SESSION[''username'']==NULL){ //haven''t log in echo "You haven''t log in"; }else{ //Logged in echo "Successfully log in!"; }

nota: debe crear un formulario que contenga $_SESSION[''username''] = $login_input_username;


<?php session_start(); if(!isset($_SESSION["login"]) && $SESSION["login"] =="OK")){ header("Location: index.php"); exit; ?>


else if (isset($_GET[''actie'']) && $_GET[''actie'']== "aanmelden"){ $username= $_POST[''username'']; $password= md5($_POST[''password'']); $query = "SELECT password FROM tbl WHERE username = ''$username''"; $result= mysql_query($query); $row= mysql_fetch_array($result); if($password == $row[''password'']){ session_start(); $_SESSION[''logged in''] = true; echo "Logged in"; } }