Ciao a tutti. Chiedo l'aiuto.
Ho un problema che non riesco a risolvere da almeno 2gg.
Quando carico la pagina php protetta da
<? include("check.php"); ?>
mi appare un errore:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /..../home.php:1) in /...../check.php on line 2
Il sistema di iscrizione e conferma funziona perfettamente, invece effettuando il login appare l'errore.
Il codice file check.php:
<?
session_start(); //dice che è questo errore
// controlliamo se è stata inizializzata la sessione
if(isset($_SESSION['userid']))
{
//controllo id con esito positivo
echo "<a href=logout.php>Logout</a>";
}else{
//controllo sessione con esito negativo
@header("Location: form_login.php");
}
?>
Il codice di login ho utilizzato simile a quello della conferma di registrazione:
<?
session_start();
// controllo sul parametro d'invio
if( isset($_POST['submit']) && (trim($_POST['submit']) == "login") )
{
// controllo sul formato dell'email
if((!isset($_POST['email'])) || (!eregi("^([a-z0-9\._-]+)(@[a-z0-9.-]+)(\.{1}[a-z]{2,4})$", $_POST['email'])))
{
echo "Attenzione: \nil formato dell'email risulta scorretto.";
}
// controllo sul formato della password
elseif((!isset($_POST['password'])) || ($_POST['password'] == "") || (!preg_match("/^[a-z0-9]+$/i", $_POST['password'])))
{
echo "Attenzione: \nla password inserita risulta scorretta.";
}else{
// se i parametri sono in formato corretto interroghiamo il database
$email = $_POST['email'];
$password = $_POST['password'];
// includiamo il file di configurazione
@include "config.php";
// controlliamo se i parametri sono presenti in tabella
$ctrl_login = @mysql_query("SELECT userid FROM login WHERE email='$email' AND password='$password'") or die (mysql_error());
if(@mysql_num_rows($ctrl_login)==0)
{
// esito login negativo
echo "Login errato.";
}else{
// creiamo un id di sessione corrispondente all'utente
$_SESSION['userid'] = $obj->userid;
// redirect alla pagina degli iscritti
@header("Location: home.php");
}
}
}else{
// form per la conferma
?>
<form align="center" name="login" method="post" action="<? $_SERVER['PHP_SELF']; ?>">
<input placeholder="email" size="20" type="Text" name="email">
<input placeholder="password" type="password" id="password" size="20" name="password">
<b>Ricordami </b><input type="checkbox" name="ricordami[]" value="ON" class="check">
<input type="reset" value="resetta" class="button">
<input type="submit" value="login" name="submit" id="submit" class="button">
</form>
Se non sei registrato <a href="form_iscrizione.php">clicca qui</a>
<?
}
?>
Qualcuno ha una soluzione?
Ringrazio per l'attenzione riservatami.
Ho un problema che non riesco a risolvere da almeno 2gg.
Quando carico la pagina php protetta da
<? include("check.php"); ?>
mi appare un errore:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /..../home.php:1) in /...../check.php on line 2
Il sistema di iscrizione e conferma funziona perfettamente, invece effettuando il login appare l'errore.
Il codice file check.php:
<?
session_start(); //dice che è questo errore
// controlliamo se è stata inizializzata la sessione
if(isset($_SESSION['userid']))
{
//controllo id con esito positivo
echo "<a href=logout.php>Logout</a>";
}else{
//controllo sessione con esito negativo
@header("Location: form_login.php");
}
?>
Il codice di login ho utilizzato simile a quello della conferma di registrazione:
<?
session_start();
// controllo sul parametro d'invio
if( isset($_POST['submit']) && (trim($_POST['submit']) == "login") )
{
// controllo sul formato dell'email
if((!isset($_POST['email'])) || (!eregi("^([a-z0-9\._-]+)(@[a-z0-9.-]+)(\.{1}[a-z]{2,4})$", $_POST['email'])))
{
echo "Attenzione: \nil formato dell'email risulta scorretto.";
}
// controllo sul formato della password
elseif((!isset($_POST['password'])) || ($_POST['password'] == "") || (!preg_match("/^[a-z0-9]+$/i", $_POST['password'])))
{
echo "Attenzione: \nla password inserita risulta scorretta.";
}else{
// se i parametri sono in formato corretto interroghiamo il database
$email = $_POST['email'];
$password = $_POST['password'];
// includiamo il file di configurazione
@include "config.php";
// controlliamo se i parametri sono presenti in tabella
$ctrl_login = @mysql_query("SELECT userid FROM login WHERE email='$email' AND password='$password'") or die (mysql_error());
if(@mysql_num_rows($ctrl_login)==0)
{
// esito login negativo
echo "Login errato.";
}else{
// creiamo un id di sessione corrispondente all'utente
$_SESSION['userid'] = $obj->userid;
// redirect alla pagina degli iscritti
@header("Location: home.php");
}
}
}else{
// form per la conferma
?>
<form align="center" name="login" method="post" action="<? $_SERVER['PHP_SELF']; ?>">
<input placeholder="email" size="20" type="Text" name="email">
<input placeholder="password" type="password" id="password" size="20" name="password">
<b>Ricordami </b><input type="checkbox" name="ricordami[]" value="ON" class="check">
<input type="reset" value="resetta" class="button">
<input type="submit" value="login" name="submit" id="submit" class="button">
</form>
Se non sei registrato <a href="form_iscrizione.php">clicca qui</a>
<?
}
?>
Qualcuno ha una soluzione?
Ringrazio per l'attenzione riservatami.