Mi problema es que cuando inicio sesión OK recargo la pagina OK se mantiene. En header.php tengo un link a index.php para retornar al inicio de la pagina si hago click en el mismo la sesión ya no esta abierta.
En este caso session_start() solo se encuentra en index.php pero si lo pongo en header.php tambien sigue haciendo lo mismo pero dando los siguiente Notice: A session had already been started - ignoring session_start() in C:\xampp\htdocs\rocker\templates\header.php on line 5
index.php Código PHP:
<!-- Templates config -->
<?php require 'config/templates.config.php'; ?>
<!-- DB config & functions-->
<?php require 'config/db.config.php'; ?>
<?php require 'lib/db.funciones.php' ?>
<?php require 'lib/article.funciones.php' ?>
<?php require 'lib/user.funciones.php' ?>
<!--Connect-->
<?php
session_start();
$connect = connect(DB_HOST,DB_USER,DB_PASS,DB_NAME);
if (!$connect) {
echo "<h1 style='background:red;'>ERROR EN LA CONEXION CON LA BASE DE DATOS<h1>";
}
//Template -> Load principal elements, if the user call a page,
// when this is ready load without *Home elements*
require TEMPLATE_PATH.'/head.php';
require TEMPLATE_PATH.'/header.php';
if(isset($_GET["page"])) {
require TEMPLATE_PATH."pages/".$_GET["page"].".html";
} else {
//*Home elements*
require TEMPLATE_PATH.'/home.php';
require TEMPLATE_PATH.'/articles.php';
require TEMPLATE_PATH.'/aside.php';
}
require TEMPLATE_PATH.'/footer.php';
?>
header.php Código PHP:
<?php
if (isset($_POST["user"]) && isset($_POST["password"]) ) {
$user = checkLogin($_POST["user"], $_POST["password"]);
if($user) {
$_SESSION["user"] = $user;
}
} else {
$user = FALSE;
}
?>
<header class="upper">
<nav id="header-container">
<ul>
<li><a href="index.php">Inicio</a></li>
<li><a title="Quien soy" class="upper" href="#">Quien soy</a></li>
<li><a title="Diseño Web" id="dropper" href="#">Diseño Web</a>
<ul class="drop-menu upper">
<li><a href="#">Consultoria</a></li>
<hr>
<li><a title="Proyectos" href="">Proyectos</a></li>
</ul>
</li>
<li ><a title="Blog" class="upper" href="#">Blog</a></li>
<li ><a tittle="Contacto" class="upper" href="#">Contacto</a></li>
</ul>
<?php
echo "<div class='login'>";
if (isLogin()) {
echo "<h3>Bienvenido"." ".$user["user"]."!</h3>";
echo "<a href='".closeSession()."'><button class='danger-red'>Cerrar Sesion</button></a>";
}
if (!isLogin()) {
echo "<button class='aqua-green login-btn'>Iniciar Sesión</button>
<a href='index.php?page=sign-up'><button class='orange'>Registrarme</button></a>";
}
if (wrongData($user)) {
echo "<h3 style='position:absolute; color:red'><em>Datos invalidos</em></h3>";
}
echo "</div>";
?>
<div class="rockerModal">
<?php
require TEMPLATE_PATH.'form.html';
?>
</div>
</nav>
</header>
user.funciones.php Código PHP:
<?php
function checkLogin($user,$password) {
$connect = connect();
$password = mysqli_real_escape_string($connect,$password);
$user = mysqli_real_escape_string($connect,$user);
$fields = "id,user,password,name,is_author,is_root";
$sql = "SELECT $fields FROM users WHERE user='$user' AND password='$password'";
$result = queryArray($sql);
if ($result) {
return $result[0];
}
return FALSE;
}
function closeSession(){
session_destroy();
}
function isLogin(){
if (isset($_SESSION["user"])) {
return TRUE;
}
return FALSE;
}
function wrongData($user) {
if (isset($_POST["user"]) && $user["user"] != $_POST["user"] && isset($user)) {
return TRUE;
}
return FALSE;
}