Newsgroup: it.comp.www.php
Titolo: problema con script, ma perchè??

Ciao ragazzi, sono nuovo qui.. spero di trovare una soluzione al mio
problema perchè non so più dove sbattere la testa.. allora, io ho fatto uno
script in php per gestire il mio sito... il problema è che sul vecchio
hosting (Aruba) tutto andava liscio ora che sono andato su hostingplan non
va più nienteeee mi dà un sacco di errori.. :-(
per esempio: andate su 
http://www.trainsim-italia.net
vedete l'errore che dà??? vi posto il codice php di quella pagina:
<?php
 ob_start();
 include ("gestione/connect.php");
 $sql="SELECT * FROM gest_stato";
 $result= mysql_query($sql);
 $row = mysql_fetch_array($result);
 if ($row['stato'] == "on")
 {
  header("Location: home.php");
  exit;
 }
 else
 {
  header("Location: incost.php");
  exit;
 }
?>
il codicr mi dà un errore alla linea in cui c'è "header("location:
incost.php");"
eppure ha sempre funzionatooo.. dov'è l'errore? vi prego di aiutarmi. Grazie
1000
Se volete dare un occhiata alle impostazioni del php sull'hosting corrente e
su aruba andate a questi link:
su aruba
http://lnx.trainsim-italia.com/prova.php
su hostingplan
http://www.trainsim-italia.net/prova.php
vi prego.. help me!

incost.php");"
Stai cercando di inserire un header a meta' pagina.
Gli header devono essere inviati prima di qualunque altro output.

 Gli header devono essere inviati prima di qualunque >altro output.
Ma se fosse cosě perchč prima funzionava e ora no? E poi mi hanno detto di
mettere all'inizio ob_start(); che cosě l'header va cmq.. e invece non
vaaa!!
Cmq ripeto, prima andava.. quindi perchč ora dovrebbe darmi problemi?


Perche' prima andasse non saprei dirti. Di sicuro c'e' che ogni header
deve essere inviata prima di qualunque altro output, quindi se quel
pezzo di codice non e' all'inizio della pagina, non funziona.

 pezzo di codice non e' all'inizio della pagina, non >funziona.
ok, come posso aggirare il problema? (la posizione deve rimanere quella del
codice)

 pezzo di codice non e' all'inizio della pagina, non funziona.
In effetti dovrebbe andargli perchè non produce output prima dell'header..
almeno in condizioni normali (a meno che ci sia qualcosa in
quell'include...ma suppongo che serva solo per connettersi e selezionare il
db).
Probabilmente c'è un messaggio di errore che produce output e come tale
impalla l'invio dell'header... (metti che fallisce la connessione al db.. lo
script te lo dice.. e quello è output)
Mettere error_reporting(E_ALL); nella prima riga dello script.. e fare il
controllo degli errori sulla query... $result= mysql_query($sql) or
die(mysql_error());
ob_start() non dovrebbe servirti..

codice)
Dipende, cosa deve fare esattamente la pagina?



un sospetto....  il tuo file.php inizia subito con <?php   oppure
magari hai una riga vuota prima...
idem la cosa che includi... che e'? cosa fa?
------------------------------------------------
Cesare Fontana
http://www.nexisonline.it/
------------------------------------------------

In effetti dovrebbe andargli perchč non produce output prima dell'header..
Quel pezzo di codice non produce output, il problema e' che - a vedere
il sito - c'e' un bel po' di html prima.

 il sito - c'e' un bel po' di html prima.
Vabbè.. non avevo guardato il sito prima...
Allora può farlo con javascript.. se proprio vuole lasciarlo a metà pagina
producendo prima output.. suppongo che voglia lasciare una pagina di intro
con "Accesso in corso al sito...".. sennò metterebbe quella parte di codice
che ha postato ad inizio pagina..

 il sito - c'e' un bel po' di html prima.
La cosa che mi incuriosiva di più di questo post era il fatto che prima
andasse...
Forse ho capito perchè.. Aruba imposta  output_buffering  nel php.ini a 4096
(te pareva se Aruba non fa qualcosa di strano... vabbè.. questioni personali
contro di loro) mentre di default normalmente questo è no value (secondo
hosting).

 ob_start() non dovrebbe servirti..
l'html che c'è prima non produce nessun output, adesso provo a vedere
mettendo il controllo degli errori di trovare dov'è l'errore, vi farò
sapere. Grazie 1000

> l'html che c'è prima non produce nessun output, adesso >provo a vedere
mettendo il controllo degli errori di >trovare dov'è l'errore, vi farò
sapere. Grazie 1000
Ho provato a mettere il controllo degli errori.. non mi dà nessun errore!
Tale e quale a prima.
Il file che includo serve solo per connettersi al db.
Non ci sono spazi da nessuna parte non capisco dov'è sto benedetto errore
:-(
Cosa posso fare per risolvere la faccenda?

sapere. Grazie 1000
Scusa, ma l'animazione flash, il logo e la scritta "Accesso in corso al
sito..." chi ce le mette?

 sito..." chi ce le mette?
E anche se si trattasse anche solo di uno spazio sarebbe output
 <?php
header ("Location: bla bla bla");
?>
Non va
<?php
header ("Location: bla bla bla");
?>
Va
Già che ci sono aggiungo che Location dovrebbe sempre avere un url assoluto
e non relativo come nello script che è stato postato. Questo non c'entra
niente con il problema in esame.. ma è comunque sempre bene tenerlo
presente.

Ho provato a fare una cosa del genere:
<html>
<head>
<?php
ob_start();
include ("connect.php");
session_start();
$sql= "SELECT * FROM gest_auth WHERE user = '".$_SESSION['user']."' AND pass
= '".$_SESSION['pass']."'";
$result = mysql_query($sql) or die("Invalid query");
$num_rows = mysql_num_rows($result);
if ($num_rows != 1 )
{
 header("Location:../index.php");
 exit();
}
else if ($num_rows = 1)
{
}
mysql_query("INSERT INTO ip_access (ip, time)
VALUES('$_SERVER[REMOTE_ADDR]', '" . date("dmyHi", time()) . "')");
?>
(non è lo stesso codice di prima) non va lo stesso!!! Mi dà l'errore e dice
che c'è già stato un output sulla linea 3 (quella "<?php") ma in quella
linea e nelle precedenti non ci sono spazi nè righe vuote.. quale può essere
il motivo??

<?php
[...]
Devi togliere <html> e <head>.
Quando si dice che prima di header() non ci deve essere niente, si
intende *niente*.

ok ora funziona tutto, avrei una domanda:
se io voglio fare uno script per uploadare dei file, è possibile che i file
possano essere uploadati su un server diverso da quello dove si trova lo
script? se si come bisogna procedere? io ho provato a dargli il link diretto
al server dove dovrebbe uploadare i file ma mi dice "controllare i permessi
della cartella" (ho impostato io questa frase se non può caricare il file)

script?
No.

 script? se si come bisogna procedere?
Volendo lo fai.. fai l'upload sul server dove risiede lo script e tramite le
funzioni ftp di php lo giri sull'altro server.
Sempre che tu abbia accesso ftp all'altro server e che il tuo hosting abbia
un php con ftp abilitato. Volendo anche curl al posto di ftp.
http://it.php.net/manual/it/ref.ftp.php
http://it.php.net/manual/it/features.file-upload.php
 (meglio leggerlo in
inglese che in italiano è poco aggiornato)
http://it.php.net/manual/it/ref.curl.php