PDA

View Full Version : php


mannaix
12-07-2006, 19:29
Ciao a tutti,
nel codice php che ho scritto mi compaiono questi Warning (che indicano la linea dove ho scritto "session_start();") dopo aver provato a fare l'accesso con username e password.
Avete consigli per risolvere questo tipo di errori? :confused:


Warning: session_start(): Cannot send session cookie - headers already sent by (output started at


Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at


Grazie. :)

whiles_
12-07-2006, 20:04
Ciao a tutti,
nel codice php che ho scritto mi compaiono questi Warning (che indicano la linea dove ho scritto "session_start();") dopo aver provato a fare l'accesso con username e password.
Avete consigli per risolvere questo tipo di errori? :confused:


Warning: session_start(): Cannot send session cookie - headers already sent by (output started at


Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at


Grazie. :)
il session_start(); si mette prima di ogni output, quindi prima di ogni doctype, prima di ogni echo ed ogni print. In che posizione sta il tuo session_start(); ? :D

andbin
12-07-2006, 20:09
Ciao a tutti,
nel codice php che ho scritto mi compaiono questi Warning (che indicano la linea dove ho scritto "session_start();") dopo aver provato a fare l'accesso con username e password.
Avete consigli per risolvere questo tipo di errori? :confused:


Warning: session_start(): Cannot send session cookie - headers already sent by (output started at


Warning: session_start(): Cannot send session cache limiter - headers already sent (output started atIl manuale del PHP ha una nota molto chiara nella pagina dedicata a session_start:
If you are using cookie-based sessions, you must call session_start() before anything is outputted to the browser.
Vuol dire che la session_start la devi chiamare prima di aver fatto qualunque output. E per output si intende quello generato da un echo/print o quello al di fuori di <?php .. ?>.

mannaix
13-07-2006, 13:10
Il mio codice è il seguente:

<?PHP
//richiede i vaolori
$user1 = $_REQUEST["username"];
$password1 = $_REQUEST["password"];

//Connessione al Database
mysql_connect("localhost", "root") or die ("impossibile connettersi");

//seleziona il DB
mysql_select_db("complesso") or die ("impossibile selezionare il db");

//controlla se l' username esiste
$query = "SELECT * from `utenti` WHERE user='$user1'";
$result = mysql_query($query);
if ($row = mysql_fetch_array($result)){

//controlla se la password è corretta
if ($row["password"] == $password1){
$datetime = date("d-m-Y G:i ");
$query = "UPDATE `utenti` SET lastlogin = '$datetime' where user='$user1'";
$result = mysql_query($query);

//crea una sessione
session_start();

//mette la password nella sessione
$pass = $password1;
$_SESSION["password"]=$pass;

//mette l' username nella sessione
$id = $user1;
$_SESSION["id"]=$id;
echo $_SESSION["id"];
header("Location: access.php");

}
else{
header("Location: login.html");
}
}
ecc

non mi sembra di aver messo output prima di aver aperto la sessione... :rolleyes:
comunque grazie lo stesso!

MEMon
13-07-2006, 14:14
i "die" sono praticamente output, per sicurezza comunque metti il sessio start prima di tutto, come prima riga!

andbin
13-07-2006, 14:26
i "die" sono praticamente outputSì, ma se vengono eseguiti, lo script termina lì.

mannaix
13-07-2006, 14:57
Ho provato a mettere session start come prima riga.....ma niente da fare....non ne vuole sapere di funzionare!

cmq mi da un altro errore del tipo:
Warning: Cannot modify header information - headers already sent by (output started at

nella linea dove c'è scritto :
header("Location: access.php");
:sob:

andbin
13-07-2006, 15:05
cmq mi da un altro errore del tipo:
Warning: Cannot modify header information - headers already sent by (output started at

nella linea dove c'è scritto :
header("Location: access.php");
:sob:Questo perché prima di quella header c'è un echo.

mannaix
13-07-2006, 15:18
Questo perché prima di quella header c'è un echo.

Ho provato a mettere l' header la riga prima dell'echo ed anche all'inizio con session start come prima riga e header come seconda...ma ancora niente... :(

shinya
13-07-2006, 15:18
Il mio codice è il seguente:

<?PHP
//richiede i vaolori
$user1 = $_REQUEST["username"];
$password1 = $_REQUEST["password"];

//Connessione al Database
mysql_connect("localhost", "root") or die ("impossibile connettersi");

//seleziona il DB
mysql_select_db("complesso") or die ("impossibile selezionare il db");

//controlla se l' username esiste
$query = "SELECT * from `utenti` WHERE user='$user1'";
$result = mysql_query($query);
if ($row = mysql_fetch_array($result)){

//controlla se la password è corretta
if ($row["password"] == $password1){
...
...


Spero che questo codice sia solo una prova e non un programma da mettere in un ambiente di produzione. La password la tieni in chiaro (anche sul db mi pare di capire) e non controlli l'input contenuto in $user1, lasciando la strada aperta a potenziali sql injection.
Comunque se è solo una cosa fatta per prova va bene...

mannaix
13-07-2006, 16:18
Spero che questo codice sia solo una prova e non un programma da mettere in un ambiente di produzione.
.......
Comunque se è solo una cosa fatta per prova va bene...
E' una cosa fatta per prova ma purtroppo non so perchè non funziona...