View Full Version : php
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. :)
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
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 .. ?>.
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!
i "die" sono praticamente output, per sicurezza comunque metti il sessio start prima di tutto, come prima riga!
i "die" sono praticamente outputSì, ma se vengono eseguiti, lo script termina lì.
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:
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.
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... :(
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...
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...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.