Tengo un archivo "login.php":
Código:
<?php
if (isset($_GET['error'])) {
echo '<p class="error">Error Logging In</p>';
}
?>
<form action="includes/process_login.php" method="post" name="login_form">
Nombre de usuario: <input type="text" name="username" /><br><br>
Contraseña: <input type="password"
name="password"
id="password"/><br><br>
<input type="button"
value="Iniciar sesión"
onclick="formhash(this.form, this.form.password);" id="login-button"/> <br><br>
</form>
<p> Si ha terminado, por favor<a href="includes/logout.php"> cierra la sesión.</a></p><br>
<p> <?php echo $logged ?> está conectado</p>
</section>
</section>
y después un "process_login donde hay la funcion sec_session_start():
Código:
<?php
include_once 'db_connect.php';
include_once 'functions.php';
sec_session_start(); // Forma personalizada segura de iniciar la sessión PHP.
if (isset($_POST['username'], $_POST['p'])) {
$username = $_POST['username'];
$password = $_POST['p']; // La contraseña con hash
if (login($username, $password, $mysqli) == true) {
// Inicio de sessión exitosa
header('Location: ../protected_page.php');
} else {
// Inicio de sesión errónea
header('Location: ../login.php?error=1');
}
} else {
// Las variables POST correctas no se han enviado a esta página.
echo 'Solicitud no válida';
}
Y la funcion sec_session_start:
Código:
function sec_session_start() {
$session_name = 'sec_session_id'; // Configura un nombre de sesión personalizado.
$httponly = true;
if (ini_set('session.use_only_cookies', 1) === FALSE) {
header("Location: ../error.php?err=Could not initiate a safe session (ini_set)");
exit();
}
// Obtiene los paraáetros de los cookies actuales.
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"],
$cookieParams["path"],
$cookieParams["domain"],
$httponly);
// Configura el nombre de sesión al configurado arriba.
session_name($session_name);
session_start(); // Inicia la sesión PHP.
session_regenerate_id(); // Regenera la sesión, borra la previa.
}