View Full Version : [PHP] Problema reindirizamento pagina
Devo far si che dopo la registrazione del account venga visualizzato un messaggio e dopo X secondi (in questo caso 3) l'utente venga reindirizzato alla pagina profilo.php.
Ho fatto nel seguente modo:
<?php
...
...
echo "Il tuo account è stato attivato!";
sleep(3);
header('Location: ' . $url . 'profilo.php');
?>
Il problema è che l'echo non viene visualizzato, qualcuno sa dirmi perché. Grazie
In alternativa ho trovato anche questo codice, ho provato ad inserirlo negli echo ma mi da errore, credo faccia casino con le virgolette del echo. Voi che dite?
<meta http-equiv="Refresh" content="3;URL=sito.it">
Devo far si che dopo la registrazione del account venga visualizzato un messaggio e dopo X secondi (in questo caso 3) l'utente venga reindirizzato alla pagina profilo.php.
Ho fatto nel seguente modo:
<?php
...
...
echo "Il tuo account è stato attivato!";
sleep(3);
header('Location: ' . $url . 'profilo.php');
?>
Il problema è che l'echo non viene visualizzato, qualcuno sa dirmi perché. Grazie
Probabilmente c'è un errore prima.
Comunque sappi che l'header non lo puoi modificare dopo che hai stampato qualcosa.
Comunque sappi che l'header non lo puoi modificare dopo che hai stampato qualcosa.
Non ho capito...
Comunque questo è il file completo:
<?php
include("connessioneDB.php");
// Controllo che la variabile "codice" ricevuta tramite GET abbia un valore
if(!IsSet($_GET['codice'])){ echo "ERRORE: Codice di attivazione non fornito!";}
else
{
$codice = $_GET['codice'];
$check = mysql_query("SELECT * FROM utenti WHERE codice='".$codice."'");
$appo = mysql_num_rows($check);
if ($appo != 1) { echo "Non corrisponde nessun account al codice di attivazione usato"; }
else
{
$curruser=mysql_fetch_array($check);
if($curruser['conf']=='1')
{
echo "Il tuo account è già stato attivato!";
echo "Tra pochi istanti verrai reindirizzato alla home.";
}
else
{
// Seleziono username e password degli utenti con il suddetto codice
$username = mysql_query("SELECT username FROM utenti WHERE codice='$codice'");
$password = mysql_query("SELECT password FROM utenti WHERE codice='$codice'");
// Creo una sessione con i selezionati dal DB
session_start ();
$_SESSION['username'] = $username;
$_SESSION['pass'] = $password;
// Attivo l'account settando il campo conf = 1
$activate = mysql_query("UPDATE utenti SET conf='1' WHERE codice='".$codice."'");
echo "Il tuo account è stato attivato con successo!";
echo "Tra pochi istanti verrai reindirizzato alla pagina del tuo profilo.";
}
}
}
sleep(3);
header('Location: ' . $url . 'profilo.php');
?>
Comunque questo è il file completo:
<?php
include("connessioneDB.php");
// Controllo che la variabile "codice" ricevuta tramite GET abbia un valore
if(!IsSet($_GET['codice'])){ echo "ERRORE: Codice di attivazione non fornito!";}
else
{
$codice = $_GET['codice'];
$check = mysql_query("SELECT * FROM utenti WHERE codice='".$codice."'");
$appo = mysql_num_rows($check);
if ($appo != 1) { echo "Non corrisponde nessun account al codice di attivazione usato"; }
else
{
$curruser=mysql_fetch_array($check);
if($curruser['conf']=='1')
{
echo "Il tuo account è già stato attivato!";
echo "Tra pochi istanti verrai reindirizzato alla home.";
}
else
{
// Seleziono username e password degli utenti con il suddetto codice
$username = mysql_query("SELECT username FROM utenti WHERE codice='$codice'");
$password = mysql_query("SELECT password FROM utenti WHERE codice='$codice'");
// Creo una sessione con i selezionati dal DB
session_start ();
$_SESSION['username'] = $username;
$_SESSION['pass'] = $password;
// Attivo l'account settando il campo conf = 1
$activate = mysql_query("UPDATE utenti SET conf='1' WHERE codice='".$codice."'");
echo "Il tuo account è stato attivato con successo!";
echo "Tra pochi istanti verrai reindirizzato alla pagina del tuo profilo.";
}
}
}
sleep(3);
header('Location: ' . $url . 'profilo.php');
?>
Se fai un echo non puoi poi modificare l'header con
header('Location: ' . $url . 'profilo.php');
Non c'è un altro modo per modificarlo?
Devi fare il reindirizzamento in altro modo, o in html
<META HTTP-EQUIV="Refresh" CONTENT="secondi; URL=http://url...">
o in javascript
<script type="text/javascript">
window.location.href="http://url...";
</script
Ovviamente in entrambi i casi la roba che butti fuori deve essere una pagina web.
Grazie sono riuscito a risolvere usanto META HTTP-EQUIV
Ho un'altro problema, il codice scritto qui sotto non funziona.
Ho provato ha visualizzare con un echo il contenuto delle variabili $username e $password e mi visualizza:
- Resource id #6
- Resource id #7
Quindi deve esserci qualche errore nelle select, però non capisco dove...
// Seleziono username e password degli utenti con il suddetto codice
$username = mysql_query("SELECT username FROM utenti WHERE codice='".$codice."'");
$password = mysql_query("SELECT password FROM utenti WHERE codice='".$codice."'");
// Creo una sessione con i selezionati dal DB
session_start ();
$_SESSION['username'] = $username;
$_SESSION['pass'] = $password;
// Attivo l'account settando il campo conf = 1
$activate = mysql_query("UPDATE utenti SET conf='1' WHERE codice='".$codice."'");
// Memorizzo la data di login dell'utente nel campo data_ultima
mysql_query("UPDATE utenti SET data_ultima = NOW() WHERE (username = '$username')") or die (mysql_error());
echo "Il tuo account è stato attivato con successo!";
echo "Tra pochi istanti verrai reindirizzato alla pagina del tuo profilo.
mysql_query restituisce un oggetto di tipo tabella, non una stringa. Per ottenere l'informazione che cerchi da questa tabella devi usare i metodi per "scansionarla".
ti da quei codici di errore perchè le variabili $username e $password non contengono una stringa come ti aspetti ma un array.
il risultato di una query in php è generalmente un array multidimensionale (in questo caso sono 2 array monodimensionali), ad ogni modo, per potere leggere i valori restituiti dalla query devi utilizzare la funzione mysql_fetch_array()
$username = mysql_query("SELECT username FROM utenti WHERE codice='".$codice."'");
$username=mysql_fetch_array($username);
gia che ci sono ti consiglio di non memorizzare la password in una variabile di sessione, oltre che pericoloso non è nemmeno utile, se ti serve per controllare che quella inserita al login sia quella corretta ti posto il metodo che uso io
if(IsSet($_POST['posted_username']) && IsSet($_POST['posted_password'])){
$check=mysql_query("SELECT * FROM users WHERE username = '".$_POST['posted_username']."'")or die(mysql_error());
$info=mysql_fetch_array($check);
if($info['username']==($_POST['posted_username']) && $info['password']==md5($_POST['posted_password'])){
$_SESSION['user']=$_POST['posted_username'];
}
}
se qualcuno nota errori o vuole darmi dei consigli siete i benvenuti
Grazie per l'aiuto.
E se invece di memorizzare la pass memorizzassi l'MD5 della pass?
Ho provato a correggere le query nel modo da te consigliato però non funziona ancora, adesso se visualizzo il contenuto delle variabili mi visualizza - - Array
- Array
Il codice è questo:
// Seleziono username e password degli utenti con il suddetto codice
$query1 = mysql_query("SELECT username FROM utenti WHERE codice='".$codice."'");
$username = mysql_fetch_array($query1);
$query2 = mysql_query("SELECT password FROM utenti WHERE codice='".$codice."'");
$password = mysql_fetch_array($query2);
Grazie per l'aiuto.
E se invece di memorizzare la pass memorizzassi l'MD5 della pass?
ma a che pro? voglio dire, una volta che verifichi l'esatto inserimento al momento del login poi sei a posto
Ho provato a correggere le query nel modo da te consigliato però non funziona ancora, adesso se visualizzo il contenuto delle variabili mi visualizza - - Array
- Array
Il codice è questo:
// Seleziono username e password degli utenti con il suddetto codice
$query1 = mysql_query("SELECT username FROM utenti WHERE codice='".$codice."'");
$username = mysql_fetch_array($query1);
$query2 = mysql_query("SELECT password FROM utenti WHERE codice='".$codice."'");
$password = mysql_fetch_array($query2);
si, scusa, una piccola distrazione
$query1 = mysql_query("SELECT username FROM utenti WHERE codice='".$codice."'");
$query1 = mysql_fetch_array($query1);
$username = $query[0];
in poche parolecon la prima esegui la query, con la seconda prendi la prima riga (l'unica) e con la terza istruzione prendi il nome utente
si, scusa, una piccola distrazione
$query1 = mysql_query("SELECT username FROM utenti WHERE codice='".$codice."'");
$query1 = mysql_fetch_array($query1);
$username = $query[0];
in poche parolecon la prima esegui la query, con la seconda prendi la prima riga (l'unica) e con la terza istruzione prendi il nome utente
Perfetto funziona!
ma a che pro? voglio dire, una volta che verifichi l'esatto inserimento al momento del login poi sei a posto
Hai ragione, quindi alla fine per la sessione ho fatto in questo modo:
session_start ();
$_SESSION['username'] = $username;
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.