Tengo un index con un iframe (donde se encuentra el formulario login). Tanto en el index como en la pagina login (donde el usuario se identifica e inicia la sesión), escribo esto antes de cualquier etiqueta html:
Código PHP:
<?php
//cambiar el limitador del cache a 'private'
session_cache_limiter('private');
//iniciamos sesion
session_set_cookie_params(1800);
session_start();
?>
Código PHP:
<?php
//cambiar el limitador del cache a 'private'
//session_cache_limiter('private');
//iniciamos sesion
session_set_cookie_params(1800);
session_start();
//header, funcion redirect
function redirect($url_relativa) {
header("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/" . $url_relativa);
}
?>
<?php
define (DEBUG, 1); //modo de depuracion activado-desactivado
/*con esta funcion evitamos que puedan aparecer mensajes de error personalizados en modo de depuracion desactivado*/
function stderr ($text){
if (DEBUG==1) {
print "<br><font style='color: red'>";
print $text;
print "</font></br>";
}
return true;
}
//obtenemos variables del formulario
if(empty($_POST['usuario']) AND empty($_POST['userpassword'])) {
stderr ("Please, enter a correct username and password");
return false;
}
//declaramos variables de sesion si existen
elseif (isset($_POST['username']) AND isset($_POST['userpassword'])) {
$_SESSION['username'] = $_POST['username'];
$_SESSION['userpassword'] = $_POST['userpassword'];
}
else {
$url_relativa= 'identification.php';
redirect($url_relativa);
}
//id sesion
$_SESSION['session_id'] = session_id();
//establecemos las constantes globales
$DB_HOST = 'localhost'; //para pruebas,
//conectamos con la base de datos
if (! $conn = mysql_connect ($DB_HOST, $_SESSION['username'], $_SESSION['userpassword'])) {
stderr ("Error connecting to database. Please, enter a valid username and userpassword");
return false;
}
else {
$url_relativa= 'main.html';
redirect($url_relativa);
}
if (! mysql_close($conn)) {
stderr ("Error closing connection");
return false;
}
?>
la sentencia session_cache_limiter('private'); debe ir exclusivamente en el index y en la primera pagina del iframe o debe ir en todas las paginas .html o .php de la herramienta? y debe ir en ese lugar o despues de session_start?
A continuación, el usuario identificado pasa a main.html (dentro del iframe), donde aparece el siguiente codigo al inicio del archivo:
Código PHP:
<?php
//cambiar el limitador del cache a 'private'
//session_cache_limiter('private');
//iniciamos sesion
//session_set_cookie_params(1800);
session_start();
//si no hay variables session, sesion finalizada e iniciar una nueva sesion
if (! isset($_SESSION['username']) AND isset($_SESSION['userpassword'])) {
$url_relativa= 'identification.php';
header("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/" . $url_relativa);
exit;
}
else {
echo "Welcome, ".$_SESSION['username'];
echo "Your session ID is: ".$_SESSION['session_id'];
}
?>
1- la sentencia //session_set_cookie_params(1800); debe ir en ese lugar? o puedo omitirla ya que esta en las anteriores paginas (index e identificacion)?
2- no aparece por pantalla:
echo "Welcome, ".$_SESSION['username'];
echo "Your session ID is: ".$_SESSION['session_id'];
Esto lo añado más adelante en una celda del html y tampoco aparece por pantalla.
Y por ultimo mi gran duda es la siguiente, una vez que el usuario se ha identificado y accedido a main.html, puede navegar por otras paginas dentro del iframe, hasta que llega a un formulario en el que se insertan datos en una base de datos de mysql. El problema es que con las sesiones quiero guardar el usuario y password para que al insertar datos en mysql no tenga que volver a identificarse. El error es el siguiente:
Código:
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /usr/local/apache/htdocs/www/scripts/loadfile.php:4) in /usr/local/apache/htdocs/www/scripts/loadfile.php on line 7 Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /usr/local/apache/htdocs/www/scripts/loadfile.php:4) in /usr/local/apache/htdocs/www/scripts/loadfile.php on line 7 Warning: mysql_connect(): Access denied for user 'nobody'@'localhost' (using password: NO) in /usr/local/apache/htdocs/www/scripts/loadfile.php on line 28 Error connecting to database