Warnin maledetto che non riesco a comprendere.

neo996sps

Utente Attivo
31 Mag 2007
247
0
0
Trentino
Ciao a tutti,

innanzitutto buon anno nuovo. Ho un problema con uno script PHP che ho creato. Praticamente non esegue il redirect e mi tira fuori il solito warning e bla bla bla.

Ovviamente ho rivisto tutto il codice ma non c'è stato nulla da fare. Ecco il codice:

PHP:
$intestatario = $_POST["intestatario"];
  $targa = $_POST["targa"];
  $datainizio = $_POST["datainizio"];
  $datafine = $_POST["datafine"];
  list($dd1, $mm1, $yyyy1) = explode('/', $datainizio);
  list($dd2, $mm2, $yyyy2) = explode('/', $datafine);
  $timein = mktime(0,0,0,$mm1, $dd1, $yyyy1);
  $timeout = mktime(0,0,0,$mm2, $dd2, $yyyy2);
  $flo= mysql_query("SELECT * FROM flotta WHERE targa = ". $_POST["targa"]);
  while ($xtarga = mysql_fetch_array($flo))
  {
    $idcar = $xtarga["id"];
  }  

  mysql_query ("INSERT INTO prenotazioni (id, intestazione, datain, dataout, id_flotta, tiponoleggio, stato)
                VALUES (NULL, '".$intestatario."','".$timein."', '".$timeout."', '".$idcar."', 'X', '1')") or die; 
	
  header ("LOCATION: ./../../../index.php");

Da notare che non ho echo, print o qualsivoglia tipo di output. Come lo risolvo? Scusate se ho scritto in maniera così spiccia ma sono piuttosto imbufalito per questo maledetto errore.
 
Se non ti esegue il redirect presumo che ci sia un problema nella query - potresti essere più specifico sul tipo di errore?
Cmq a prima vista penso che il problema sia dato dal fatto che non hai effettuato nessun controllo sui dati ricevuti, quindi inserendo caratteri strani potrebbe darti un errore:

prova per ogni $_POST a fare questo:

PHP:
$dato_nuovo=stripslashes($_POST['dato']);//se li prelevi da db
$dato_nuovo=htmlspecialchars($dato_nuovo)

e vedi se funziona.
 
Ultima modifica:
Ciao,

ho provato con il tuo suggerimento ma non cambia nulla. Questo che riporto è il warning esatto:

Codice:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/PG20/index.php:9) in /var/www/PG20/script/dynamic/contratti/save.php on line 20

e questo è il codice con le variabili minime per l'uso della query:

PHP:
  $datainizio = $_POST["datainizio"];
  $datafine = $_POST["datafine"];
  list($dd1, $mm1, $yyyy1) = explode('/', $datainizio);
  list($dd2, $mm2, $yyyy2) = explode('/', $datafine);
  $timein = mktime(0,0,0,$mm1, $dd1, $yyyy1);
  $timeout = mktime(0,0,0,$mm2, $dd2, $yyyy2);
  $flo= mysql_query("SELECT * FROM flotta WHERE targa = ". $_POST["targa"]);
  while ($xtarga = mysql_fetch_array($flo))
  {
    $idcar = $xtarga["id"];
  }  

  mysql_query ("INSERT INTO prenotazioni (id, intestazione, datain, dataout, id_flotta, tiponoleggio, stato)
                VALUES (NULL, '".$_POST["intestatario"]."','".$timein."', '".$timeout."', '".$idcar."', 'X', '1')") or die; 
	
  header ("LOCATION: ./../../../index.php");
 
<? session_start(); ?> deve stare sulla prima riga anche un ritorno potrebbe causare quel problema.
Posta la pagina completa.
Un'altra cosa: invece di LOCATIOn metti Location
 
Ultima modifica:
Scusami se rompo ma io non ho nessun session start in questo codice. Ho provato anche ad inserirlo ma i warning si moltiplicano.
 
ciao
sei sicuro che prima dell'header non ci sia nemmeno uno spazio?
eventualmente prova a mettere

PHP:
<?php
ob_start();
//tutto il tuo codice
ob_end_flush();
?>
 
niente di fatto. Continua a darmi sto cesso di warning. Ecco lo script rivisto e senza spazzi insereriti:

PHP:
<?php
ob_start(); 
$datainizio = $_POST["datainizio"];
$datafine = $_POST["datafine"];
list($dd1, $mm1, $yyyy1) = explode('/', $datainizio);
list($dd2, $mm2, $yyyy2) = explode('/', $datafine);
$timein = mktime(0,0,0,$mm1, $dd1, $yyyy1);
$timeout = mktime(0,0,0,$mm2, $dd2, $yyyy2);
$flo= mysql_query("SELECT * FROM flotta WHERE targa = ". $_POST["targa"]);
while ($xtarga = mysql_fetch_array($flo))
{
$idcar = $xtarga["id"];
}  
mysql_query ("INSERT INTO prenotazioni (id, intestazione, datain, dataout, id_flotta, tiponoleggio, stato) VALUES (NULL, '".$_POST["intestatario"]."','".$timein."', '".$timeout."', '".$idcar."', 'X', '1')") or die; 
header ("Location: ./../../../index.php");
ob_end_flush();
?>
 
Scusami ma penso che Borgo intende questo :

invece di

PHP:
header ("Location: ./../../../index.php");
metti
PHP:
header("Location: ./../../../index.php");
 
ciao
io intendevo come ha scitto neo, ma sorge un dubbio:
visto che usi un db, non avrai prima un include o require con il file di config? gli include o require sono considerati out html
 

Discussioni simili