- Home
- Categorie
- Coding e Sistemistica
- PHP
- Header che non funziona
-
Ciao Fantasmetto
Quell'errore indica che prima del pezzo di codice da te postato esistono altri output, anche un banalissimo <DOCTYPE...> per capirci.
Ricontrolla lo script per intero e vedi dove sta il problema, solitamente conviene inserire questi script in una pagina a se stante o metterli in cima a tutta la pagina.
Facci sapere se risolvi.
-
[...]
Ciao, lo script sta proprio all'inzio della pagina e non capisco quali possano essere gli altri output :-(. Mi è venuta in mente una cosa proprio ora, ditemi se potrebbe funzionare: se sostituisco sull action del form "<?php $_SERVER['PHP_SELF'] ?>" con il nome di un file esterno che contiene lo script che ho postato sopra si potrebbe risolvere il problema?
Oppure quali altre soluzioni sono prospettabili?
Grazie
-
Certo, come detto prima se vuoi puoi metterlo in un file a se stante ed eseguirlo per conto suo.
-
Perfetto, grazie.
-
Ho cantato vittoria troppo presto. Infatti ho appena verificato se il funzionamento è corretto e ancora risconto il solito messaggio di errore:
"Warning: Cannot modify header information - headers already sent by (output started at /home/user2608/public_html/connessione.php:3) in /home/user2608/public_html/Controllo_registrazione.php on line **34"
**Faccio velocemente il sunto della situazione:
Il form invia i dati al file esterno "Controllo_registrazione.php" il cui contenuto è:
[php]<?php
require('connessione.php');$nomeregistrato=$_POST['nome'];
$cognome=$_POST['cognome'];
$via=$_POST['via'];
$civico=$_POST['civico'];
$citta=$_POST['citta'];
$provincia=$_POST['provincia'];
$cap=$_POST['cap'];
$telefono=$_POST['telefono'];
$indregistrato=$_POST['email'];
$mit=$_POST['username'];
$pass=$_POST['password'];
$inserisci=mysql_query("INSERT INTO registrati VALUES('','$nomeregistrato','$cognome','$via','$civico','$citta','$provincia','$cap','$telefono','$indregistrato','$mit','$pass','1')");$tempo=getdate();
$anno=$tempo['year'];
$mese=$tempo['mon'];
$giorno=$tempo['mday'];
$ora=$tempo['hours'];
$minuti=$tempo['minutes'];
$secondi=$tempo['seconds'];$indirizzomail="info@xxxxx";
$oggettomail="Si è registrato un nuovo utente: $username";
$messaggio="Utente $username si è registrato $anno/$mese/$giorno alle $ora:$minuti:$secondi";
mail($indirizzomail, $oggettomail, $messaggio);$oggettoregistrato="Registrazione sul portale xxxxxxx avvenuta con successo";
$mailregistrato="Grazie $nomeregistrato, la tua registrazione sul portale xxxxxx è avvenuta con successo. Ecco i tuoi dati. Nome=$nomeregistrato, Username=$mit, Password=$pass. Per accedere direttamente alla tua area riservata esegui il login: xxxxxxx/Login.php";
mail($indregistrato, $oggettoregistrato, $mailregistrato);header("Location: Controllo_registrazione.php");
?>
[/php]
A questo punto non so veramente come poter risolvere il problema. Chi mi da un suggerimento?
-
Due domande:
- Cosa contiene il connessione.php oltre i dati di connessione?
- Dato che vuoi refreshare la stessa pagina, hai provato con header ("Refresh: 0;")??
-
Il contenuto di connessione.php è il seguente:
[php]<?php
$server="xxxxxxx";
$user="xxxxxxxx";
$pass="xxxxxxxxxxx";
$database="xxxxxxx";$connessione=mysql_connect("$server", "$user", "$pass") or die("impossibile la connessione con il server remoto". mysql_error());
mysql_select_db("xxxxxxxx");
?>[/php]Non voglio refreshare la stessa pagina ed ho commesso un errore con Ctrl-C ctrl-V :(. Header mi serve per reindirizzare l'utente appena registrato alla pagina di avvenuta registrazione.
Scusa per l'inesattezza nel riportare il codice nella precedenta mia risposta
-
Prova così e dicci se da errore:
[php]
<?php
ob_start();
require('connessione.php');$nomeregistrato=$_POST['nome'];
$cognome=$_POST['cognome'];
$via=$_POST['via'];
$civico=$_POST['civico'];
$citta=$_POST['citta'];
$provincia=$_POST['provincia'];
$cap=$_POST['cap'];
$telefono=$_POST['telefono'];
$indregistrato=$_POST['email'];
$mit=$_POST['username'];
$pass=$_POST['password'];
$inserisci=mysql_query("INSERT INTO registrati VALUES('','$nomeregistrato','$cognome','$via','$civico','$citta','$provincia','$cap','$telefono','$indregistrato','$mit','$pass','1')");$tempo=getdate();
$anno=$tempo['year'];
$mese=$tempo['mon'];
$giorno=$tempo['mday'];
$ora=$tempo['hours'];
$minuti=$tempo['minutes'];
$secondi=$tempo['seconds'];$indirizzomail="info@xxxxx";
$oggettomail="Si è registrato un nuovo utente: $username";
$messaggio="Utente $username si è registrato $anno/$mese/$giorno alle $ora:$minuti:$secondi";
mail($indirizzomail, $oggettomail, $messaggio);$oggettoregistrato="Registrazione sul portale xxxxxxx avvenuta con successo";
$mailregistrato="Grazie $nomeregistrato, la tua registrazione sul portale xxxxxx è avvenuta con successo. Ecco i tuoi dati. Nome=$nomeregistrato, Username=$mit, Password=$pass. Per accedere direttamente alla tua area riservata esegui il login: xxxxxxx/Login.php";
mail($indregistrato, $oggettoregistrato, $mailregistrato);header("Location: Controllo_registrazione.php");
ob_end_flush();
?>[/php]
-
Grazie ilnetsurfer, adesso funziona tutto correttamente. Di fatto, cosa cambia inserendo sul codice le due righe che mi hai suggerito? E' proprio vero: non si finisce mai di imparare...
Grazie ancora
-
Leggi questo mini-tutorial ...Guarda che si potrebbe anche usare javascript