problemi con il redirect

  • Creatore Discussione Creatore Discussione Samuel
  • Data di inizio Data di inizio

Samuel

Nuovo Utente
5 Mag 2007
1
0
0
Ho una pagina che fa una login, controllo a db user e pwd e se sono giuste l'utente viene rediretto alla pagina corretta...o così dovrebbe essere! Non funziona la redirect, ma non capisco come mai, visto che in altre pagine funziona!

Posto il codice :

<?php include "script/conn_open.php";?>
<?php include "script/globals.php";?>
<?
// Prendo il tipo utente
$id_utente = $_POST["rbTipoUtente"];
if(strcmp($id_utente,"1") == 0)
{
$tabella = "UTENTI";
$id_campo = "id_utente";
$redirect = "utenti/index.php";
}
if(strcmp($id_utente,"2") == 0)
{
$tabella = "OPERATORI";
$id_campo = "id_operatore";
$redirect = "operatori/index.php";
}

// Prendo username e password
$username = $_POST["txUsername"];
$pwd = $_POST["txPwd"];

/*
Cerco l'utente nella tabella corrispondente al tipo utente
*/
$QUERY_LOGIN = "SELECT ".$id_campo.",username,pwd FROM ".$tabella;
$QUERY_LOGIN = $QUERY_LOGIN." WHERE username = '$username' AND pwd = '$pwd' ";
$rs_login = mysql_query($QUERY_LOGIN) or die("QUERY_LOGIN non riuscita: " . mysql_error());
$NUM_LOGIN = mysql_num_rows($rs_login);

// Controllo se ci sono risultati
if($NUM_LOGIN == 0)
{
// Nessun utente riconosciuto
print("Nessun utente<br>");
header("Location: login.php?err=1");
print("Redirezione<br>");
}
else
{
print("starto la sessioine<br>");
// Utente riconosiuto, faccio partire la sessione
session_start();
$_SESSION["id_tipo_utente"] = $id_utente;
$_SESSION["id_login"] = mysql_result($rs_login,0,$id_campo);
$_SESSION["username"] = mysql_result($rs_login,0,"username");
print("Variabili settate<br>: ".$_SESSION["id_tipo_utente"]);

// Scrivo i Cookie
//setcookie ("username", mysql_result($rs_login,0,"username") ,time()+2592000); // Dura 1 mese
//ssetcookie ("id_tipo_utente", $id_utente ,time()+2592000); // Dura 1 mese

// Ridirigo l'utente alla sua pagina rivata
header("Location: operatori/index.php");
print("redirezione effettuata<br>");

}
?>

Faccio persente che tutti i print(..) mostra a video i loro contenuti, quindi query e if funzionano correttamente!

Non so + cosa guardare!!

Grazie in anticipo ;)
Samuel
 
Ola

Ciao Ciao Ciao...

domandone...hai provato a togliere i print?

sai quando fau un redirect HTTP con la funzionae Location, non devono esserci né caratteri né spazi bianchi prima di esso...

esempio

<?
# va in errore...con una cosa headers already sent in blablabla
print 'Ciao';
header("Location: operatori/index.php");
?>

mentre

<?
# va in errore...con una cosa headers already sent in blablabla
#print 'Ciao';
header("Location: operatori/index.php");
?>


funziona correttamente...

prova e se non va ancora posta l'errore che ti viene stampato.
Saluti
 
Ciao raga cerco qualcuno ke mi possa aiutare a risolvere gli errori di questo script:

<?php $login = $_GET['login'];
$passwd = $_GET['passwd'];
//Connessione a database
$connessione = mysql_connect("localhost", "root", "");
//Seleziono il database
mysql_select_db("escursioni");
$query = "SELECT * FROM autenticazione WHERE login LIKE '$login' AND password LIKE '$passwd'";
$risultato = mysql_query($query);
if (mysql_num_rows($risultato)==1)
header("Location: autenticazioneRiuscita.html");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> Pagina di ingresso </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
</body>
</html>
dove mi dà il seguente errore:
Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\sitostage\index.php:2) in c:\programmi\easyphp1-8\www\sitostage\index.php on line 11
Grazie a chi vorrà aiutarmi e un saluto a tutti
Pierpaolo
 
Ciao raga cerco qualcuno ke mi possa aiutare a risolvere gli errori di questo script:

<?php $login = $_GET['login'];
$passwd = $_GET['passwd'];
//Connessione a database
$connessione = mysql_connect("localhost", "root", "");
//Seleziono il database
mysql_select_db("escursioni");
$query = "SELECT * FROM autenticazione WHERE login LIKE '$login' AND password LIKE '$passwd'";
$risultato = mysql_query($query);
if (mysql_num_rows($risultato)==1)
{
header("Location: autenticazioneRiuscita.html");
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> Pagina di ingresso </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
</body>
</html>
dove mi dà il seguente errore:
Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\sitostage\index.php:2) in c:\programmi\easyphp1-8\www\sitostage\index.php on line 11
Grazie a chi vorrà aiutarmi e un saluto a tutti
Pierpaolo

A parte che ci mancano le parentesi graffe dell'if...se il tuo problema è fare una redirect usa javascript e scrivi al posto della parte in rosso:
Codice:
[COLOR="red"]
echo"<script type=text/javascript>";
echo"location.href='autenticazioneRiuscita.html';";
echo"</script>";
[/COLOR]
Anche a me da quell'errore easyphp e allora uso javascript.
Ciauz:)
 
beh

vediamo i osono sempre per testare gli script online...perché in locale qualcosa può sempre saltare a causa di piccole configurazioni errate...


cmq dall'esempio non mi pare che ci siano errori...
aggiungi le parentesi e metti dopo header("Location: blabla");

un bel
return;

così mentre non fa il redirect fermi la visualizzazione della pagina...anche se mi apre strano che possa verificarsi tale errore...

se non dovesse fungere ancora caricalo online e testalo lì...se neanche va...MISTEROOOOO!!!

ciau
 

Discussioni simili